%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/VisualEditor/lib/ve/src/ui/widgets/ |
| Current File : //www/varak.net/wiki.varak.net/extensions/VisualEditor/lib/ve/src/ui/widgets/ve.ui.TargetWidget.js |
/*!
* VisualEditor UserInterface TargetWidget class.
*
* @copyright 2011-2016 VisualEditor Team and others; see http://ve.mit-license.org
*/
/**
* Creates an ve.ui.TargetWidget object.
*
* @class
* @abstract
* @extends OO.ui.Widget
*
* @constructor
* @param {ve.dm.Document} doc Document model
* @param {Object} [config] Configuration options
* @cfg {Object[]} [tools] Toolbar configuration
* @cfg {string[]|null} [includeCommands] List of commands to include, null for all registered commands
* @cfg {string[]} [excludeCommands] List of commands to exclude
* @cfg {Object} [importRules] Import rules
* @cfg {string} [inDialog] The name of the dialog this surface widget is in
*/
ve.ui.TargetWidget = function VeUiTargetWidget( doc, config ) {
// Config initialization
config = config || {};
// Parent constructor
ve.ui.TargetWidget.super.call( this, config );
// Properties
this.commandRegistry = config.commandRegistry || ve.init.target.getSurface().commandRegistry;
this.sequenceRegistry = config.sequenceRegistry || ve.init.target.getSurface().sequenceRegistry;
this.dataTransferHandlerFactory = config.dataTransferHandlerFactory || ve.init.target.getSurface().dataTransferHandlerFactory;
// TODO: Override document/targetTriggerListener
this.surface = ve.init.target.createSurface( doc, {
inTargetWidget: true,
commandRegistry: this.commandRegistry,
sequenceRegistry: this.sequenceRegistry,
dataTransferHandlerFactory: this.dataTransferHandlerFactory,
includeCommands: config.includeCommands,
excludeCommands: config.excludeCommands,
importRules: config.importRules,
inDialog: config.inDialog
} );
// TODO: Use a TargetToolbar when trigger listeners are set here
this.toolbar = new ve.ui.Toolbar();
// Initialization
this.surface.$element.addClass( 've-ui-targetWidget-surface' );
this.toolbar.$element.addClass( 've-ui-targetWidget-toolbar' );
this.toolbar.$bar.append( this.surface.getToolbarDialogs().$element );
this.$element
.addClass( 've-ui-targetWidget' )
.append( this.toolbar.$element, this.surface.$element );
if ( config.tools ) {
this.toolbar.setup( config.tools, this.surface );
}
};
/* Inheritance */
OO.inheritClass( ve.ui.TargetWidget, OO.ui.Widget );
/* Methods */
/**
* Get surface.
*
* @method
* @return {ve.ui.Surface} Surface
*/
ve.ui.TargetWidget.prototype.getSurface = function () {
return this.surface;
};
/**
* Get toolbar.
*
* @method
* @return {OO.ui.Toolbar} Toolbar
*/
ve.ui.TargetWidget.prototype.getToolbar = function () {
return this.toolbar;
};
/**
* Get content data.
*
* @method
* @return {ve.dm.ElementLinearData} Content data
*/
ve.ui.TargetWidget.prototype.getContent = function () {
return this.surface.getModel().getDocument().getData();
};
/**
* Initialize surface and toolbar.
*
* Widget must be attached to DOM before initializing.
*
* @method
*/
ve.ui.TargetWidget.prototype.initialize = function () {
this.toolbar.initialize();
this.surface.initialize();
};
/**
* Destroy surface and toolbar.
*
* @method
*/
ve.ui.TargetWidget.prototype.destroy = function () {
if ( this.surface ) {
this.surface.destroy();
}
if ( this.toolbar ) {
this.toolbar.destroy();
}
this.$element.remove();
};
/**
* Focus the surface.
*/
ve.ui.TargetWidget.prototype.focus = function () {
this.surface.getView().focus();
};