aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>2007-08-26 09:33:53 +0000
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>2007-08-26 09:33:53 +0000
commiteda9d80eeb00d6d71d84989766e7332cbaf4d28a (patch)
tree9948806bfdc743eb1d3a8fb02e1954774ee4b195
parent5f5931cd7cf920198060c871c4500d1a8165847c (diff)
downloadvaadin-framework-eda9d80eeb00d6d71d84989766e7332cbaf4d28a.tar.gz
vaadin-framework-eda9d80eeb00d6d71d84989766e7332cbaf4d28a.zip
Now opening and closing subwindows work.
svn changeset:2126/svn branch:trunk
-rwxr-xr-xsrc/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java8
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java31
-rw-r--r--src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java5
3 files changed, 40 insertions, 4 deletions
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
index 9201b4d85f..71b400bd9a 100755
--- a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
@@ -48,6 +48,8 @@ public class ApplicationConnection implements EntryPoint, FocusListener {
private WidgetFactory widgetFactory = new DefaultWidgetFactory();
private IContextMenu contextMenu = null;
+
+ private IView view = new IView();
/**
* This is the entry point method.
@@ -64,6 +66,9 @@ public class ApplicationConnection implements EntryPoint, FocusListener {
makeUidlRequest("repaintAll=1");
+ // TODO remove hardcoded id name
+ RootPanel.get("itmtk-ajax-window").add(view);
+
}
private native boolean isDebugMode() /*-{
@@ -165,10 +170,7 @@ public class ApplicationConnection implements EntryPoint, FocusListener {
+ uidl.getId() + ") registered yet.");
if(uidl.getId().equals("PID0")) {
// view
- IView view = new IView();
view.updateFromUIDL(uidl, this);
- // TODO remove hardcoded id name
- RootPanel.get("itmtk-ajax-window").add(view);
} else {
Widget window = widgetFactory.createWidget(uidl);
registerPaintable(uidl.getId(), (Paintable) window);
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 d7c42050d1..b0b2e2df92 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IView.java
@@ -1,5 +1,9 @@
package com.itmill.toolkit.terminal.gwt.client.ui;
+import java.util.HashSet;
+import java.util.Iterator;
+
+import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;
import com.itmill.toolkit.terminal.gwt.client.ApplicationConnection;
@@ -12,11 +16,16 @@ public class IView extends SimplePanel implements Paintable {
private Paintable layout;
+ private HashSet subWindows = new HashSet();
+
+
+
public String getTheme() {
return theme;
}
public void updateFromUIDL(UIDL uidl, ApplicationConnection client) {
+ clear();
theme = uidl.getStringAttribute("theme");
com.google.gwt.user.client.Window.setTitle(uidl.getStringAttribute("caption"));
UIDL childUidl = uidl.getChildUIDL(0);
@@ -33,6 +42,28 @@ public class IView extends SimplePanel implements Paintable {
setWidget((Widget) lo);
}
lo.updateFromUIDL(childUidl, client);
+
+ int i=1;
+ HashSet removedSubWindows = new HashSet(subWindows);
+ while ((childUidl = uidl.getChildUIDL(i++)) != null) {
+ if ("window".equals(childUidl.getTag())) {
+ Widget w = client.getWidget(childUidl);
+ if (subWindows.contains(w)) {
+ removedSubWindows.remove(w);
+ client.registerPaintable(childUidl.getId(), (Paintable)w);
+ } else {
+ subWindows.add(w);
+ RootPanel.get().add(w);
+ }
+ ((Paintable)w).updateFromUIDL(childUidl, client);
+ }
+ }
+ for (Iterator rem=removedSubWindows.iterator(); rem.hasNext();) {
+ IWindow w = (IWindow) rem.next();
+ client.unregisterPaintable(w);
+ subWindows.remove(w);
+ RootPanel.get().remove(w);
+ }
}
}
diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java
index eb197423f6..33b2d8de2e 100644
--- a/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java
+++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/IWindow.java
@@ -1,5 +1,7 @@
package com.itmill.toolkit.terminal.gwt.client.ui;
+import java.util.HashSet;
+
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
@@ -49,7 +51,7 @@ public class IWindow extends PopupPanel implements Paintable {
private int origW;
private int origH;
-
+
public IWindow() {
super();
setStyleName(CLASSNAME);
@@ -94,6 +96,7 @@ public class IWindow extends PopupPanel implements Paintable {
setCaption(uidl.getStringAttribute("caption"));
}
lo.updateFromUIDL(childUidl, client);
+
}
public void setCaption(String c) {