mediawiki-extensions-Visual.../modules/ve2/ui/tools/ve.ui.AnnotationButtonTool.js
Rob Moen 2439c0149a Created secondary method for getMatchingAnnotations
new static method looks for annotation in annotation object.
ve2 Cleanup on annotate method and surface model.
Partially revive UI tools by exchaning old method usage
for ve2 methods.

Change-Id: Id0ac58330292d76801bbcf1d71a919b493f8ab9e
2012-06-06 11:27:23 -07:00

89 lines
2.1 KiB
JavaScript

/**
* Creates an ve.ui.AnnotationButtonTool object.
*
* @class
* @constructor
* @extends {ve.ui.ButtonTool}
* @param {ve.ui.Toolbar} toolbar
* @param {String} name
* @param {Object} annotation
*/
ve.ui.AnnotationButtonTool = function( toolbar, name, title, data ) {
// Inheritance
ve.ui.ButtonTool.call( this, toolbar, name, title );
// Properties
this.annotation = data.annotation;
this.inspector = data.inspector;
this.active = false;
};
/* Methods */
ve.ui.AnnotationButtonTool.prototype.onClick = function() {
var surfaceView = this.toolbar.getSurfaceView(),
surfaceModel = surfaceView.model;
if ( this.inspector ) {
if( surfaceModel.getSelection() ) {
surfaceView.contextView.openInspector( this.inspector );
} else {
if ( this.active ) {
var documentModel = surfaceModel.getDocument(),
selection = surfaceModel.getSelection(),
range = documentModel.getAnnotatedRangeFromOffset(
selection.from, this.annotation
);
surfaceView.showSelection( range );
surfaceView.contextView.openInspector( this.inspector );
}
}
} else {
surfaceModel.annotate( this.active ? 'clear' : 'set', this.annotation );
}
};
ve.ui.AnnotationButtonTool.prototype.updateState = function( annotations, nodes ) {
if ( this.annotation in annotations ) {
this.$.addClass( 'es-toolbarButtonTool-down' );
this.active = true;
return;
}
this.$.removeClass( 'es-toolbarButtonTool-down' );
this.active = false;
};
/* Registration */
ve.ui.Tool.tools.bold = {
'constructor': ve.ui.AnnotationButtonTool,
'name': 'bold',
'title': 'Bold (ctrl/cmd + B)',
'data': {
'annotation': { 'type': 'textStyle/bold' }
}
};
ve.ui.Tool.tools.italic = {
'constructor': ve.ui.AnnotationButtonTool,
'name': 'italic',
'title': 'Italic (ctrl/cmd + I)',
'data': {
'annotation': { 'type': 'textStyle/italic' }
}
};
ve.ui.Tool.tools.link = {
'constructor': ve.ui.AnnotationButtonTool,
'name': 'link',
'title': 'Link (ctrl/cmd + K)',
'data': {
'annotation': { 'type': 'link/internal', 'data': { 'title': '' } },
'inspector': 'link'
}
};
/* Inheritance */
ve.extendClass( ve.ui.AnnotationButtonTool, ve.ui.ButtonTool );