/** * 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 ( '
' + '' + '
' ); } }); });