diff options
Diffstat (limited to 'src/com/itmill/toolkit/tests/featurebrowser/FeatureTree.java')
-rw-r--r-- | src/com/itmill/toolkit/tests/featurebrowser/FeatureTree.java | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/tests/featurebrowser/FeatureTree.java b/src/com/itmill/toolkit/tests/featurebrowser/FeatureTree.java new file mode 100644 index 0000000000..160fdfe6a4 --- /dev/null +++ b/src/com/itmill/toolkit/tests/featurebrowser/FeatureTree.java @@ -0,0 +1,184 @@ +/* ************************************************************************* + + IT Mill Toolkit + + Development of Browser User Interfaces Made Easy + + Copyright (C) 2000-2006 IT Mill Ltd + + ************************************************************************* + + This product is distributed under commercial license that can be found + from the product package on license.pdf. Use of this product might + require purchasing a commercial license from IT Mill Ltd. For guidelines + on usage, see licensing-guidelines.html + + ************************************************************************* + + For more information, contact: + + IT Mill Ltd phone: +358 2 4802 7180 + Ruukinkatu 2-4 fax: +358 2 4802 7181 + 20540, Turku email: info@itmill.com + Finland company www: www.itmill.com + + Primary source for information and releases: www.itmill.com + + ********************************************************************** */ + +package com.itmill.toolkit.tests.featurebrowser; + +import java.util.Iterator; + +import com.itmill.toolkit.event.Action; +import com.itmill.toolkit.ui.*; + +public class FeatureTree extends Feature implements Action.Handler { + + private static final String[] firstnames = new String[] { "John", "Mary", + "Joe", "Sarah", "Jeff", "Jane", "Peter", "Marc", "Josie", "Linus" }; + + private static final String[] lastnames = new String[] { "Torvalds", + "Smith", "Jones", "Beck", "Sheridan", "Picard", "Hill", "Fielding", + "Einstein" }; + + private Tree t; + + private boolean actionsActive = false; + + private Button actionHandlerSwitch = new Button("Activate actions", this, + "toggleActions"); + + public FeatureTree() { + super(); + } + + public void toggleActions() { + if (actionsActive) { + t.removeActionHandler(this); + actionsActive = false; + actionHandlerSwitch.setCaption("Activate Actions"); + } else { + t.addActionHandler(this); + actionsActive = true; + actionHandlerSwitch.setCaption("Deactivate Actions"); + } + } + + public void expandAll() { + for (Iterator i = t.rootItemIds().iterator(); i.hasNext();) { + t.expandItemsRecursively(i.next()); + } + } + + public void collapseAll() { + for (Iterator i = t.rootItemIds().iterator(); i.hasNext();) { + t.collapseItemsRecursively(i.next()); + } + } + + protected Component getDemoComponent() { + + OrderedLayout l = new OrderedLayout(); + + String[] names = new String[100]; + for (int i = 0; i < names.length; i++) + names[i] = firstnames[(int) (Math.random() * (firstnames.length - 1))] + + " " + + lastnames[(int) (Math.random() * (lastnames.length - 1))]; + + // Create tree + t = new Tree("Organization Structure"); + for (int i = 0; i < 100; i++) { + t.addItem(names[i]); + String parent = names[(int) (Math.random() * (names.length - 1))]; + if (t.containsId(parent)) + t.setParent(names[i], parent); + } + + // Forbid childless people to have children (makes them leaves) + for (int i = 0; i < 100; i++) + if (!t.hasChildren(names[i])) + t.setChildrenAllowed(names[i], false); + + l.addComponent(t); + + // Actions + l.addComponent(this.actionHandlerSwitch); + + // Expand and Collapse buttons + l.addComponent(new Button("Expand All", this, "expandAll")); + l.addComponent(new Button("Collapse All", this, "collapseAll")); + + // Properties + propertyPanel = new PropertyPanel(t); + Form ap = propertyPanel + .createBeanPropertySet(new String[] { "selectable" }); + Select themes = (Select) propertyPanel.getField("style"); + themes.addItem("menu").getItemProperty( + themes.getItemCaptionPropertyId()).setValue("menu"); + propertyPanel.addProperties("Tree Properties", ap); + + setJavadocURL("ui/Tree.html"); + + return l; + } + + protected String getExampleSrc() { + return "// Create tree\n" + + "t = new Tree(\"Organization Structure\");\n" + + "for (int i = 0; i < 100; i++) {\n" + + " t.addItem(names[i]);\n" + + " String parent = names[(int) (Math.random() * (names.length - 1))];\n" + + " if (t.containsId(parent)) \n" + + " t.setParent(names[i],parent);\n" + + "}\n\n" + + "// Forbid childless people to have children (makes them leaves)\n" + + "for (int i = 0; i < 100; i++)\n" + + " if (!t.hasChildren(names[i]))\n" + + " t.setChildrenAllowed(names[i], false);\n"; + } + + protected String getDescriptionXHTML() { + return "A tree is a natural way to represent datasets that have" + + " hierarchical relationships, such as filesystems, message " + + "threads or, as in this example, organization structure. IT Mill Toolkit features a versatile " + + "and powerful Tree component that works much like the tree components " + + "of most modern operating systems." + + "<br /><br />The most prominent use of the Tree component is to " + + "use it for displaying a hierachical menu, like the " + + "menu on the left side of the screen for instance " + + "or to display filesystems or other hierarchical datasets." + + "<br /><br />The tree component uses <code>Container</code> " + + "datasources much like the Table component, " + + "with the addition that it also utilizes the hierarchy " + + "information maintained by the container." + + "<br /><br />On the demo tab you can try out how the different properties " + + "affect the presentation of the tree component."; + } + + protected String getImage() { + return "icon_demo.png"; + } + + protected String getTitle() { + return "Tree"; + } + + private Action ACTION1 = new Action("Action 1"); + + private Action ACTION2 = new Action("Action 2"); + + private Action ACTION3 = new Action("Action 3"); + + private Action[] actions = new Action[] { ACTION1, ACTION2, ACTION3 }; + + public Action[] getActions(Object target, Object sender) { + return actions; + } + + public void handleAction(Action action, Object sender, Object target) { + t.setDescription("Last action clicked was '" + action.getCaption() + + "' on item '" + target + "'"); + } +} |