aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/itmill/toolkit/automatedtests/featurebrowser/TreeExample.java
diff options
context:
space:
mode:
authorJani Laakso <jani.laakso@itmill.com>2008-04-07 15:38:15 +0000
committerJani Laakso <jani.laakso@itmill.com>2008-04-07 15:38:15 +0000
commitf51577b7567821f8bb13ecaa60eb101f708e6147 (patch)
tree10cef62ed79d94aba6e83d76f0b753f1f3cc1410 /src/com/itmill/toolkit/automatedtests/featurebrowser/TreeExample.java
parent638fe9899be27b8f4f92dc4750f813c1210ecb1f (diff)
downloadvaadin-framework-f51577b7567821f8bb13ecaa60eb101f708e6147.tar.gz
vaadin-framework-f51577b7567821f8bb13ecaa60eb101f708e6147.zip
Created com.itmill.toolkit.automatedtests package which contains "official" automated tests
* do not touch them unless you change automated test client's testcase scripts too. * copy your testing application to package com.itmill.toolkit.automatedtests * do not point to "development / testing / production" packages which are edited in the future without relation to testing * use setDebugId's for all components that are used in testing Moved few classes from "experimental" com.itmill.toolkit.tests package into "official" side. Copied featurebrowser to automatedtests package and added setDebugId's for most components that are used in the testing. svn changeset:4138/svn branch:trunk
Diffstat (limited to 'src/com/itmill/toolkit/automatedtests/featurebrowser/TreeExample.java')
-rw-r--r--src/com/itmill/toolkit/automatedtests/featurebrowser/TreeExample.java161
1 files changed, 161 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/automatedtests/featurebrowser/TreeExample.java b/src/com/itmill/toolkit/automatedtests/featurebrowser/TreeExample.java
new file mode 100644
index 0000000000..f5c0bd5042
--- /dev/null
+++ b/src/com/itmill/toolkit/automatedtests/featurebrowser/TreeExample.java
@@ -0,0 +1,161 @@
+/*
+@ITMillApache2LicenseForJavaFiles@
+ */
+
+package com.itmill.toolkit.automatedtests.featurebrowser;
+
+import com.itmill.toolkit.data.Item;
+import com.itmill.toolkit.data.Property;
+import com.itmill.toolkit.data.Property.ValueChangeEvent;
+import com.itmill.toolkit.event.Action;
+import com.itmill.toolkit.ui.AbstractSelect;
+import com.itmill.toolkit.ui.CustomComponent;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.OrderedLayout;
+import com.itmill.toolkit.ui.Panel;
+import com.itmill.toolkit.ui.TextField;
+import com.itmill.toolkit.ui.Tree;
+
+/**
+ * Demonstrates basic Tree -functionality. Actions are used for add/remove item
+ * functionality, and a ValueChangeListener reacts to both the Tree and the
+ * TextField.
+ */
+public class TreeExample extends CustomComponent implements Action.Handler,
+ Tree.ValueChangeListener {
+
+ private static final Action ADD = new Action("Add item");
+ private static final Action DELETE = new Action("Delete item");
+ private static final Action[] actions = new Action[] { ADD, DELETE };
+
+ // Id for the caption property
+ private static final Object CAPTION_PROPERTY = "caption";
+
+ private static final String desc = "Try both right- and left-click!";
+
+ Tree tree;
+ TextField editor;
+
+ public TreeExample() {
+ final OrderedLayout main = new OrderedLayout(
+ OrderedLayout.ORIENTATION_HORIZONTAL);
+ main.setDebugId("mainLayout");
+ main.setMargin(true);
+ setCompositionRoot(main);
+
+ // Panel w/ Tree
+ Panel p = new Panel("Select item");
+ p.setStyleName(Panel.STYLE_LIGHT);
+ p.setWidth(250);
+ // Description
+ p.addComponent(new Label(desc));
+ // Tree with a few items
+ tree = new Tree();
+ tree.setDebugId("tree");
+ tree.setImmediate(true);
+ // we'll use a property for caption instead of the item id ("value"),
+ // so that multiple items can have the same caption
+ tree.addContainerProperty(CAPTION_PROPERTY, String.class, "");
+ tree.setItemCaptionMode(AbstractSelect.ITEM_CAPTION_MODE_PROPERTY);
+ tree.setItemCaptionPropertyId(CAPTION_PROPERTY);
+ for (int i = 1; i <= 3; i++) {
+ final Object id = addCaptionedItem("Section " + i, null);
+ tree.expandItem(id);
+ addCaptionedItem("Team A", id);
+ addCaptionedItem("Team B", id);
+ }
+ // listen for selections
+ tree.addListener(this);
+ // "context menu"
+ tree.addActionHandler(this);
+ p.addComponent(tree);
+ main.addComponent(p);
+
+ // Panel w/ TextField ("editor")
+ p = new Panel("Edit item caption");
+ p.setStyleName(Panel.STYLE_LIGHT);
+ editor = new TextField();
+ // make immediate, instead of adding an "apply" button
+ editor.setImmediate(true);
+ editor.setEnabled(false);
+ editor.setColumns(15);
+ p.addComponent(editor);
+ main.addComponent(p);
+ }
+
+ public Action[] getActions(Object target, Object sender) {
+ // We can provide different actions for each target (item), but we'll
+ // use the same actions all the time.
+ return actions;
+ }
+
+ public void handleAction(Action action, Object sender, Object target) {
+ if (action == DELETE) {
+ tree.removeItem(target);
+ } else {
+ // Add
+ final Object id = addCaptionedItem("New Item", target);
+ tree.expandItem(target);
+ tree.setValue(id);
+ editor.focus();
+ }
+ }
+
+ public void valueChange(ValueChangeEvent event) {
+ final Object id = tree.getValue(); // selected item id
+ if (event.getProperty() == tree) {
+ // a Tree item was (un) selected
+ if (id == null) {
+ // no selecteion, disable TextField
+ editor.removeListener(this);
+ editor.setValue("");
+ editor.setEnabled(false);
+ } else {
+ // item selected
+ // first remove previous listener
+ editor.removeListener(this);
+ // enable TextField and update value
+ editor.setEnabled(true);
+ final Item item = tree.getItem(id);
+ editor.setValue(item.getItemProperty(CAPTION_PROPERTY)
+ .getValue());
+ // listen for TextField changes
+ editor.addListener(this);
+ editor.focus();
+ }
+ } else {
+ // TextField
+ if (id != null) {
+ final Item item = tree.getItem(id);
+ final Property p = item.getItemProperty(CAPTION_PROPERTY);
+ p.setValue(editor.getValue());
+ tree.requestRepaint();
+ }
+
+ }
+ }
+
+ /**
+ * Helper to add an item with specified caption and (optional) parent.
+ *
+ * @param caption
+ * The item caption
+ * @param parent
+ * The (optional) parent item id
+ * @return the created item's id
+ */
+ private Object addCaptionedItem(String caption, Object parent) {
+ // add item, let tree decide id
+ final Object id = tree.addItem();
+ // get the created item
+ final Item item = tree.getItem(id);
+ // set our "caption" property
+ final Property p = item.getItemProperty(CAPTION_PROPERTY);
+ p.setValue(caption);
+ if (parent != null) {
+ tree.setParent(id, parent);
+ }
+ return id;
+ }
+
+}