]> source.dussan.org Git - vaadin-framework.git/commitdiff
svn changeset:1717/svn branch:trunk
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>
Thu, 14 Jun 2007 12:16:12 +0000 (12:16 +0000)
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>
Thu, 14 Jun 2007 12:16:12 +0000 (12:16 +0000)
src/com/itmill/toolkit/terminal/gwt/client/Client.java
src/com/itmill/toolkit/terminal/gwt/client/Layout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkHorizontalLayout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkLabel.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkVerticalLayout.java

index b03ac55cf1dc069df135b67b5bbd53f4f9d87b7d..17e7ff622f5f7a8a290729c7224ca167c12b253d 100755 (executable)
@@ -17,6 +17,7 @@ import com.google.gwt.json.client.JSONValue;
 import com.google.gwt.user.client.ui.RootPanel;
 import com.google.gwt.user.client.ui.Widget;
 import com.itmill.toolkit.terminal.gwt.client.ui.TkButton;
+import com.itmill.toolkit.terminal.gwt.client.ui.TkLabel;
 
 /**
  * Entry point classes define <code>onModuleLoad()</code>.
@@ -158,6 +159,7 @@ public class Client implements EntryPoint {
                return w;
        }
 
+
        private void addVariableToQueue(String paintableId, String variableName,
                        String encodedValue, boolean immediate) {
                String id = paintableId + "_" + variableName;
@@ -243,4 +245,10 @@ public class Client implements EntryPoint {
                return true;
        }
 
+       public void delegateCaptionToParent(Widget component, UIDL uidl) {
+               Layout parent = getParentLayout(component);
+               if (parent != null) parent.updateCaption(component, uidl);
+       }
+       
+
 }
index f3053e29adbeaba484a51157ed31f8217aa52bd9..7a897c0f99fd256fc02a6a1b34f35f286ab4abed 100644 (file)
@@ -34,14 +34,13 @@ public interface Layout extends Paintable {
         * Each component is responsible for maintaining its caption, description
         * and error message. In most cases components doesn't want to do that and
         * those elements reside outside of the component. Because of this layouts
-        * should provide service for it's childen to show those elements for them.
+        * msut provide service for it's childen to show those elements for them.
         * </p>
         * 
         * @param component
         *            Child component that requests the service.
         * @param uidl
         *            UIDL of the child component.
-        * @return true iff this layout updated caption succesfully.
         */
-       boolean updateCaption(Widget component, UIDL uidl);
+       void updateCaption(Widget component, UIDL uidl);
 }
index 47ee39fad7d6b433349639927368c85750993faf..61aa86f5d8f4372a20b9250330f5bdb317ba8d11 100644 (file)
@@ -1,9 +1,11 @@
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
+import java.util.HashMap;
 import java.util.Iterator;
 
 import com.google.gwt.user.client.ui.HorizontalPanel;
 import com.google.gwt.user.client.ui.Widget;
+import com.itmill.toolkit.terminal.gwt.client.CaptionWrapper;
 import com.itmill.toolkit.terminal.gwt.client.Client;
 import com.itmill.toolkit.terminal.gwt.client.Layout;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
@@ -11,6 +13,8 @@ import com.itmill.toolkit.terminal.gwt.client.UIDL;
 
 public class TkHorizontalLayout extends HorizontalPanel implements Paintable, Layout {
 
+       private HashMap componentToWrapper = new HashMap();
+
        public void updateFromUIDL(UIDL uidl, Client client) {
                
 //              Ensure correct implementation
@@ -27,7 +31,13 @@ public class TkHorizontalLayout extends HorizontalPanel implements Paintable, La
                }
        }
 
+
        public void replaceChildComponent(Widget from, Widget to) {
+               CaptionWrapper wrapper = (CaptionWrapper) componentToWrapper.get(from);
+               if (wrapper != null) {
+                       componentToWrapper.remove(from);
+                       from = wrapper;
+               }
                int index = getWidgetIndex(from);
                if (index >= 0) {
                        remove(index);
@@ -35,16 +45,30 @@ public class TkHorizontalLayout extends HorizontalPanel implements Paintable, La
                }
        }
 
