From: Matti Tahvonen Date: Fri, 3 Aug 2007 10:16:04 +0000 (+0000) Subject: Added method to ApplicationConnection to unregister Paintable, custom layout uses it X-Git-Tag: 6.7.0.beta1~6142 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=debaa8fcdccc46cc5e2ba1cd12d3c016789b966b;p=vaadin-framework.git Added method to ApplicationConnection to unregister Paintable, custom layout uses it svn changeset:1949/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java index b50b05ef61..9dfbb46aef 100755 --- a/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java @@ -16,6 +16,7 @@ import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; import com.google.gwt.json.client.JSONString; import com.google.gwt.json.client.JSONValue; +import com.google.gwt.user.client.ui.FocusListener; import com.google.gwt.user.client.ui.FocusWidget; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.Widget; @@ -24,7 +25,7 @@ import com.itmill.toolkit.terminal.gwt.client.ui.IContextMenu; /** * Entry point classes define onModuleLoad(). */ -public class ApplicationConnection implements EntryPoint { +public class ApplicationConnection implements EntryPoint, FocusListener { private String appUri; @@ -38,7 +39,9 @@ public class ApplicationConnection implements EntryPoint { private Vector pendingVariables = new Vector(); - private HashMap paintables = new HashMap(); + private HashMap idToPaintable = new HashMap(); + + private HashMap paintableToId = new HashMap(); private WidgetFactory widgetFactory = new DefaultWidgetFactory(); @@ -173,11 +176,21 @@ public class ApplicationConnection implements EntryPoint { } public void registerPaintable(String id, Paintable paintable) { - paintables.put(id, paintable); + idToPaintable.put(id, paintable); + paintableToId.put(paintable, id); + } + + public void unregisterPaintable(Paintable p) { + idToPaintable.remove(paintableToId.get(p)); + paintableToId.remove(p); } + /** + * Returns Paintable element by its id + * @param id Paintable ID + */ public Paintable getPaintable(String id) { - return (Paintable) paintables.get(id); + return (Paintable) idToPaintable.get(id); } private void addVariableToQueue(String paintableId, String variableName, @@ -394,4 +407,14 @@ public class ApplicationConnection implements EntryPoint { } return contextMenu; } + + public void onFocus(Widget sender) { + // TODO Auto-generated method stub + + } + + public void onLostFocus(Widget sender) { + // TODO Auto-generated method stub + + } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java index 3d6b11e9ad..b03c1b3d03 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java @@ -39,6 +39,8 @@ public class ICustomLayout extends ComplexPanel implements Paintable, Layout { /** Paintable ID of this paintable */ private String pid; + private ApplicationConnection client; + public ICustomLayout() { setElement(DOM.createDiv()); } @@ -80,7 +82,7 @@ public class ICustomLayout extends ComplexPanel implements Paintable, Layout { /** Update the layout from UIDL */ public void updateFromUIDL(UIDL uidl, ApplicationConnection client) { - + this.client = client; // Client manages general cases if (client.updateComponent(this, uidl, false)) return; @@ -296,6 +298,7 @@ public class ICustomLayout extends ComplexPanel implements Paintable, Layout { /** Removes given widget from the layout */ public boolean remove(Widget w) { + client.unregisterPaintable((Paintable) w); String location = getLocation(w); if (location != null) locationToWidget.remove(location); @@ -318,5 +321,4 @@ public class ICustomLayout extends ComplexPanel implements Paintable, Layout { locationToWidget.clear(); widgetToCaptionWrapper.clear(); } - }