aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>2008-09-26 07:39:32 +0000
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>2008-09-26 07:39:32 +0000
commit326db7ba1ed1a7b14e38130e381210786c41ec4e (patch)
tree0acddb23138cd90db9699dbe27328c73aaca3588
parent609881fcb0994a786bd7285bc0cbfebb73b13ede (diff)
downloadvaadin-framework-326db7ba1ed1a7b14e38130e381210786c41ec4e.tar.gz
vaadin-framework-326db7ba1ed1a7b14e38130e381210786c41ec4e.zip
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
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java10
-rw-r--r--src/com/itmill/toolkit/tests/tickets/Ticket2117.java45
2 files changed, 52 insertions, 3 deletions
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: <a href='"
+ + getURL().toExternalForm() + "'>" + getURL().toExternalForm()
+ + "</a> in another browser-window.", Label.CONTENT_XHTML));
+ return w;
+ }
+}