X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.webapp%2Fsrc%2Fmain%2Fwebapp%2Fargeo-ria-src%2Fclass%2Forg%2Fargeo%2Fria%2Fcomponents%2FModal.js;h=3d2c2c81bb12c9925d84fe7dfb795d82fa2c49e2;hb=614cd339a65450805c1684af40bba14db6a8333f;hp=e0895f48ccb84582b55ca94a1d48b5ed59b66883;hpb=fbb37515d94515993468c998516fe8341189ef84;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/Modal.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/Modal.js index e0895f48c..3d2c2c81b 100644 --- a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/Modal.js +++ b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/Modal.js @@ -7,6 +7,19 @@ qx.Class.define("org.argeo.ria.components.Modal", { extend : qx.ui.window.Window, + properties : { + persistent : { + check : "Boolean", + init : false + } + }, + + events : { + /** + * Triggered when the user clicks the "ok" button. + */ + "ok" : "qx.event.type.Event" + }, /** * * @param caption {String} Title of the window @@ -30,27 +43,57 @@ qx.Class.define("org.argeo.ria.components.Modal", }, members : { + + addCenter : function(component){ + if(!this.getPersistent()){ + this.add(component, {edge : 'center', width:'100%'}); + }else{ + if(!this.centerScroller){ + this.centerScroller = new qx.ui.container.Composite(new qx.ui.layout.VBox(1)); + this.add(new qx.ui.container.Scroll(this.centerScroller), {edge : 'center', width:'100%', height:'100%'}); + } + this.centerScroller.add(component); + } + }, + /** * Display text inside the popup * @param text {String} A string content for the popup */ addLabel:function(text){ - this.add(new qx.ui.basic.Label(text), {edge:'center', width:'100%'}); + var label = new qx.ui.basic.Label(text); + label.setRich(true); + label.setTextAlign("center"); + this.addCenter(label); this.addCloseButton(); }, + /** + * Add a question and ok / cancel buttons + * @param text {String} The question to ask to the user + */ + addConfirm : function(text){ + var label = new qx.ui.basic.Label(text); + label.setRich(true); + label.setTextAlign("center"); + this.addCenter(label); + this.addOkCancel(); + }, /** * Display a component (panel) in the center of the popup * @param panel {qx.ui.core.Widget} A gui component (will be set at width 100%). */ addContent: function(panel){ - this.add(panel, {edge:'center', width:'100%'}); + this.addCenter(panel); this.addCloseButton(); }, /** * Automatically attach to the application root, then show. */ attachAndShow:function(){ - org.argeo.ria.components.ViewsManager.getInstance().getApplicationRoot().add(this); + if(!this.attached){ + org.argeo.ria.components.ViewsManager.getInstance().getApplicationRoot().add(this); + this.attached = true; + } this.show(); }, /** @@ -70,10 +113,14 @@ qx.Class.define("org.argeo.ria.components.Modal", buttonPane.setAlignX("center"); this.add(buttonPane, {edge:"south"}); this.okButton = new qx.ui.form.Button("Ok"); + this.okButton.addListener("execute", function(e){ + this.fireEvent("ok"); + this._closeAndDestroy(); + }, this); this.cancelButton = new qx.ui.form.Button("Cancel"); this.cancelButton.addListener("execute", this._closeAndDestroy, this); - buttonPane.add(this.cancelButton); buttonPane.add(this.okButton); + buttonPane.add(this.cancelButton); }, /** * Adds a prompt form to the popup : a question, followed by a text input. @@ -82,9 +129,13 @@ qx.Class.define("org.argeo.ria.components.Modal", * @param callbackContext {Object} Context for the callback, optional. */ makePromptForm:function(questionString, validationCallback, callbackContext){ - this.add(new qx.ui.basic.Label(questionString), {edge:'north'}); + var label = new qx.ui.basic.Label(questionString); + label.setRich(true); + label.setTextAlign("center"); + this.add(label, {edge:'north'}); var textField = new qx.ui.form.TextField(); - textField.setMarginTop(20); + textField.setMarginTop(10); + textField.setMarginBottom(10); this.add(textField, {edge:'center'}); this.addOkCancel(); if(callbackContext){ @@ -100,7 +151,11 @@ qx.Class.define("org.argeo.ria.components.Modal", */ _closeAndDestroy : function(){ this.hide(); - this.destroy(); + if(!this.getPersistent()){ + this.destroy(); + }else{ + if(this.centerScroller) this.centerScroller.removeAll(); + } } } }); \ No newline at end of file