]> source.dussan.org Git - vaadin-framework.git/commitdiff
Sampler: Windowing section rewrite done, fixes #2601 and thus #2684
authorMarc Englund <marc.englund@itmill.com>
Thu, 26 Feb 2009 21:13:39 +0000 (21:13 +0000)
committerMarc Englund <marc.englund@itmill.com>
Thu, 26 Feb 2009 21:13:39 +0000 (21:13 +0000)
svn changeset:6979/svn branch:trunk

src/com/itmill/toolkit/demo/sampler/FeatureSet.java
src/com/itmill/toolkit/demo/sampler/features/windows/NativeWindow.java
src/com/itmill/toolkit/demo/sampler/features/windows/NativeWindowExample.java
src/com/itmill/toolkit/demo/sampler/features/windows/Subwindow.java
src/com/itmill/toolkit/demo/sampler/features/windows/SubwindowAutoSized.java
src/com/itmill/toolkit/demo/sampler/features/windows/SubwindowClose.java
src/com/itmill/toolkit/demo/sampler/features/windows/SubwindowModal.java
src/com/itmill/toolkit/demo/sampler/features/windows/SubwindowPositioned.java
src/com/itmill/toolkit/demo/sampler/features/windows/SubwindowPositionedExample.java
src/com/itmill/toolkit/demo/sampler/features/windows/SubwindowSized.java

index c36086c3dd6962288fa8844d61f659b8ae2c8b4a..6c9da622acdbf215dc3eb01612a7d59f1ff9dcf4 100644 (file)
@@ -76,6 +76,7 @@ import com.itmill.toolkit.demo.sampler.features.trees.TreeActions;
 import com.itmill.toolkit.demo.sampler.features.trees.TreeMouseEvents;
 import com.itmill.toolkit.demo.sampler.features.trees.TreeMultiSelect;
 import com.itmill.toolkit.demo.sampler.features.trees.TreeSingleSelect;
+import com.itmill.toolkit.demo.sampler.features.windows.NativeWindow;
 import com.itmill.toolkit.demo.sampler.features.windows.Subwindow;
 import com.itmill.toolkit.demo.sampler.features.windows.SubwindowAutoSized;
 import com.itmill.toolkit.demo.sampler.features.windows.SubwindowClose;
@@ -304,7 +305,7 @@ public class FeatureSet extends Feature {
             super(
                     "Windows",
                     "Windows",
-                    "Windows can for instance organize the UI, save space (popup windows), focus attention (modal windows), provide multiple views for multitasking (native browser windows).",
+                    "Windows can (for instance) organize the UI, save space (popup windows), focus attention (modal windows), or provide multiple views for the same data for multitasking or dual screen setups (native browser windows).",
                     new Feature[] {
                     //        
                             new Subwindow(), //
@@ -313,7 +314,7 @@ public class FeatureSet extends Feature {
                             new SubwindowSized(), //
                             new SubwindowPositioned(), //
                             new SubwindowClose(), //
-                    // new NativeWindow(), // in progress
+                            new NativeWindow(), // 
                     });
         }
     }
