mediawiki-extensions-Visual.../modules/ve/ui/tools/buttons/ve.ui.ClearButtonTool.js
James D. Forrester bc3cc9bbdc Add keyboard shortcut for 'clear' button
Now Ctrl+\ (Cmd+\ on Mac) will trigger the 'clear annotations' button
on the current context. Ideally we'd also bond to the 'clear' keyboard
button (ASCII 12) but it does not seem possible to do that yet.

Bug: 51507
Change-Id: I300ec1ffa237e51418ec429be39001f820f053ae
2013-07-30 00:14:17 +00:00

69 lines
1.7 KiB
JavaScript

/*!
* VisualEditor UserInterface ClearButtonTool class.
*
* @copyright 2011-2013 VisualEditor Team and others; see AUTHORS.txt
* @license The MIT License (MIT); see LICENSE.txt
*/
/**
* UserInterface clear button tool.
*
* @class
* @extends ve.ui.ButtonTool
* @constructor
* @param {ve.ui.Toolbar} toolbar
* @param {Object} [config] Config options
*/
ve.ui.ClearButtonTool = function VeUiClearButtonTool( toolbar, config ) {
// Parent constructor
ve.ui.ButtonTool.call( this, toolbar, config );
// Initialization
this.setDisabled( true );
};
/* Inheritance */
ve.inheritClass( ve.ui.ClearButtonTool, ve.ui.ButtonTool );
/* Static Properties */
ve.ui.ClearButtonTool.static.name = 'clear';
ve.ui.ClearButtonTool.static.icon = 'clear';
ve.ui.ClearButtonTool.static.titleMessage = 'visualeditor-clearbutton-tooltip';
/* Methods */
/**
* Handle the button being clicked.
*
* @method
*/
ve.ui.ClearButtonTool.prototype.onClick = function () {
this.toolbar.getSurface().execute( 'annotation', 'clearAll' );
};
/**
* Handle the toolbar state being updated.
*
* @method
* @param {ve.dm.Node[]} nodes List of nodes covered by the current selection
* @param {ve.dm.AnnotationSet} full Annotations that cover all of the current selection
* @param {ve.dm.AnnotationSet} partial Annotations that cover some or all of the current selection
*/
ve.ui.ClearButtonTool.prototype.onUpdateState = function ( nodes, full, partial ) {
this.setDisabled( partial.isEmpty() );
};
/* Registration */
ve.ui.toolFactory.register( 'clear', ve.ui.ClearButtonTool );
ve.ui.commandRegistry.register( 'clear', 'annotation', 'clearAll' );
ve.ui.triggerRegistry.register(
'clear', { 'mac': new ve.ui.Trigger( 'cmd+\\' ), 'pc': new ve.ui.Trigger( 'ctrl+\\' ) }
);