]> source.dussan.org Git - vaadin-framework.git/commitdiff
Added method to ApplicationConnection to unregister Paintable, custom layout uses it
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 3 Aug 2007 10:16:04 +0000 (10:16 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 3 Aug 2007 10:16:04 +0000 (10:16 +0000)
svn changeset:1949/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/ApplicationConnection.java
src/com/itmill/toolkit/terminal/gwt/client/ui/ICustomLayout.java

index b50b05ef61eabb79ce460ff686d5f2e77ea4a6a4..9dfbb46aef92f640fd4531fae06d57c2b36a949f 100755 (executable)
@@ -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 <code>onModuleLoad()</code>.
  */
-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
+               
+       }
 }
index 3d6b11e9ad683eacfc613c64c468aca07da067d6..b03c1b3d0314824449f92d8514bf443ddd1d22a5 100644 (file)
@@ -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();
        }
-
 }