From 8abfce503e03e90d992d2362ed8355528c63c6fe Mon Sep 17 00:00:00 2001 From: Matti Tahvonen Date: Fri, 8 Jun 2007 06:03:37 +0000 Subject: [PATCH] added tree component svn changeset:1641/svn branch:trunk --- .../gwt/client/DefaultWidgetFactory.java | 27 ++++---- .../terminal/gwt/client/ui/TkTree.java | 62 +++++++++++++++++++ 2 files changed, 77 insertions(+), 12 deletions(-) create mode 100644 src/com/itmill/toolkit/terminal/gwt/client/ui/TkTree.java diff --git a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java index 3d144da418..f6a4646c10 100644 --- a/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java +++ b/src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java @@ -1,29 +1,32 @@ 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(); } } diff --git a/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTree.java b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTree.java new file mode 100644 index 0000000000..5e9aa5828d --- /dev/null +++ b/src/com/itmill/toolkit/terminal/gwt/client/ui/TkTree.java @@ -0,0 +1,62 @@ +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); + } + } +} -- 2.39.5