mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/VisualEditor
synced 2024-11-29 16:44:51 +00:00
f49d80d27a
Graphics (*.ai, *.png, *.svg) * Took a pass on all images making them sharper and clearer * Renamed bold and italic to bold-b and bold-a * Added bold-f, italic-k, bold-a and italic-a * Reorganized illustrator file ve.ui.Icons-raster.css, ve.ui.Icons-vector.css * Added classes for new icons * Appended bullet, number, indent and outdent class names with "list" ve.ui.*ButtonTool.js * Added definitions for static icon property * For bold and italic, added i18n style definitions ve.ui.ButtonTool.js * Switched from re-using the name property (which is intended to be the symbolic name of the tool used when registering with the tool factory) to using an static icon property for defining the icon Change-Id: I43e7c35835a1e6dfb06f2a70226fac0d395008e8
171 lines
3.5 KiB
JavaScript
171 lines
3.5 KiB
JavaScript
/*!
|
|
* VisualEditor UserInterface ButtonTool class.
|
|
*
|
|
* @copyright 2011-2012 VisualEditor Team and others; see AUTHORS.txt
|
|
* @license The MIT License (MIT); see LICENSE.txt
|
|
*/
|
|
|
|
/**
|
|
* UserInterface button tool.
|
|
*
|
|
* @abstract
|
|
* @class
|
|
* @extends ve.ui.Tool
|
|
* @constructor
|
|
* @param {ve.ui.Toolbar} toolbar
|
|
*/
|
|
ve.ui.ButtonTool = function VeUiButtonTool( toolbar ) {
|
|
// Parent constructor
|
|
ve.ui.Tool.call( this, toolbar );
|
|
|
|
// Properties
|
|
this.active = false;
|
|
this.disabled = false;
|
|
|
|
// Events
|
|
this.$.on( {
|
|
'mousedown': ve.bind( this.onMouseDown, this ),
|
|
'mouseup': ve.bind( this.onMouseUp, this )
|
|
} );
|
|
|
|
// Initialization
|
|
this.$.addClass( 've-ui-buttonTool' );
|
|
var name,
|
|
icon = this.constructor.static.icon,
|
|
lang = ve.init.platform.getUserLanguage();
|
|
if ( icon ) {
|
|
if ( ve.isPlainObject( icon ) ) {
|
|
name = lang in icon ? icon[lang] : icon['default'];
|
|
} else {
|
|
name = icon;
|
|
}
|
|
this.$.addClass( 've-ui-icon-' + name );
|
|
}
|
|
};
|
|
|
|
/* Inheritance */
|
|
|
|
ve.inheritClass( ve.ui.ButtonTool, ve.ui.Tool );
|
|
|
|
/* Static Properties */
|
|
|
|
/**
|
|
* Symbolic name of icon.
|
|
*
|
|
* Value should be the unique portion of an icon CSS class name, such as 'up' for 've-ui-icon-up'.
|
|
*
|
|
* For i18n purposes, this property can be an object containing a `default` icon name property and
|
|
* additional icon names keyed by language code.
|
|
*
|
|
* Example of i18n icon definition:
|
|
* { 'default': 'bold-a', 'en': 'bold-b', 'de': 'bold-f' }
|
|
*
|
|
* @abstract
|
|
* @static
|
|
* @property
|
|
* @type {string|Object}
|
|
*/
|
|
ve.ui.Tool.static.icon = '';
|
|
|
|
/* Methods */
|
|
|
|
/**
|
|
* Handle the mouse button being pressed.
|
|
*
|
|
* @method
|
|
* @param {jQuery.Event} e Normalized event
|
|
*/
|
|
ve.ui.ButtonTool.prototype.onMouseDown = function ( e ) {
|
|
if ( e.which === 1 ) {
|
|
e.preventDefault();
|
|
return false;
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Handle the mouse button being released.
|
|
*
|
|
* @method
|
|
* @param {jQuery.Event} e Normalized event
|
|
*/
|
|
ve.ui.ButtonTool.prototype.onMouseUp = function ( e ) {
|
|
if ( e.which === 1 && !this.disabled ) {
|
|
return this.onClick( e );
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Handle the button being clicked.
|
|
*
|
|
* This is an abstract method that must be overridden in a concrete subclass.
|
|
*
|
|
* @abstract
|
|
* @method
|
|
*/
|
|
ve.ui.ButtonTool.prototype.onClick = function () {
|
|
throw new Error(
|
|
've.ui.ButtonTool.onClick not implemented in this subclass: ' + this.constructor
|
|
);
|
|
};
|
|
|
|
/**
|
|
* Handle the toolbar state being cleared.
|
|
*
|
|
* @method
|
|
*/
|
|
ve.ui.ButtonTool.prototype.onClearState = function () {
|
|
this.setActive( false );
|
|
};
|
|
|
|
/**
|
|
* Check if the button is active.
|
|
*
|
|
* @method
|
|
* @param {boolean} Button is active
|
|
*/
|
|
ve.ui.ButtonTool.prototype.isActive = function () {
|
|
return this.active;
|
|
};
|
|
|
|
/**
|
|
* Make the button appear active or inactive.
|
|
*
|
|
* @method
|
|
* @param {boolean} state Make button appear active
|
|
*/
|
|
ve.ui.ButtonTool.prototype.setActive = function ( state ) {
|
|
this.active = !!state;
|
|
if ( this.active ) {
|
|
this.$.addClass( 've-ui-buttonTool-active' );
|
|
} else {
|
|
this.$.removeClass( 've-ui-buttonTool-active' );
|
|
}
|
|
};
|
|
|
|
/**
|
|
* Check if the button is disabled.
|
|
*
|
|
* @method
|
|
* @param {boolean} Button is disabled
|
|
*/
|
|
ve.ui.ButtonTool.prototype.isDisabled = function () {
|
|
return this.disabled;
|
|
};
|
|
|
|
/**
|
|
* Set the disabled state of the button.
|
|
*
|
|
* This will change the button's appearance and prevent the {onClick} from being called.
|
|
*
|
|
* @method
|
|
* @param {boolean} state Disable button
|
|
*/
|
|
ve.ui.ButtonTool.prototype.setDisabled = function ( state ) {
|
|
this.disabled = !!state;
|
|
if ( this.disabled ) {
|
|
this.$.addClass( 've-ui-buttonTool-disabled' );
|
|
} else {
|
|
this.$.removeClass( 've-ui-buttonTool-disabled' );
|
|
}
|
|
};
|