aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/tests/featurebrowser/FeatureTree.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/itmill/toolkit/tests/featurebrowser/FeatureTree.java')
-rw-r--r--src/com/itmill/toolkit/tests/featurebrowser/FeatureTree.java184
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 + "'");
+ }
+}