aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/demo/features/FeatureTree.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/itmill/toolkit/demo/features/FeatureTree.java')
-rw-r--r--src/com/itmill/toolkit/demo/features/FeatureTree.java206
1 files changed, 206 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/demo/features/FeatureTree.java b/src/com/itmill/toolkit/demo/features/FeatureTree.java
new file mode 100644
index 0000000000..b832655772
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/features/FeatureTree.java
@@ -0,0 +1,206 @@
+/* *************************************************************************
+
+ IT Mill Toolkit
+
+ Development of Browser User Intarfaces 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/license.txt. Use of this product might
+ require purchasing a commercial license from IT Mill Ltd. For guidelines
+ on usage, see license/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.demo.features;
+
+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();
+
+ // Create names
+ Panel show = new Panel("Tree component");
+ 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("Family Tree");
+ 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);
+
+ show.addComponent(t);
+ l.addComponent(show);
+
+ // 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 p = new PropertyPanel(t);
+ Form ap = p.createBeanPropertySet(new String[] { "selectable" });
+ Select themes = (Select) p.getField("style");
+ themes
+ .addItem("menu")
+ .getItemProperty(themes.getItemCaptionPropertyId())
+ .setValue("menu");
+ p.addProperties("Tree Properties", ap);
+ l.addComponent(p);
+
+ return l;
+ }
+
+ protected String getExampleSrc() {
+ return "// Create tree\n"
+ + "t = new Tree(\"Family Tree\");\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 "<p>A tree is a natural way to represent datasets that have"
+ + " hierarchical relationships, such as filesystems, message "
+ + "threads or... family trees. Millstone features a versatile "
+ + "and powerful Tree component that works much like the tree components "
+ + "of most modern operating systems. </p>"
+ + "<p>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.</p>"
+ + "<p>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. </p><p>On "
+ + "the demo tab you can try out how the different properties "
+ + "affect the presentation of the tree component.</p>";
+ }
+
+ protected String getImage() {
+ return "tree.jpg";
+ }
+
+ 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
+ + "'");
+ }
+}