1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
/*!
* VisualEditor MediaWiki edit mode tool classes.
*
* @copyright 2011-2020 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
mw.libs.ve = mw.libs.ve || {};
/**
* MediaWiki edit mode tool.
*
* @class
* @abstract
* @extends OO.ui.Tool
* @constructor
* @param {OO.ui.ToolGroup} toolGroup
* @param {Object} [config] Config options
*/
mw.libs.ve.MWEditModeTool = function VeUiMWEditModeTool() {
// Parent constructor
mw.libs.ve.MWEditModeTool.super.apply( this, arguments );
this.modeAvailable = null;
};
/* Inheritance */
OO.inheritClass( mw.libs.ve.MWEditModeTool, OO.ui.Tool );
/* Static Properties */
mw.libs.ve.MWEditModeTool.static.editMode = null;
mw.libs.ve.MWEditModeTool.static.group = 'editMode';
mw.libs.ve.MWEditModeTool.static.autoAddToCatchall = false;
mw.libs.ve.MWEditModeTool.static.autoAddToGroup = false;
mw.libs.ve.MWEditModeTool.static.unavailableTooltip = null;
/* Methods */
/**
* Switch editors
*/
mw.libs.ve.MWEditModeTool.prototype.switch = function () {
this.toolbar.emit( 'switchEditor', this.constructor.static.editMode );
};
/**
* Get current edit mode
*
* @return {string} Current edit mode
*/
mw.libs.ve.MWEditModeTool.prototype.getMode = function () {
return 'source';
};
/**
* Check if edit mode is available
*
* @param {string} Edit mode
* @return {boolean} Edit mode is available
*/
mw.libs.ve.MWEditModeTool.prototype.isModeAvailable = function () {
return true;
};
/**
* @inheritdoc
*/
mw.libs.ve.MWEditModeTool.prototype.onSelect = function () {
if ( this.getMode() !== this.constructor.static.editMode ) {
this.switch();
}
this.setActive( this.getMode() === this.constructor.static.editMode );
};
/**
* @inheritdoc
*/
mw.libs.ve.MWEditModeTool.prototype.onUpdateState = function () {
var modeAvailable = this.isModeAvailable( this.constructor.static.editMode );
// Change title if state has changed
if ( this.modeAvailable !== modeAvailable ) {
this.$link.attr( 'title', modeAvailable ?
OO.ui.resolveMsg( this.constructor.static.title ) :
OO.ui.resolveMsg( this.constructor.static.unavailableTooltip )
);
this.setDisabled( !modeAvailable );
this.modeAvailable = modeAvailable;
}
this.setActive( this.getMode() === this.constructor.static.editMode );
};
/**
* MediaWiki edit mode source tool.
*
* @class
* @extends mw.libs.ve.MWEditModeTool
* @constructor
* @param {OO.ui.ToolGroup} toolGroup
* @param {Object} [config] Config options
*/
mw.libs.ve.MWEditModeSourceTool = function VeUiMWEditModeSourceTool() {
// Parent constructor
mw.libs.ve.MWEditModeSourceTool.super.apply( this, arguments );
};
OO.inheritClass( mw.libs.ve.MWEditModeSourceTool, mw.libs.ve.MWEditModeTool );
mw.libs.ve.MWEditModeSourceTool.static.editMode = 'source';
mw.libs.ve.MWEditModeSourceTool.static.name = 'editModeSource';
mw.libs.ve.MWEditModeSourceTool.static.icon = 'wikiText';
mw.libs.ve.MWEditModeSourceTool.static.title =
OO.ui.deferMsg( 'visualeditor-mweditmodesource-tool-current' );
mw.libs.ve.MWEditModeSourceTool.static.unavailableTooltip =
OO.ui.deferMsg( 'visualeditor-mweditmodesource-tool-unavailable' );
/**
* MediaWiki edit mode visual tool.
*
* @class
* @extends mw.libs.ve.MWEditModeTool
* @constructor
* @param {OO.ui.ToolGroup} toolGroup
* @param {Object} [config] Config options
*/
mw.libs.ve.MWEditModeVisualTool = function VeUiMWEditModeVisualTool() {
// Parent constructor
mw.libs.ve.MWEditModeVisualTool.super.apply( this, arguments );
};
OO.inheritClass( mw.libs.ve.MWEditModeVisualTool, mw.libs.ve.MWEditModeTool );
mw.libs.ve.MWEditModeVisualTool.static.editMode = 'visual';
mw.libs.ve.MWEditModeVisualTool.static.name = 'editModeVisual';
mw.libs.ve.MWEditModeVisualTool.static.icon = 'eye';
mw.libs.ve.MWEditModeVisualTool.static.title =
OO.ui.deferMsg( 'visualeditor-mweditmodeve-tool-current' );
mw.libs.ve.MWEditModeVisualTool.static.unavailableTooltip =
OO.ui.deferMsg( 'visualeditor-mweditmodeve-tool-unavailable' );
|