]> source.dussan.org Git - vaadin-framework.git/commitdiff
Now captions almost work :)
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>
Thu, 14 Jun 2007 12:56:01 +0000 (12:56 +0000)
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>
Thu, 14 Jun 2007 12:56:01 +0000 (12:56 +0000)
svn changeset:1720/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/Client.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkGridLayout.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/TkPanel.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkTable.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkTabsheet.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkVerticalLayout.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkWindow.java

index 17e7ff622f5f7a8a290729c7224ca167c12b253d..5c805b923ab7d286227d56c7fe12cdda6c46f459 100755 (executable)
@@ -127,7 +127,11 @@ public class Client implements EntryPoint {
                                                                + uidl.getTag()
                                                                + ", but there is no such paintable ("
                                                                + uidl.getId() + ") registered yet.");
-                                       Widget window = createWidgetFromUIDL(uidl);
+                                       Widget window = widgetFactory.createWidget(uidl);
+                                       registerPaintable(uidl.getId(), (Paintable) window);
+                                       ((Paintable)window).updateFromUIDL(uidl, this);
+
+                                       
                                        // TODO We should also handle other windows 
                                        RootPanel.get("itmtk-ajax-window").add(window);
                                }
@@ -149,16 +153,14 @@ public class Client implements EntryPoint {
        public Paintable getPaintable(String id) {
                return (Paintable) paintables.get(id);
        }
-
+/*
        public Widget createWidgetFromUIDL(UIDL uidlForChild) {
                Widget w = widgetFactory.createWidget(uidlForChild);
-               if (w instanceof Paintable) {
                        registerPaintable(uidlForChild.getId(), (Paintable) w);
                        ((Paintable)w).updateFromUIDL(uidlForChild, this);
-               }
                return w;
        }
-
+*/
 
        private void addVariableToQueue(String paintableId, String variableName,
                        String encodedValue, boolean immediate) {
@@ -241,7 +243,11 @@ public class Client implements EntryPoint {
                if (widgetFactory.isCorrectImplementation(currentWidget, uidl)) return false;
                Layout parent = getParentLayout(currentWidget);
                if (parent == null) return false;
-               parent.replaceChildComponent(currentWidget, createWidgetFromUIDL(uidl));
+               Widget w = widgetFactory.createWidget(uidl);
+               registerPaintable(uidl.getId(), (Paintable) w);
+               parent.replaceChildComponent(currentWidget, w);
+               ((Paintable)w).updateFromUIDL(uidl, this);
+
                return true;
        }
 
@@ -250,5 +256,13 @@ public class Client implements EntryPoint {
                if (parent != null) parent.updateCaption(component, uidl);
        }
        
+       public Widget getWidget(UIDL uidl) {
+               String id = uidl.getId();
+               Widget w = (Widget) getPaintable(id);
+               if (w != null) return w;
+               w = widgetFactory.createWidget(uidl);
+               registerPaintable(id, (Paintable)w);
+               return w;
+       }
 
 }
index 6a6e7bacae820aef3c9b26aa8ad054678580d1bd..c8eb36906b8985f3e2f59ece940bff9b8dcbea95 100644 (file)
@@ -12,7 +12,8 @@ public class TkGridLayout extends FlexTable implements Paintable {
 
        public void updateFromUIDL(UIDL uidl, Client client) {
                clear();
-               if (uidl.hasAttribute("caption")) setTitle(uidl.getStringAttribute("caption"));
+               if (uidl.hasAttribute("caption"))
+                       setTitle(uidl.getStringAttribute("caption"));
                int row = 0, column = 0;
                for (Iterator i = uidl.getChildIterator(); i.hasNext();) {
                        UIDL r = (UIDL) i.next();
@@ -23,21 +24,21 @@ public class TkGridLayout extends FlexTable implements Paintable {
                                        UIDL c = (UIDL) j.next();
                                        if ("gc".equals(c.getTag())) {
                                                column++;
-                                               if(c.hasAttribute("w")) {
+                                               if (c.hasAttribute("w")) {
                                                        int w = c.getIntAttribute("w");
-                                                       ((FlexCellFormatter)getCellFormatter()).setColSpan(row,column, w);
+                                                       ((FlexCellFormatter) getCellFormatter())
+                                                                       .setColSpan(row, column, w);
                                                }
-                                               UIDL u = c.getChildUIDL(0);                             
+                                               UIDL u = c.getChildUIDL(0);
                                                if (u != null) {
-                                               Widget child = client.createWidgetFromUIDL(u);
-                                               if (child != null)
+                                                       Widget child = client.getWidget(u);
                                                        setWidget(row, column, child);
-                                               
+                                                       ((Paintable) child).updateFromUIDL(u, client);
                                                }
                                        }
                                }
                        }
                }
        }
-       
+
 }
index 61aa86f5d8f4372a20b9250330f5bdb317ba8d11..ca70d56b978ed256f0258fe79adffd9e5e1c9962 100644 (file)
@@ -17,7 +17,7 @@ public class TkHorizontalLayout extends HorizontalPanel implements Paintable, La
 
        public void updateFromUIDL(UIDL uidl, Client client) {
                
-//              Ensure correct implementation
+               // Ensure correct implementation
                if (client.replaceComponentWithCorrectImplementation(this, uidl))
                        return;
 
@@ -26,12 +26,12 @@ public class TkHorizontalLayout extends HorizontalPanel implements Paintable, La
                
                for (Iterator i = uidl.getChildIterator(); i.hasNext();) {
                        UIDL uidlForChild = (UIDL) i.next();
-                       Widget child = client.createWidgetFromUIDL(uidlForChild);
+                       Widget child = client.getWidget(uidlForChild);
                        add(child);
+                       ((Paintable)child).updateFromUIDL(uidlForChild, client);
                }
        }
-
-
+       
        public void replaceChildComponent(Widget from, Widget to) {
                CaptionWrapper wrapper = (CaptionWrapper) componentToWrapper.get(from);
                if (wrapper != null) {
@@ -54,21 +54,21 @@ public class TkHorizontalLayout extends HorizontalPanel implements Paintable, La
                CaptionWrapper wrapper = (CaptionWrapper) componentToWrapper.get(component);
                if (CaptionWrapper.isNeeded(uidl)) {
                        if (wrapper == null) {
+                               int index = getWidgetIndex(component);
+                               remove(component);
                                wrapper = new CaptionWrapper(component);
+                               insert(wrapper, index);
                                componentToWrapper.put(component, wrapper);
                        }
                        wrapper.updateCaption(uidl);
                } else {
                        if (wrapper != null) { 
                                int index = getWidgetIndex(wrapper);
-                               if (index >= 0) {
-                                       remove(index);
-                                       insert(wrapper.getWidget(), index);
-                               }
+                               remove(wrapper);
+                               insert(wrapper.getWidget(), index);
                                componentToWrapper.remove(component);
                        }
                }
        }
        
-       
 }
index 596a53b73390f4fc32e23ef1a8a3bca56d339d4c..9004f6fd18d284da7e0e8d3c2da635234359a068 100644 (file)
@@ -20,7 +20,4 @@ public class TkLabel extends Label implements Paintable {
 
                }
        }
