156 lines
3.4 KiB
JavaScript
Executable File
156 lines
3.4 KiB
JavaScript
Executable File
/**
|
|
* 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;
|
|
}); |