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

104 lines
2.4 KiB
JavaScript
Executable File

/**
* Button.js
*
* Copyright, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://www.tinymce.com/license
* Contributing: http://www.tinymce.com/contributing
*/
/**
* This class is used to create buttons. You can create them directly or through the Factory.
*
* @example
* // Create and render a button to the body element
* tinymce.ui.Factory({
* type: 'button',
* text: 'My button'
* }).renderTo(document.body);
*
* @-x-less Button.less
* @class tinymce.ui.Button
* @extends tinymce.ui.Widget
*/
define("tinymce/ui/Button", [
"tinymce/ui/Widget"
], function(Widget) {
"use strict";
return Widget.extend({
Defaults: {
classes: "widget btn",
role: "button"
},
/**
* Constructs a new button instance with the specified settings.
*
* @constructor
* @param {Object} settings Name/value object with settings.
* @setting {String} size Size of the button small|medium|large.
* @setting {String} image Image to use for icon.
* @setting {String} icon Icon to use for button.
*/
init: function(settings) {
var self = this, size;
self.on('click mousedown', function(e) {
e.preventDefault();
});
self._super(settings);
size = settings.size;
if (settings.subtype) {
self.addClass(settings.subtype);
}
if (size) {
self.addClass('btn-' + size);
}
},
/**
* Repaints the button for example after it's been resizes by a layout engine.
*
* @method repaint
*/
repaint: function() {
var btnStyle = this.getEl().firstChild.style;
btnStyle.width = btnStyle.height = "100%";
this._super();
},
/**
* Renders the control as a HTML string.
*
* @method renderHtml
* @return {String} HTML representing the control.
*/
renderHtml: function() {
var self = this, id = self._id, prefix = self.classPrefix;
var icon = self.settings.icon, image = '';
if (self.settings.image) {
icon = 'none';
image = ' style="background-image: url(\'' + self.settings.image + '\')"';
}
icon = self.settings.icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
return (
'<div id="' + id + '" class="' + self.classes() + '" tabindex="-1">' +
'<button role="presentation" type="button" tabindex="-1">' +
(icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
(self._text ? (icon ? ' ' : '') + self.encode(self._text) : '') +
'</button>' +
'</div>'
);
}
});
});