]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/components/Modal.js
git-svn-id: https://svn.argeo.org/slc/trunk@2380 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / argeo-ria-src / class / org / argeo / ria / components / Modal.js
index 58d3a6642febc78ad20a1291999d8ff0ba609220..3d2c2c81bb12c9925d84fe7dfb795d82fa2c49e2 100644 (file)
@@ -7,7 +7,17 @@ qx.Class.define("org.argeo.ria.components.Modal",
 {\r
        extend : qx.ui.window.Window,\r
   \r
+       properties : {\r
+               persistent : {\r
+                       check : "Boolean",\r
+                       init : false\r
+               }\r
+       },\r
+       \r
        events : {\r
+               /**\r
+                * Triggered when the user clicks the "ok" button. \r
+                */\r
                "ok" : "qx.event.type.Event"\r
        },\r
        /**\r
@@ -33,6 +43,19 @@ qx.Class.define("org.argeo.ria.components.Modal",
        },\r
        \r
        members : {\r
+               \r
+               addCenter : function(component){\r
+                       if(!this.getPersistent()){\r
+                               this.add(component, {edge : 'center', width:'100%'});\r
+                       }else{\r
+                               if(!this.centerScroller){\r
+                                       this.centerScroller = new qx.ui.container.Composite(new qx.ui.layout.VBox(1));                                  \r
+                                       this.add(new qx.ui.container.Scroll(this.centerScroller), {edge : 'center', width:'100%', height:'100%'});\r
+                               }\r
+                               this.centerScroller.add(component);\r
+                       }\r
+               },\r
+               \r
                /**\r
                 * Display text inside the popup\r
                 * @param text {String} A string content for the popup\r
@@ -41,14 +64,18 @@ qx.Class.define("org.argeo.ria.components.Modal",
                        var label = new qx.ui.basic.Label(text);\r
                        label.setRich(true);\r
                        label.setTextAlign("center");\r
-                       this.add(label, {edge:'center', width:'100%'});\r
+                       this.addCenter(label);\r
                        this.addCloseButton();\r
                },\r
+               /**\r
+                * Add a question and ok / cancel buttons\r
+                * @param text {String} The question to ask to the user\r
+                */\r
                addConfirm : function(text){\r
                        var label = new qx.ui.basic.Label(text);\r
                        label.setRich(true);\r
                        label.setTextAlign("center");\r
-                       this.add(label, {edge:'center', width:'100%'});\r
+                       this.addCenter(label);\r
                        this.addOkCancel();\r
                },\r
                /**\r
@@ -56,14 +83,17 @@ qx.Class.define("org.argeo.ria.components.Modal",
                 * @param panel {qx.ui.core.Widget} A gui component (will be set at width 100%).\r
                 */\r
                addContent: function(panel){\r
-                       this.add(panel, {edge:'center', width:'100%'});\r
+                       this.addCenter(panel);\r
                        this.addCloseButton();\r
                },\r
                /**\r
                 * Automatically attach to the application root, then show.\r
                 */\r
                attachAndShow:function(){\r
-                       org.argeo.ria.components.ViewsManager.getInstance().getApplicationRoot().add(this);                     \r
+                       if(!this.attached){\r
+                               org.argeo.ria.components.ViewsManager.getInstance().getApplicationRoot().add(this);\r
+                               this.attached = true;\r
+                       }\r
                        this.show();\r
                },\r
                /**\r
@@ -121,7 +151,11 @@ qx.Class.define("org.argeo.ria.components.Modal",
                 */\r
                _closeAndDestroy : function(){\r
                        this.hide();\r
-                       this.destroy();                 \r
+                       if(!this.getPersistent()){\r
+                               this.destroy();\r
+                       }else{\r
+                               if(this.centerScroller) this.centerScroller.removeAll();\r
+                       }\r
                }\r
        }\r
 });
\ No newline at end of file