]> source.dussan.org Git - vaadin-framework.git/commitdiff
added tree component
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 8 Jun 2007 06:03:37 +0000 (06:03 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Fri, 8 Jun 2007 06:03:37 +0000 (06:03 +0000)
svn changeset:1641/svn branch:trunk

src/com/itmill/toolkit/terminal/gwt/client/DefaultWidgetFactory.java
src/com/itmill/toolkit/terminal/gwt/client/ui/TkTree.java [new file with mode: 0644]

index 3d144da418931a796e233a2ec4b0ac74f535b406..f6a4646c10e504073b283d964e3bc39ac78bd7ba 100644 (file)
@@ -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 (file)
index 0000000..5e9aa58
--- /dev/null
@@ -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);
+               }
+       }
+}