tinymce-editor/copy_this/modules/hdi/hdi-tinymce/tinymce/classes/ui/Widget.js
2013-07-25 23:50:43 +02:00

156 lignes
3.4 KiB
JavaScript
Fichiers exécutables

/**
* Widget.js
*
* Copyright, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://www.tinymce.com/license
* Contributing: http://www.tinymce.com/contributing
*/
/**
* Widget base class a widget is a control that has a tooltip and some basic states.
*
* @class tinymce.ui.Widget
* @extends tinymce.ui.Control
*/
define("tinymce/ui/Widget", [
"tinymce/ui/Control",
"tinymce/ui/Tooltip"
], function(Control, Tooltip) {
"use strict";
var tooltip;
var Widget = Control.extend({
/**
* Constructs a instance with the specified settings.
*
* @constructor
* @param {Object} settings Name/value object with settings.
* @setting {String} tooltip Tooltip text to display when hovering.
* @setting {Boolean} autofocus True if the control should be focused when rendered.
* @setting {String} text Text to display inside widget.
*/
init: function(settings) {
var self = this;
self._super(settings);
self.canFocus = true;
if (settings.tooltip && Widget.tooltips !== false) {
self.on('mouseenter mouseleave', function(e) {
var tooltip = self.tooltip().moveTo(-0xFFFF);
if (e.control == self && e.type == 'mouseenter') {
var rel = tooltip.text(settings.tooltip).show().testMoveRel(self.getEl(), ['bc-tc', 'bc-tl', 'bc-tr']);
tooltip.toggleClass('tooltip-n', rel == 'bc-tc');
tooltip.toggleClass('tooltip-nw', rel == 'bc-tl');
tooltip.toggleClass('tooltip-ne', rel == 'bc-tr');
tooltip.moveRel(self.getEl(), rel);
} else {
tooltip.hide();
}
});
}
self.aria('label', settings.tooltip);
},
/**
* Returns the current tooltip instance.
*
* @method tooltip
* @return {tinymce.ui.Tooltip} Tooltip instance.
*/
tooltip: function() {
var self = this;
if (!tooltip) {
tooltip = new Tooltip({type: 'tooltip'});
tooltip.renderTo(self.getContainerElm());
}
return tooltip;
},
/**
* Sets/gets the active state of the widget.
*
* @method active
* @param {Boolean} [state] State if the control is active.
* @return {Boolean|tinymce.ui.Widget} True/false or current widget instance.
*/
active: function(state) {
var self = this, undef;
if (state !== undef) {
self.aria('pressed', state);
self.toggleClass('active', state);
}
return self._super(state);
},
/**
* Sets/gets the disabled state of the widget.
*
* @method disabled
* @param {Boolean} [state] State if the control is disabled.
* @return {Boolean|tinymce.ui.Widget} True/false or current widget instance.
*/
disabled: function(state) {
var self = this, undef;
if (state !== undef) {
self.aria('disabled', state);
self.toggleClass('disabled', state);
}
return self._super(state);
},
/**
* Called after the control has been rendered.
*
* @method postRender
*/
postRender: function() {
var self = this, settings = self.settings;
self._rendered = true;
self._super();
if (!self.parent() && (settings.width || settings.height)) {
self.initLayoutRect();
self.repaint();
}
if (settings.autofocus) {
setTimeout(function() {
self.focus();
}, 0);
}
},
/**
* Removes the current control from DOM and from UI collections.
*
* @method remove
* @return {tinymce.ui.Control} Current control instance.
*/
remove: function() {
this._super();
if (tooltip) {
tooltip.remove();
tooltip = null;
}
}
});
return Widget;
});