package com.itmill.toolkit.terminal.gwt.client;
import com.google.gwt.user.client.ui.Widget;
-import com.itmill.toolkit.terminal.gwt.client.ui.Button;
-import com.itmill.toolkit.terminal.gwt.client.ui.GridLayout;
-import com.itmill.toolkit.terminal.gwt.client.ui.Label;
-import com.itmill.toolkit.terminal.gwt.client.ui.OrderedLayout;
-import com.itmill.toolkit.terminal.gwt.client.ui.UnknownComponent;
-import com.itmill.toolkit.terminal.gwt.client.ui.Window;
+import com.itmill.toolkit.terminal.gwt.client.ui.TkButton;
+import com.itmill.toolkit.terminal.gwt.client.ui.TkGridLayout;
+import com.itmill.toolkit.terminal.gwt.client.ui.TkLabel;
+import com.itmill.toolkit.terminal.gwt.client.ui.TkOrderedLayout;
+import com.itmill.toolkit.terminal.gwt.client.ui.TkTree;
+import com.itmill.toolkit.terminal.gwt.client.ui.TkUnknownComponent;
+import com.itmill.toolkit.terminal.gwt.client.ui.TkWindow;
public class DefaultWidgetFactory implements WidgetFactory {
public Widget createWidget(String tag, String theme) {
if ("button".equals(tag))
- return new Button();
+ return new TkButton();
if ("window".equals(tag))
- return new Window();
+ return new TkWindow();
if ("orderedlayout".equals(tag))
- return new OrderedLayout();
+ return new TkOrderedLayout();
if ("label".equals(tag))
- return new Label();
+ return new TkLabel();
if ("gridlayout".equals(tag))
- return new GridLayout();
+ return new TkGridLayout();
+ if ("tree".equals(tag))
+ return new TkTree();
- return new UnknownComponent();
+ return new TkUnknownComponent();
}
}
--- /dev/null
+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.Tree;
+import com.google.gwt.user.client.ui.TreeItem;
+import com.google.gwt.user.client.ui.VerticalPanel;
+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 TkTree extends Composite implements Paintable {
+
+ Label caption = new Label();
+ Tree tree = new Tree();
+
+ public TkTree() {
+ VerticalPanel panel = new VerticalPanel();
+ panel.add(caption);
+ panel.add(tree);
+ initWidget(panel);
+ }
+
+ public void updateFromUIDL(UIDL uidl, Client client) {
+
+ if (uidl.hasAttribute("caption")) caption.setText(uidl.getStringAttribute("caption"));
+
+ TreeItem rootNode = new TreeItem();
+ for (Iterator i = uidl.getChildIterator(); i.hasNext();) {
+ UIDL childUidl = (UIDL)i.next();
+ if(childUidl.getTag().equals("leaf"))
+ rootNode.addItem(childUidl.getStringAttribute("caption"));
+ if(childUidl.getTag().equals("node")) {
+ TreeNode childTree = new TreeNode();
+ childTree.updateFromUIDL(childUidl, client);
+ if(uidl.getBooleanAttribute("expanded"))
+ childTree.setState(true);
+ rootNode.addItem(childTree);
+ }
+ }
+ }
+ private class TreeNode extends TreeItem {
+
+ public void updateFromUIDL(UIDL uidl, Client client) {
+ this.setText(uidl.getStringAttribute("caption"));
+ for (Iterator i = uidl.getChildIterator(); i.hasNext();) {
+ UIDL childUidl = (UIDL)i.next();
+ if(childUidl.getTag().equals("leaf"))
+ this.addItem(childUidl.getStringAttribute("caption"));
+ if(childUidl.getTag().equals("node")) {
+ TreeNode childTree = new TreeNode();
+ childTree.updateFromUIDL(childUidl, client);
+ this.addItem(childTree);
+ }
+ }
+ if(uidl.getBooleanAttribute("expanded"))
+ setState(true);
+ }
+ }
+}