From 326db7ba1ed1a7b14e38130e381210786c41ec4e Mon Sep 17 00:00:00 2001 From: Joonas Lehtinen Date: Fri, 26 Sep 2008 07:39:32 +0000 Subject: [PATCH] Fix and test for #2117: It should be possible to create new windows on fly to new URL:s svn changeset:5520/svn branch:trunk --- .../toolkit/terminal/gwt/client/ui/IView.java | 10 +++-- .../toolkit/tests/tickets/Ticket2117.java | 45 +++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 src/com/itmill/toolkit/tests/tickets/Ticket2117.java diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java index 3255f8223c..152d6677a6 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java @@ -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 index 0000000000..2bde267080 --- /dev/null +++ b/src/com/itmill/toolkit/tests/tickets/Ticket2117.java @@ -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: " + getURL().toExternalForm() + + " in another browser-window.", Label.CONTENT_XHTML)); + return w; + } +} -- 2.39.5