UNPKG

@qooxdoo/framework

Version:

The JS Framework for Coders

136 lines (107 loc) 2.98 kB
/* ************************************************************************ qooxdoo - the new era of web development http://qooxdoo.org Copyright: 2004-2008 1&1 Internet AG, Germany, http://www.1und1.de License: MIT: https://opensource.org/licenses/MIT See the LICENSE file in the project's top-level directory for details. Authors: * Sebastian Werner (wpbasti) * Fabian Jakobs (fjakobs) * Martin Wittemann (martinwittemann) ************************************************************************ */ /** * Renders a special checkbox button inside a menu. The button behaves like * a normal {@link qx.ui.form.CheckBox} and shows a check icon when * checked; normally shows no icon when not checked (depends on the theme). */ qx.Class.define("qx.ui.menu.CheckBox", { extend : qx.ui.menu.AbstractButton, implement : [qx.ui.form.IBooleanForm], /* ***************************************************************************** CONSTRUCTOR ***************************************************************************** */ /** * @param label {String} Initial label * @param menu {qx.ui.menu.Menu} Initial sub menu */ construct : function(label, menu) { this.base(arguments); // Initialize with incoming arguments if (label != null) { // try to translate every time you create a checkbox [BUG #2699] if (label.translate) { this.setLabel(label.translate()); } else { this.setLabel(label); } } if (menu != null) { this.setMenu(menu); } this.addListener("execute", this._onExecute, this); }, /* ***************************************************************************** PROPERTIES ***************************************************************************** */ properties : { // overridden appearance : { refine : true, init : "menu-checkbox" }, /** Whether the button is checked */ value : { check : "Boolean", init : false, apply : "_applyValue", event : "changeValue", nullable : true } }, /* ***************************************************************************** MEMBERS ***************************************************************************** */ members : { // overridden (from MExecutable to keep the icon out of the binding) /** * @lint ignoreReferenceField(_bindableProperties) */ _bindableProperties : [ "enabled", "label", "toolTipText", "value", "menu" ], // property apply _applyValue : function(value, old) { value ? this.addState("checked") : this.removeState("checked"); }, /** * Handler for the execute event. * * @param e {qx.event.type.Event} The execute event. */ _onExecute : function(e) { this.toggleValue(); } } });