From: Joonas Lehtinen Date: Thu, 14 Jun 2007 12:56:01 +0000 (+0000) Subject: Now captions almost work :) X-Git-Tag: 6.7.0.beta1~6262 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3a85ab6c2d37d8a36c5e744aaf2ec514ee1dfe21;p=vaadin-framework.git Now captions almost work :) svn changeset:1720/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/terminal/gwt/client/Client.java b/src/com/itmill/toolkit/terminal/gwt/client/Client.java index 17e7ff622f..5c805b923a 100755 --- a/src/com/itmill/toolkit/terminal/gwt/client/Client.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/Client.java @@ -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; + } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkGridLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkGridLayout.java index 6a6e7bacae..c8eb36906b 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkGridLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkGridLayout.java @@ -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); } } } } } } - + } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkHorizontalLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkHorizontalLayout.java index 61aa86f5d8..ca70d56b97 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkHorizontalLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkHorizontalLayout.java @@ -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); } } } - } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkLabel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkLabel.java index 596a53b733..9004f6fd18 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkLabel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkLabel.java @@ -20,7 +20,4 @@ public class TkLabel extends Label implements Paintable { } } - - - } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkPanel.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkPanel.java index 225ef46872..e665200a47 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkPanel.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkPanel.java @@ -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 { } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTable.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTable.java index 1c79acb993..cea85306e3 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTable.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTable.java @@ -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) { diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTabsheet.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTabsheet.java index 373f869cbb..bf2a857c89 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTabsheet.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTabsheet.java @@ -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); diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkVerticalLayout.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkVerticalLayout.java index 086ea8c9ea..fa2b2a1d95 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkVerticalLayout.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkVerticalLayout.java @@ -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); } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkWindow.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkWindow.java index 6b69d7d79e..43d9e391cb 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkWindow.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkWindow.java @@ -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)); } }