index d82a2c3d1204c863a07722984ae055c5079931dd..6b955192d0b6f736cd74dc0a9491fcf7ab57fc19 100644 (file)
@@ -3,20 +3,28 @@ package com.itmill.toolkit.demo.sampler.features.windows;
 import com.itmill.toolkit.demo.sampler.APIResource;\r
 import com.itmill.toolkit.demo.sampler.Feature;\r
 import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet.Links;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet.Windows;\r
 import com.itmill.toolkit.ui.Window;\r
 \r
 public class NativeWindow extends Feature {\r
 \r
     @Override\r
     public String getName() {\r
-        return "Subwindow";\r
+        return "Native window";\r
     }\r
 \r
     @Override\r
     public String getDescription() {\r
-        return "A <i>Subwindow</i> is a popup-window within the browser window."\r
-                + " There can be multiple subwindows in one (native) browser"\r
-                + " window.";\r
+        return "A <i>NativeWindow</i> is a separate browser window, which"\r
+                + " looks and works just like the main window.<br/>"\r
+                + " There are multiple ways to make native windows; you can"\r
+                + " override Application.getWindow() (recommended in any case)"\r
+                + " but you can also use Application.addWindow() - the added"\r
+                + " window will be available from a separate URL (which is"\r
+                + " based on the window name.)<br/> When you view Sampler in"\r
+                + " a new window, the getWindow() method is used, this example"\r
+                + " also uses addWindow().";\r
     }\r
 \r
     @Override\r
@@ -26,7 +34,7 @@ public class NativeWindow extends Feature {
 \r
     @Override\r
     public Class[] getRelatedFeatures() {\r
-        return new Class[] { SubwindowModal.class };\r
+        return new Class[] { Subwindow.class, Links.class, Windows.class };\r
     }\r
 \r
     @Override\r
index 80c377fb11e3e1100fbd7affd7b9497e68a57fbb..43cdfdcc1831da07f5d933d41002a7f69036299a 100644 (file)
@@ -1,54 +1,83 @@
 package com.itmill.toolkit.demo.sampler.features.windows;\r
 \r
+import java.util.Date;\r
+\r
 import com.itmill.toolkit.terminal.ExternalResource;\r
 import com.itmill.toolkit.ui.Button;\r
 import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.Link;\r
 import com.itmill.toolkit.ui.VerticalLayout;\r
 import com.itmill.toolkit.ui.Window;\r
 import com.itmill.toolkit.ui.Button.ClickEvent;\r
-import com.itmill.toolkit.ui.Window.CloseEvent;\r
 \r
 public class NativeWindowExample extends VerticalLayout {\r
 \r
-    Window window;\r
-\r
     public NativeWindowExample() {\r
-\r
-        // Create the window\r
-        window = new Window("Automatically sized subwindow");\r
-        // Native windows should be explicitly removed from the application\r
-        // when appropriate; in this case when closed:\r
-        window.addListener(new Window.CloseListener() {\r
-            // inline close-listener\r
-            public void windowClose(CloseEvent e) {\r
-                getApplication().removeWindow(window);\r
-            }\r
-        });\r
-\r
-        // Configure the windows layout; by default a VerticalLayout\r
-        VerticalLayout layout = (VerticalLayout) window.getLayout();\r
-        layout.setMargin(true);\r
-        layout.setSpacing(true);\r
-        // make it undefined for auto-sizing window\r
-        layout.setSizeUndefined();\r
-\r
-        // Add some content;\r
-        window.addComponent(new Label("This is is native (browser) window."));\r
+        setSpacing(true);\r
 \r
         // Add a button for opening the window\r
         Button open = new Button("Open native window",\r
                 new Button.ClickListener() {\r
                     // inline click-listener\r
                     public void buttonClick(ClickEvent event) {\r
+                        Window window = new NativeWindow();\r
+                        // Add the window to the application\r
                         getApplication().addWindow(window);\r
-                        getApplication().getMainWindow().open(\r
-                                new ExternalResource(window.getURL()),\r
-                                "NativeWindowExample", 500, 500,\r
-                                Window.BORDER_NONE);\r
+\r
+                        // Get the URL for the window, and open that in a new\r
+                        // browser window, in this case in a small window.\r
+                        getWindow().open(new ExternalResource(window.getURL()), // URL\r
+                                "_blank", // window name\r
+                                500, // width\r
+                                200, // weight\r
+                                Window.BORDER_NONE // decorations\r
+                                );\r
                     }\r
                 });\r
         addComponent(open);\r
 \r
+        // Add a link for opening sampler in a new window; this will cause\r
+        // Sampler's getWindow() to create a new Window.\r
+        Link openSampler = new Link("Open Sampler in a new window",\r
+                new ExternalResource("#"), // URL\r
+                "_blank", // window name\r
+                700, // width\r
+                500, // height\r
+                Link.TARGET_BORDER_NONE // decorations\r
+        );\r
+        addComponent(openSampler);\r
+\r
+    }\r
+\r
+    /*\r
+     * We'll be instantiating the same window multiple times, so we'll make an\r
+     * inner class for separation. You could of course just create a new\r
+     * Window() and addCompoent to that instead.\r
+     */\r
+    class NativeWindow extends Window {\r
+        NativeWindow() {\r
+            // Configure the layout\r
+            VerticalLayout layout = (VerticalLayout) getLayout();\r
+            layout.setMargin(true);\r
+            layout.setSpacing(true);\r
+\r
+            // Add some content; a label and a close-button\r
+            Label message = new Label("This is a native window, created at "\r
+                    + new Date());\r
+            addComponent(message);\r
+\r
+            // It's a good idea to remove the window when it's closed (also\r
+            // when the browser window 'x' is used), unless you explicitly\r
+            // want the window to persist (if it's not removed from the\r
+            // application, it can still be retrieved from it's URL.\r
+            addListener(new CloseListener() {\r
+                public void windowClose(CloseEvent e) {\r
+                    // remove from application\r
+                    getApplication().removeWindow(NativeWindow.this);\r
+                }\r
+            });\r
+\r
+        }\r
     }\r
 \r
 }
\ No newline at end of file
index 27a053f66a99dab403c143539a97fa8b443836ae..b19eb42b3e514b7a03a2d5ad2e3d4e316d9e4eb7 100644 (file)
@@ -2,6 +2,7 @@ package com.itmill.toolkit.demo.sampler.features.windows;
 \r
 import com.itmill.toolkit.demo.sampler.APIResource;\r
 import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
 import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
 import com.itmill.toolkit.ui.Window;\r
 \r
@@ -26,7 +27,7 @@ public class Subwindow extends Feature {
 \r
     @Override\r
     public Class[] getRelatedFeatures() {\r
-        return new Class[] { SubwindowModal.class };\r
+        return new Class[] { NativeWindow.class, FeatureSet.Windows.class };\r
     }\r
 \r
     @Override\r
index 97c44fe885970740d5d342a657c03554a18d7c9d..c3cc0ac6363898cc7b91dd25450700806bb8cd5c 100644 (file)
@@ -2,6 +2,7 @@ package com.itmill.toolkit.demo.sampler.features.windows;
 \r
 import com.itmill.toolkit.demo.sampler.APIResource;\r
 import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
 import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
 import com.itmill.toolkit.ui.Window;\r
 \r
@@ -27,7 +28,7 @@ public class SubwindowAutoSized extends Feature {
 \r
     @Override\r
     public Class[] getRelatedFeatures() {\r
-        return new Class[] { SubwindowModal.class };\r
+        return new Class[] { SubwindowSized.class, FeatureSet.Windows.class };\r
     }\r
 \r
     @Override\r
index 4b86dedb7e8086b29e0df3c30e59c260a1e8b173..59bb6e3df148d863992dd89613255175e6bd67fb 100644 (file)
@@ -2,6 +2,7 @@ package com.itmill.toolkit.demo.sampler.features.windows;
 \r
 import com.itmill.toolkit.demo.sampler.APIResource;\r
 import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
 import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
 import com.itmill.toolkit.ui.Window;\r
 \r
@@ -9,7 +10,7 @@ public class SubwindowClose extends Feature {
 \r
     @Override\r
     public String getName() {\r
-        return "Subwindow";\r
+        return "Window closing";\r
     }\r
 \r
     @Override\r
@@ -24,7 +25,7 @@ public class SubwindowClose extends Feature {
 \r
     @Override\r
     public Class[] getRelatedFeatures() {\r
-        return new Class[] { SubwindowModal.class };\r
+        return new Class[] { FeatureSet.Windows.class };\r
     }\r
 \r
     @Override\r
index 5625e0b44e4dba0d0d9cff96f0a568bed6c996f3..ac57b9fdedf260cec6b335c9b5afeae7cfc4f191 100644 (file)
@@ -2,8 +2,8 @@ package com.itmill.toolkit.demo.sampler.features.windows;
 \r
 import com.itmill.toolkit.demo.sampler.APIResource;\r
 import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
 import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
-import com.itmill.toolkit.demo.sampler.features.blueprints.ProminentPrimaryAction;\r
 import com.itmill.toolkit.ui.Window;\r
 \r
 public class SubwindowModal extends Feature {\r
@@ -15,8 +15,8 @@ public class SubwindowModal extends Feature {
 \r
     @Override\r
     public String getDescription() {\r
-        return "A <i>modal window</i> blocks access to the rest of the application"\r
-                + "until the window is closed (or made non-modal).<br/>"\r
+        return "A <i>modal window</i> blocks access to the rest of the application"\r
+                + " until the window is closed (or made non-modal).<br/>"\r
                 + " Use modal windows when the user must finish the task in the"\r
                 + " window before continuing.";\r
     }\r
@@ -31,8 +31,7 @@ public class SubwindowModal extends Feature {
         return new Class[] {\r
         //\r
                 Subwindow.class, //\r
-                ProminentPrimaryAction.class, //\r
-        };\r
+                FeatureSet.Windows.class };\r
     }\r
 \r
     @Override\r
index a14383ee6b57ae6a092237bf52e1ec7b9c30c167..564319cada93c03f8fe763947ac14d6155bf0619 100644 (file)
@@ -2,6 +2,7 @@ package com.itmill.toolkit.demo.sampler.features.windows;
 \r
 import com.itmill.toolkit.demo.sampler.APIResource;\r
 import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
 import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
 import com.itmill.toolkit.ui.Window;\r
 \r
@@ -24,7 +25,7 @@ public class SubwindowPositioned extends Feature {
 \r
     @Override\r
     public Class[] getRelatedFeatures() {\r
-        return new Class[] { SubwindowModal.class };\r
+        return new Class[] { FeatureSet.Windows.class };\r
     }\r
 \r
     @Override\r
index 54550b9b627235b6ce86e7d0f903b88d5559416d..9d6e6fa1329088c0c2d73ca96acf28d2722ff4ad 100644 (file)
@@ -40,33 +40,37 @@ public class SubwindowPositionedExample extends VerticalLayout {
         layout.setComponentAlignment(close, "right bottom");\r
 \r
         // Add buttons for opening the subwindow\r
-        Button fifty = new Button("Open positioned window at 50x50",\r
+        Button fifty = new Button("Open window at position 50x50",\r
                 new Button.ClickListener() {\r
                     // inline click-listener\r
                     public void buttonClick(ClickEvent event) {\r
-                        subwindow.setPositionX(50);\r
-                        subwindow.setPositionY(50);\r
                         if (subwindow.getParent() == null) {\r
                             // Open the subwindow by adding it to the main\r
                             // window\r
                             getApplication().getMainWindow().addWindow(\r
                                     subwindow);\r
                         }\r
+\r
+                        // Set window position\r
+                        subwindow.setPositionX(50);\r
+                        subwindow.setPositionY(50);\r
                     }\r
                 });\r
         addComponent(fifty);\r
-        Button onefifty = new Button("Open positioned window at 150x150",\r
+        Button onefifty = new Button("Open window at position 150x200",\r
                 new Button.ClickListener() {\r
                     // inline click-listener\r
                     public void buttonClick(ClickEvent event) {\r
-                        subwindow.setPositionX(150);\r
-                        subwindow.setPositionY(150);\r
                         if (subwindow.getParent() == null) {\r
                             // Open the subwindow by adding it to the main\r
                             // window\r
                             getApplication().getMainWindow().addWindow(\r
                                     subwindow);\r
                         }\r
+\r
+                        // Set window position\r
+                        subwindow.setPositionX(150);\r
+                        subwindow.setPositionY(200);\r
                     }\r
                 });\r
         addComponent(onefifty);\r
@@ -74,13 +78,15 @@ public class SubwindowPositionedExample extends VerticalLayout {
                 new Button.ClickListener() {\r
                     // inline click-listener\r
                     public void buttonClick(ClickEvent event) {\r
-                        subwindow.center();\r
                         if (subwindow.getParent() == null) {\r
                             // Open the subwindow by adding it to the main\r
                             // window\r
                             getApplication().getMainWindow().addWindow(\r
                                     subwindow);\r
                         }\r
+\r
+                        // Center the window\r
+                        subwindow.center();\r
                     }\r
                 });\r
         addComponent(center);\r
index cb77a54803e8328a10a2dca7d4fa3612c0f5263e..90ec8a82a66d5eb0c1793146c3aeed6cf5fcb223 100644 (file)
@@ -2,6 +2,7 @@ package com.itmill.toolkit.demo.sampler.features.windows;
 \r
 import com.itmill.toolkit.demo.sampler.APIResource;\r
 import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.FeatureSet;\r
 import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
 import com.itmill.toolkit.ui.Window;\r
 \r
@@ -25,7 +26,7 @@ public class SubwindowSized extends Feature {
 \r
     @Override\r
     public Class[] getRelatedFeatures() {\r
-        return new Class[] { SubwindowModal.class };\r
+        return new Class[] { SubwindowAutoSized.class, FeatureSet.Windows.class };\r
     }\r
 \r
     @Override\r