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

83 regels
1.6 KiB
JavaScript
Executable File

/**
* PanelButton.js
*
* Copyright, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://www.tinymce.com/license
* Contributing: http://www.tinymce.com/contributing
*/
/**
* Creates a new panel button.
*
* @class tinymce.ui.PanelButton
* @extends tinymce.ui.Button
*/
define("tinymce/ui/PanelButton", [
"tinymce/ui/Button",
"tinymce/ui/FloatPanel"
], function(Button, FloatPanel) {
"use strict";
return Button.extend({
/**
* Shows the panel for the button.
*
* @method showPanel
*/
showPanel: function() {
var self = this, settings = self.settings;
settings.panel.popover = true;
settings.panel.autohide = true;
self.active(true);
if (!self.panel) {
self.panel = new FloatPanel(settings.panel).on('hide', function() {
self.active(false);
}).parent(self).renderTo(self.getContainerElm());
self.panel.fire('show');
self.panel.reflow();
} else {
self.panel.show();
}
self.panel.moveRel(self.getEl(), settings.popoverAlign || 'bc-tc');
},
/**
* Hides the panel for the button.
*
* @method hidePanel
*/
hidePanel: function() {
var self = this;
if (self.panel) {
self.panel.hide();
}
},
/**
* Called after the control has been rendered.
*
* @method postRender
*/
postRender: function() {
var self = this;
self.on('click', function(e) {
if (e.control === self) {
if (self.panel && self.panel.visible()) {
self.hidePanel();
} else {
self.showPanel();
}
}
});
return self._super();
}
});
});