-       public boolean hasChildComponent(Widget paintable) {
-               return getWidgetIndex(paintable) >= 0;
+       public boolean hasChildComponent(Widget component) {
+               return getWidgetIndex(component) >= 0 || componentToWrapper.get(component) != null;
        }
 
-       public boolean updateCaption(Widget component, UIDL uidl) {
-               
-               if (!hasChildComponent(component) || uidl == null) return false;
+       public void updateCaption(Widget component, UIDL uidl) {
                
-               
-               return false;
+               CaptionWrapper wrapper = (CaptionWrapper) componentToWrapper.get(component);
+               if (CaptionWrapper.isNeeded(uidl)) {
+                       if (wrapper == null) {
+                               wrapper = new CaptionWrapper(component);
+                               componentToWrapper.put(component, wrapper);
+                       }
+                       wrapper.updateCaption(uidl);
+               } else {
+                       if (wrapper != null) { 
+                               int index = getWidgetIndex(wrapper);
+                               if (index >= 0) {
+                                       remove(index);
+                                       insert(wrapper.getWidget(), index);
+                               }
+                               componentToWrapper.remove(component);
+                       }
+               }
        }
-
+       
+       
 }
index 80916d432b2f71306fc43806c98fbe1b20fc7e90..596a53b73390f4fc32e23ef1a8a3bca56d339d4c 100644 (file)
@@ -1,50 +1,26 @@
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.HTML;
-import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.Label;
 import com.itmill.toolkit.terminal.gwt.client.Client;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
 import com.itmill.toolkit.terminal.gwt.client.UIDL;
 
-public class TkLabel extends Composite implements Paintable{
-       
-       com.google.gwt.user.client.ui.Label caption = new com.google.gwt.user.client.ui.Label();;
-       HTML content = new HTML();
-       
-       public TkLabel() {
-               VerticalPanel panel = new VerticalPanel();
-               panel.add(caption);
-               panel.add(content);
-               initWidget(panel);
-               setStyleName("itmtk-label");
-               caption.setStyleName("itmtk-label-caption");
-               content.setStyleName("itmtk-label-content");
-       }
-       
+public class TkLabel extends Label implements Paintable {
+
        public void updateFromUIDL(UIDL uidl, Client client) {
-               try{
-                       UIDL child = uidl.getChildUIDL(0).getChildUIDL(0);
-                       if(child.hasAttribute("xmlns") && 
-                                       child.getStringAttribute("xmlns").
-                                       equals("http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd")) {
-                               setContent(child.getChildString(0));
-                       } else {
-                               setContent("Terminals Label compoent can't handle this content type.");
-                       }
+
+               if (client.replaceComponentWithCorrectImplementation(this, uidl))
+                       return;
+               client.delegateCaptionToParent(this, uidl);
+
+               try {
+                       setText(uidl.getChildString(0));
                } catch (Exception e) {
-                       setContent(uidl.getChildString(0));
+                       setText("");
+
                }
-               if(uidl.hasAttribute("caption"))
-                       setCaption(uidl.getStringAttribute("caption"));
-               else
-                       caption.setVisible(false);
        }
        
-       public void setContent(String c) {
-               content.setHTML(c);
-       }
-       public void setCaption(String c) {
-               caption.setText(c);
-       }
+       
+       
 }
index e61f1b0fa127d5360728643f6818fcbe634d6ae7..086ea8c9eac8db86fb22437ce7e69439af9a14a0 100644 (file)
@@ -1,9 +1,11 @@
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
+import java.util.HashMap;
 import java.util.Iterator;
 
 import com.google.gwt.user.client.ui.VerticalPanel;
 import com.google.gwt.user.client.ui.Widget;
+import com.itmill.toolkit.terminal.gwt.client.CaptionWrapper;
 import com.itmill.toolkit.terminal.gwt.client.Client;
 import com.itmill.toolkit.terminal.gwt.client.Layout;
 import com.itmill.toolkit.terminal.gwt.client.Paintable;
@@ -11,6 +13,8 @@ import com.itmill.toolkit.terminal.gwt.client.UIDL;
 
 public class TkVerticalLayout extends VerticalPanel implements Paintable, Layout {
 
+       private HashMap componentToWrapper = new HashMap();
+       
        public void updateFromUIDL(UIDL uidl, Client client) {
                
 //              Ensure correct implementation
@@ -28,6 +32,11 @@ public class TkVerticalLayout extends VerticalPanel implements Paintable, Layout
        }
 
        public void replaceChildComponent(Widget from, Widget to) {
+               CaptionWrapper wrapper = (CaptionWrapper) componentToWrapper.get(from);
+               if (wrapper != null) {
+                       componentToWrapper.remove(from);
+                       from = wrapper;
+               }
                int index = getWidgetIndex(from);
                if (index >= 0) {
                        remove(index);
@@ -35,16 +44,31 @@ public class TkVerticalLayout extends VerticalPanel implements Paintable, Layout
                }
        }
 
-       public boolean hasChildComponent(Widget paintable) {
-               return getWidgetIndex(paintable) >= 0;
+       public boolean hasChildComponent(Widget component) {
+               return getWidgetIndex(component) >= 0 || componentToWrapper.get(component) != null;
        }
 
-       public boolean updateCaption(Widget component, UIDL uidl) {
-               
-               if (!hasChildComponent(component) || uidl == null) return false;
+       public void updateCaption(Widget component, UIDL uidl) {
                
-               
-               return false;
+               CaptionWrapper wrapper = (CaptionWrapper) componentToWrapper.get(component);
+               if (CaptionWrapper.isNeeded(uidl)) {
+                       if (wrapper == null) {
+                               int index = getWidgetIndex(component);
+                               wrapper = new CaptionWrapper(component);
+                               insert(wrapper.getWidget(), index);
+                               componentToWrapper.put(component, wrapper);
+                       }
+                       wrapper.updateCaption(uidl);
+               } else {
+                       if (wrapper != null) { 
+                               int index = getWidgetIndex(wrapper);
+                               remove(index);
+                               insert(wrapper.getWidget(), index);
+                               componentToWrapper.remove(component);
+                       }
+               }
        }
+       
+       
 
 }