});\r
this.setLayout(new qx.ui.layout.Dock());\r
this.setModal(true);\r
- this.addCloseButton();\r
this.center();\r
if(text){\r
this.addLabel(text);\r
*/\r
addLabel:function(text){\r
this.add(new qx.ui.basic.Label(text), {edge:'center', width:'100%'}); \r
+ this.addCloseButton();\r
},\r
/**\r
* Display a component (panel) in the center of the popup\r
*/\r
addContent: function(panel){\r
this.add(panel, {edge:'center', width:'100%'});\r
+ this.addCloseButton();\r
},\r
/**\r
* Automatically attach to the application root, then show.\r
this.closeButton.addListener("execute", this._closeAndDestroy, this);\r
this.add(this.closeButton, {edge:'south'}); \r
},\r
+ addOkCancel : function(){\r
+ var buttonPane = new qx.ui.container.Composite(new qx.ui.layout.HBox(5, 'right'));\r
+ buttonPane.setAlignX("center");\r
+ this.add(buttonPane, {edge:"south"});\r
+ this.okButton = new qx.ui.form.Button("Ok");\r
+ this.cancelButton = new qx.ui.form.Button("Cancel");\r
+ this.cancelButton.addListener("execute", this._closeAndDestroy, this);\r
+ buttonPane.add(this.cancelButton);\r
+ buttonPane.add(this.okButton);\r
+ },\r
makePromptForm:function(questionString, validationCallback, callbackContext){\r
this.add(new qx.ui.basic.Label(questionString), {edge:'north'});\r
var textField = new qx.ui.form.TextField();\r
+ textField.setMarginTop(20);\r
this.add(textField, {edge:'center'});\r
- this.closeButton.removeListener("execute", this._closeAndDestroy, this);\r
+ this.addOkCancel();\r
if(callbackContext){\r
validationCallback = qx.lang.Function.bind(validationCallback, callbackContext);\r
}\r
- this.closeButton.addListener("execute", function(e){\r
+ this.okButton.addListener("execute", function(e){\r
var valid = validationCallback(textField.getValue());\r
if(valid) this._closeAndDestroy();\r
}, this);\r
* Icon of the command \r
*/\r
icon : {init:""},\r
+ /**\r
+ * Weather this command is a true/false state \r
+ */\r
+ toggle : {init:false},\r
/**\r
* Sub menu if needed \r
*/\r
* @return {qx.ui.menu.Button}\r
*/\r
getMenuButton : function(){\r
- var button = new qx.ui.menu.Button(\r
- this.getLabel(), \r
- this.getIcon(), \r
- this, \r
- this.getMenuClone()\r
- );\r
- this.addTooltip(button);\r
- if(this.getMenu()){\r
- this.addListener("changeMenu", function(event){\r
- button.setMenu(this.getMenuClone());\r
- }, this); \r
+ if(this.getToggle()){\r
+ button = new qx.ui.menu.CheckBox(this.getLabel());\r
+ this._registerToggleButtonListeners(button);\r
+ }else{\r
+ var button = new qx.ui.menu.Button(\r
+ this.getLabel(), \r
+ this.getIcon(), \r
+ this, \r
+ this.getMenuClone()\r
+ );\r
+ if(this.getMenu()){\r
+ this.addListener("changeMenu", function(event){\r
+ button.setMenu(this.getMenuClone());\r
+ }, this); \r
+ }\r
}\r
+ this.addTooltip(button);\r
return button;\r
},\r
\r
this.setEnabled(e.getData());\r
}, button);\r
button.setEnabled(this.getEnabled());\r
+ }else if(this.getToggle()){\r
+ button = new qx.ui.toolbar.CheckBox(this.getLabel(), this.getIcon());\r
+ this._registerToggleButtonListeners(button);\r
}else{\r
button = new qx.ui.toolbar.Button(\r
this.getLabel(),\r
return button;\r
},\r
\r
+ /**\r
+ * Special tricks using UserData to enable/disable listeners to avoid loops...\r
+ * @param button {qx.ui.core.Widget} toolbar Checkbox or menu Checkbox button.\r
+ */\r
+ _registerToggleButtonListeners : function(button){\r
+ button.addListener("changeChecked", function(event){\r
+ if(button.getUserData("disableListener")) return;\r
+ this.setUserData("slc.command.toggleState", event.getData());\r
+ this.setUserData("slc.command.toggleStateSource", button);\r
+ this.fireEvent("execute");\r
+ }, this);\r
+ this.addListener("execute", function(event){\r
+ if(this.getUserData("slc;command.toggleStateSource") == button) return;\r
+ button.setUserData("disableListener", true);\r
+ button.setChecked(this.getUserData("slc.command.toggleState"));\r
+ button.setUserData("disableListener", false);\r
+ }, this); \r
+ },\r
+ \r
/**\r
* Clones the command menu\r
* @return {qx.ui.menu.Menu}\r
*/\r
getMenuClone : function(){\r
var menuClone = new qx.ui.menu.Menu();\r
+ menuClone.setMinWidth(100);\r
var submenus = this.getMenu();\r
if(!submenus) return;\r
for(var i=0;i<submenus.length;i++){\r
- var button = new qx.ui.menu.Button(submenus[i].label, submenus[i].icon);\r
- button.setUserData("commandId", submenus[i].commandId);\r
- button.addListener("execute", this.executeSubMenuCallback, this);\r
- menuClone.add(button);\r
+ if(submenus[i].separator){\r
+ menuClone.add(new qx.ui.menu.Separator());\r
+ }else{\r
+ var button = new qx.ui.menu.Button(submenus[i].label, submenus[i].icon);\r
+ button.setUserData("commandId", submenus[i].commandId);\r
+ button.addListener("execute", this.executeSubMenuCallback, this);\r
+ menuClone.add(button);\r
+ }\r
}\r
this.menuClones.push(menuClone);\r
return menuClone;\r
callback : function(e){},\r
command : null\r
},\r
+ /*\r
"quit" : {\r
label : "Quit", \r
icon : "resource/slc/system-shutdown.png",\r
callback : function(e){}, \r
command : null\r
},\r
+ */\r
"log" : {\r
label : "Show Console", \r
icon : "resource/slc/help-contents.png",\r
}\r
}\r
command.setEnabled(definition.enabled);\r
+ if(definition.toggle){\r
+ command.setToggle(true);\r
+ }\r
command.addListener("execute", definition.callback, (definition.callbackContext?definition.callbackContext:this));\r
if(definition.init){\r
var binded = qx.lang.Function.bind(definition.init, command);\r
menu.add(icon);\r
menu.add(text);\r
menu.add(both);\r
+ mgr.setSelected(both);\r
toolbar.setContextMenu(menu); \r
mgr.addListener("changeValue", function(e){\r
this.setShow(e.getData());\r