+ 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);
}
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) {
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;
}
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;
+ }
}
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();
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);
}
}
}
}
}
}
-
+
}
public void updateFromUIDL(UIDL uidl, Client client) {
-// Ensure correct implementation
+ // Ensure correct implementation
if (client.replaceComponentWithCorrectImplementation(this, uidl))
return;
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) {
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);
}
}
}
-
}
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 {
}
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) {
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++;
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);
public void updateFromUIDL(UIDL uidl, Client client) {
-// Ensure correct implementation
+ // Ensure correct implementation
if (client.replaceComponentWithCorrectImplementation(this, uidl))
return;
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);
}
}
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);
}
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));
}
}