]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix and test for #2117: It should be possible to create new windows on fly to new...
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>
Fri, 26 Sep 2008 07:39:32 +0000 (07:39 +0000)
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>
Fri, 26 Sep 2008 07:39:32 +0000 (07:39 +0000)
svn changeset:5520/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java
src/com/itmill/toolkit/tests/tickets/Ticket2117.java [new file with mode: 0644]

index 3255f8223cbdb3c279c6585c5773c19679927e54..152d6677a62ccdd050a99c8c8588328eba5b051c 100644 (file)
@@ -147,6 +147,9 @@ public class IView extends SimplePanel implements Paintable,
             final String url = open.getStringAttribute("src");
             final String target = open.getStringAttribute("name");
             if (target == null) {
+                // This window is closing. Send close event before
+                // going to the new url
+                onWindowClosed();
                 goTo(url);
             } else {
                 // TODO width & height
@@ -327,9 +330,10 @@ public class IView extends SimplePanel implements Paintable,
         connection.sendPendingVariableChangesSync();
     }
 
-    private static native void focusElement(Element e) /*-{ 
-                                                    e.focus();
-                                                    }-*/;
+    private static native void focusElement(Element e) 
+    /*-{ 
+       e.focus();
+    }-*/;
 
     public String onWindowClosing() {
         return null;
diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket2117.java b/src/com/itmill/toolkit/tests/tickets/Ticket2117.java
new file mode 100644 (file)
index 0000000..2bde267
--- /dev/null
@@ -0,0 +1,45 @@
+package com.itmill.toolkit.tests.tickets;
+
+import com.itmill.toolkit.Application;
+import com.itmill.toolkit.terminal.ExternalResource;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.Window;
+
+public class Ticket2117 extends Application {
+
+    public void init() {
+        setMainWindow(createWindow());
+    }
+
+    public Window getWindow(String name) {
+
+        // If we already have the requested window, use it
+        Window w = super.getWindow(name);
+        if (w == null) {
+
+            // If no window found, create it
+            w = createExtraWindow(name);
+            w.open(new ExternalResource(w.getURL()));
+        }
+        return w;
+    }
+
+    private Window createExtraWindow(String name) {
+        final Window w = new Window("Extra window: " + name);
+        w.setName(name);
+        addWindow(w);
+        w.addComponent(new Label(
+                "This window has been created on fly for name: " + name));
+        w.addComponent(new Label("It has also been redirected to " + w.getURL()
+                + " to support reloading"));
+        return w;
+    }
+
+    private Window createWindow() {
+        final Window w = new Window();
+        w.addComponent(new Label("Open this link: <a href='"
+                + getURL().toExternalForm() + "'>" + getURL().toExternalForm()
+                + "</a> in another browser-window.", Label.CONTENT_XHTML));
+        return w;
+    }
+}