-       
-       
-       
 }
index 225ef46872e40f65e3144d9969493ac17fcd5ca6..e665200a477217f68c129708d6b4f449226f88b3 100644 (file)
@@ -1,35 +1,6 @@
 package com.itmill.toolkit.terminal.gwt.client.ui;
 
-import java.util.Iterator;
-
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.Panel;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.google.gwt.user.client.ui.Widget;
-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 TkPanel extends Composite implements Paintable {
-
-       Panel p = new VerticalPanel();
-       Label caption = new Label();
 
-       public TkPanel() {
-               p.add(caption);
-               initWidget(p);
-       }
-       
-       public void updateFromUIDL(UIDL uidl, Client client) {
-               p.clear();
-               p.add(caption);
-               
-               if(uidl.hasAttribute("caption"));
-               caption.setText(uidl.getStringAttribute("caption"));
-               
-               Iterator it = uidl.getChildIterator();
-               while(it.hasNext())
-                       p.add(client.createWidgetFromUIDL((UIDL) it.next()));
-       }
+public class TkPanel extends TkVerticalLayout implements Paintable {
 }
index 1c79acb9931123d4459f7551764402523cb9d891..cea85306e3ddae73ea0eb00535d8d83c2c67162c 100644 (file)
@@ -191,8 +191,9 @@ public class TkTable extends Composite implements Paintable, ScrollListener {
        public void setCellContent(int rowId, int colId, UIDL cell) {
                if(cell == null)
                        return;
-               Widget cellContent = client.createWidgetFromUIDL(cell);
+               Widget cellContent = client.getWidget(cell);
                tBody.setWidget(rowId, colId, cellContent);
+               ((Paintable)cell).updateFromUIDL(cell, client);
        }
        
        public void setCellContent(int rowId, int colId, String text) {
index 373f869cbbe38238dbd98e9cc528c40ef6dae47e..bf2a857c8928da8513483eca8a530110a521c46a 100644 (file)
@@ -75,12 +75,14 @@ public class TkTabsheet extends TabPanel implements Paintable {
                                UIDL tab = (UIDL) it.next();
                                if (tab.getBooleanAttribute("selected")) {
                                        activeTabIndex = index;
-                                       Widget content = client.createWidgetFromUIDL(tab
+                                       Widget content = client.getWidget(tab
                                                        .getChildUIDL(0));
                                        getTabBar().selectTab(index);
                                        DeckPanel dp = getDeckPanel();
                                        dp.remove(index);
                                        dp.insert(content, index);
+                                       ((Paintable)content).updateFromUIDL(tab
+                                                       .getChildUIDL(0), client);
                                        dp.showWidget(index);
                                }
                                index++;
@@ -98,9 +100,11 @@ public class TkTabsheet extends TabPanel implements Paintable {
                                tabKeys.add(key);
                                if (tab.getBooleanAttribute("selected")) {
                                        activeTabIndex = index;
-                                       Widget content = client.createWidgetFromUIDL(tab
+                                       Widget content = client.getWidget(tab
                                                        .getChildUIDL(0));
                                        this.add(content, caption);
+                                       ((Paintable)content).updateFromUIDL(tab
+                                                       .getChildUIDL(0), client);
                                        this.selectTab(this.getWidgetIndex(content));
                                } else {
                                        this.add(new Label(), caption);
index 086ea8c9eac8db86fb22437ce7e69439af9a14a0..fa2b2a1d952f68f7c1ea05dacdc69fd89630f8ca 100644 (file)
@@ -17,7 +17,7 @@ public class TkVerticalLayout extends VerticalPanel implements Paintable, Layout
        
        public void updateFromUIDL(UIDL uidl, Client client) {
                
-//              Ensure correct implementation
+               // Ensure correct implementation
                if (client.replaceComponentWithCorrectImplementation(this, uidl))
                        return;
 
@@ -26,8 +26,9 @@ public class TkVerticalLayout extends VerticalPanel implements Paintable, Layout
                
                for (Iterator i = uidl.getChildIterator(); i.hasNext();) {
                        UIDL uidlForChild = (UIDL) i.next();
-                       Widget child = client.createWidgetFromUIDL(uidlForChild);
+                       Widget child = client.getWidget(uidlForChild);
                        add(child);
+                       ((Paintable)child).updateFromUIDL(uidlForChild, client);
                }
        }
 
@@ -54,15 +55,16 @@ public class TkVerticalLayout extends VerticalPanel implements Paintable, Layout
                if (CaptionWrapper.isNeeded(uidl)) {
                        if (wrapper == null) {
                                int index = getWidgetIndex(component);
+                               remove(component);
                                wrapper = new CaptionWrapper(component);
-                               insert(wrapper.getWidget(), index);
+                               insert(wrapper, index);
                                componentToWrapper.put(component, wrapper);
                        }
                        wrapper.updateCaption(uidl);
                } else {
                        if (wrapper != null) { 
                                int index = getWidgetIndex(wrapper);
-                               remove(index);
+                               remove(wrapper);
                                insert(wrapper.getWidget(), index);
                                componentToWrapper.remove(component);
                        }
index 6b69d7d79eeb9337bb809eef06a13a1487178d70..43d9e391cb7c11e5f02f97428f253949916d8626 100644 (file)
@@ -5,21 +5,11 @@ 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 TkWindow extends FlowPanel implements Paintable {
-
-       String id;
-
-       public TkWindow() {
-               super();
-       }
+public class TkWindow extends TkVerticalLayout implements Paintable {
        
        public void updateFromUIDL(UIDL uidl, Client client) {
-
-               id = uidl.getId();
+               super.updateFromUIDL( uidl,  client);
                com.google.gwt.user.client.Window.setTitle(uidl.getStringAttribute("caption"));
-               clear();
-               UIDL child = uidl.getChildUIDL(0);
-               add(client.createWidgetFromUIDL(child));
        }
 
 }