]> source.dussan.org Git - vaadin-framework.git/commitdiff
Sampler; sample modifications
authorMarc Englund <marc.englund@itmill.com>
Fri, 6 Feb 2009 13:55:07 +0000 (13:55 +0000)
committerMarc Englund <marc.englund@itmill.com>
Fri, 6 Feb 2009 13:55:07 +0000 (13:55 +0000)
svn changeset:6751/svn branch:trunk

src/com/itmill/toolkit/demo/sampler/features/text/TextAreaExample.java
src/com/itmill/toolkit/demo/sampler/features/trees/TreeMouseEvents.java
src/com/itmill/toolkit/demo/sampler/features/trees/TreeMouseEventsExample.java
src/com/itmill/toolkit/demo/sampler/features/trees/TreeMultiSelect.java
src/com/itmill/toolkit/demo/sampler/features/trees/TreeSingleSelect.java
src/com/itmill/toolkit/demo/sampler/features/trees/TreeSingleSelectExample.java

index c031e499bf12d42758eb1821e65984816223adf3..fbf9e15c53c223a0273079931faafe5c12688561 100644 (file)
@@ -19,13 +19,15 @@ public class TextAreaExample extends HorizontalLayout implements
         setSpacing(true);\r
 \r
         editor = new TextField("", initialText);\r
+        editor.setRows(20); // this will make it an 'area', i.e multiline\r
+        editor.setColumns(20);\r
         editor.addListener(this);\r
         editor.setImmediate(true);\r
-        editor.setColumns(20);\r
-        editor.setRows(20);\r
         addComponent(editor);\r
 \r
-        addComponent(new Button(">>"));\r
+        // the TextArea is immediate, and it's valueCahnge updates the Label,\r
+        // so this button actually does nothing\r
+        addComponent(new Button(">"));\r
 \r
         plainText = new Label(initialText);\r
         plainText.setContentMode(Label.CONTENT_XHTML);\r
index a10d197628b65ce5e5cf0ca3b5bac388131d8df9..646fe6087091ee12029f248703d75116a8197c76 100644 (file)
@@ -21,7 +21,8 @@ public class TreeMouseEvents extends Feature {
                 + " is used. Through ItemClickEvent we can update the"\r
                 + " label showing the selection."\r
                 + "<br>Try to click your left, right and middle mouse"\r
-                + "buttons on the tree items.";\r
+                + "buttons on the tree items. Any modifier keys will"\r
+                + " also be detected.";\r
     }\r
 \r
     @Override\r
index ad012b83db2e202902adafdcdf5cb8b447887812..42cd0117ab6a2c54ddb3cc839adfea02ecc37c19 100644 (file)
@@ -5,7 +5,6 @@ import com.itmill.toolkit.demo.sampler.ExampleUtil;
 import com.itmill.toolkit.event.ItemClickEvent;\r
 import com.itmill.toolkit.event.ItemClickEvent.ItemClickListener;\r
 import com.itmill.toolkit.ui.AbstractSelect;\r
-import com.itmill.toolkit.ui.Label;\r
 import com.itmill.toolkit.ui.Tree;\r
 import com.itmill.toolkit.ui.VerticalLayout;\r
 \r
@@ -14,7 +13,6 @@ public class TreeMouseEventsExample extends VerticalLayout implements
 \r
     private Tree t;\r
     private int itemId;\r
-    private Label l;\r
 \r
     public TreeMouseEventsExample() {\r
         setSpacing(true);\r
@@ -43,21 +41,40 @@ public class TreeMouseEventsExample extends VerticalLayout implements
         // Disallow selecting items from the tree\r
         t.setSelectable(false);\r
 \r
-        l = new Label();\r
         addComponent(t);\r
-        addComponent(l);\r
     }\r
 \r
     public void itemClick(ItemClickEvent event) {\r
+        // Indicate which modifier keys are pressed\r
+        String modifiers = "";\r
+        if (event.isAltKey()) {\r
+            modifiers += "Alt ";\r
+        }\r
+        if (event.isCtrlKey()) {\r
+            modifiers += "Ctrl ";\r
+        }\r
+        if (event.isMetaKey()) {\r
+            modifiers += "Meta ";\r
+        }\r
+        if (event.isShiftKey()) {\r
+            modifiers += "Shift ";\r
+        }\r
+        if (modifiers.length() > 0) {\r
+            modifiers = "Modifiers: " + modifiers;\r
+        } else {\r
+            modifiers = "Modifiers: none";\r
+        }\r
         switch (event.getButton()) {\r
         case ItemClickEvent.BUTTON_LEFT:\r
             // Left button click updates the 'selected' Label\r
-            l.setValue("Selected item: " + event.getItem());\r
+            getWindow().showNotification("Selected item: " + event.getItem(),\r
+                    modifiers);\r
             break;\r
         case ItemClickEvent.BUTTON_MIDDLE:\r
             // Middle button click removes the item\r
             Object parent = t.getParent(event.getItemId());\r
-            l.setValue("Removed item: " + event.getItem());\r
+            getWindow().showNotification("Removed item: " + event.getItem(),\r
+                    modifiers);\r
             t.removeItem(event.getItemId());\r
             if (parent != null && t.getChildren(parent).size() == 0) {\r
                 t.setChildrenAllowed(parent, false);\r
@@ -65,7 +82,8 @@ public class TreeMouseEventsExample extends VerticalLayout implements
             break;\r
         case ItemClickEvent.BUTTON_RIGHT:\r
             // Right button click creates a new child item\r
-            l.setValue("Added item: New Item # " + itemId);\r
+            getWindow().showNotification("Added item: New Item # " + itemId,\r
+                    modifiers);\r
             t.setChildrenAllowed(event.getItemId(), true);\r
             Item i = t.addItem(itemId);\r
             t.setChildrenAllowed(itemId, false);\r
index 0ee7518fa0b1d05010b79f7d8d26be3f1e607b7c..cd85db564431a4b9ddedfe14fecde26c0bedc043 100644 (file)
@@ -17,8 +17,7 @@ public class TreeMultiSelect extends Feature {
                 + " data that has hierarchical relationships, such as"\r
                 + " filesystems or message threads."\r
                 + "<br>In this example, you can select multiple tree nodes"\r
-                + " and delete your selection. You can also click your"\r
-                + " selections again, and have no selections made.";\r
+                + " and delete your selection. Click a selected item again to de-select it.";\r
     }\r
 \r
     @Override\r
index ff5f916f364a02fc6a426e8b180009591b997924..09eff2247a81e13295ab867309ba17be8e0c5db2 100644 (file)
@@ -17,8 +17,7 @@ public class TreeSingleSelect extends Feature {
                 + " data that has hierarchical relationships, such as"\r
                 + " filesystems or message threads."\r
                 + "<br>In this example, you can select any single tree node"\r
-                + " and modify its 'name' property. You can also click your"\r
-                + " selection again, and have no selections made.";\r
+                + " and modify its 'name' property. Click again to de-select.";\r
     }\r
 \r
     @Override\r
index 021bf12aecb12f75fd714613c5940fad488f650c..5d1aa6767b0db2bbfc6064b39c99de8f0f9b0b73 100644 (file)
@@ -10,72 +10,77 @@ import com.itmill.toolkit.ui.Button;
 import com.itmill.toolkit.ui.HorizontalLayout;\r
 import com.itmill.toolkit.ui.TextField;\r
 import com.itmill.toolkit.ui.Tree;\r
-import com.itmill.toolkit.ui.VerticalLayout;\r
 import com.itmill.toolkit.ui.Button.ClickEvent;\r
 \r
-public class TreeSingleSelectExample extends VerticalLayout implements\r
+public class TreeSingleSelectExample extends HorizontalLayout implements\r
         Property.ValueChangeListener, Button.ClickListener, Action.Handler {\r
 \r
+    // Actions for the context menu\r
     private static final Action ACTION_ADD = new Action("Add child item");\r
     private static final Action ACTION_DELETE = new Action("Delete");\r
     private static final Action[] ACTIONS = new Action[] { ACTION_ADD,\r
             ACTION_DELETE };\r
 \r
-    private Tree t;\r
+    private Tree tree;\r
+\r
+    HorizontalLayout editBar;\r
     private TextField editor;\r
     private Button change;\r
-    private int itemId;\r
 \r
     public TreeSingleSelectExample() {\r
         setSpacing(true);\r
 \r
-        // Create new Tree object using a hierarchical container from\r
-        // ExampleUtil class\r
-        t = new Tree("Hardware Inventory", ExampleUtil.getHardwareContainer());\r
+        // Create the Tree,a dd to layout\r
+        tree = new Tree("Hardware Inventory");\r
+        addComponent(tree);\r
+\r
+        // Contents from a (prefilled example) hierarchical container:\r
+        tree.setContainerDataSource(ExampleUtil.getHardwareContainer());\r
 \r
         // Add Valuechangelistener and Actionhandler\r
-        t.addListener(this);\r
-        t.addActionHandler(this);\r
+        tree.addListener(this);\r
 \r
-        t.setImmediate(true);\r
+        // Add actions (context menu)\r
+        tree.addActionHandler(this);\r
 \r
-        // Set tree to show the 'name' property as caption for items\r
-        t.setItemCaptionPropertyId(ExampleUtil.hw_PROPERTY_NAME);\r
-        t.setItemCaptionMode(AbstractSelect.ITEM_CAPTION_MODE_PROPERTY);\r
+        // Cause valueChange immediately when the user selects\r
+        tree.setImmediate(true);\r
 \r
-        // Starting itemId # for new items\r
-        itemId = t.getContainerDataSource().size();\r
+        // Set tree to show the 'name' property as caption for items\r
+        tree.setItemCaptionPropertyId(ExampleUtil.hw_PROPERTY_NAME);\r
+        tree.setItemCaptionMode(AbstractSelect.ITEM_CAPTION_MODE_PROPERTY);\r
 \r
         // Expand whole tree\r
-        for (int i = 0; i < itemId; i++) {\r
-            t.expandItemsRecursively(i);\r
+        for (Object id : tree.rootItemIds()) {\r
+            tree.expandItemsRecursively(id);\r
         }\r
 \r
         // Create the 'editor bar' (textfield and button in a horizontallayout)\r
-        editor = new TextField();\r
+        editBar = new HorizontalLayout();\r
+        editBar.setMargin(false, false, false, true);\r
+        editBar.setEnabled(false);\r
+        addComponent(editBar);\r
+        // textfield\r
+        editor = new TextField("Item name");\r
         editor.setImmediate(true);\r
-        change = new Button("Apply", this, "buttonClick");\r
-        change.setEnabled(false);\r
-        HorizontalLayout editBar = new HorizontalLayout();\r
         editBar.addComponent(editor);\r
+        // apply-button\r
+        change = new Button("Apply", this, "buttonClick");\r
         editBar.addComponent(change);\r
-\r
-        addComponent(editBar);\r
-        addComponent(t);\r
-\r
+        editBar.setComponentAlignment(change, "bottom");\r
     }\r
 \r
     public void valueChange(ValueChangeEvent event) {\r
         if (event.getProperty().getValue() != null) {\r
             // If something is selected from the tree, get it's 'name' and\r
             // insert it into the textfield\r
-            editor.setValue(t.getItem(event.getProperty().getValue())\r
+            editor.setValue(tree.getItem(event.getProperty().getValue())\r
                     .getItemProperty(ExampleUtil.hw_PROPERTY_NAME));\r
             editor.requestRepaint();\r
-            change.setEnabled(true);\r
+            editBar.setEnabled(true);\r
         } else {\r
             editor.setValue("");\r
-            change.setEnabled(false);\r
+            editBar.setEnabled(false);\r
         }\r
     }\r
 \r
@@ -83,8 +88,9 @@ public class TreeSingleSelectExample extends VerticalLayout implements
         // If the edited value contains something, set it to be the item's new\r
         // 'name' property\r
         if (!editor.getValue().equals("")) {\r
-            t.getItem(t.getValue()).getItemProperty(\r
-                    ExampleUtil.hw_PROPERTY_NAME).setValue(editor.getValue());\r
+            Item item = tree.getItem(tree.getValue());\r
+            Property name = item.getItemProperty(ExampleUtil.hw_PROPERTY_NAME);\r
+            name.setValue(editor.getValue());\r
         }\r
     }\r
 \r
@@ -100,25 +106,27 @@ public class TreeSingleSelectExample extends VerticalLayout implements
      */\r
     public void handleAction(Action action, Object sender, Object target) {\r
         if (action == ACTION_ADD) {\r
-            // Allow children for the target item\r
-            t.setChildrenAllowed(target, true);\r
-\r
-            // Create new item, disallow children, add name, set parent\r
-            Item i = t.addItem(itemId);\r
-            t.setChildrenAllowed(itemId, false);\r
-            String newItemName = "New Item # " + itemId;\r
-            i.getItemProperty(ExampleUtil.hw_PROPERTY_NAME).setValue(\r
-                    newItemName);\r
-            t.setParent(itemId, target);\r
-            t.expandItem(target);\r
-            itemId++;\r
+            // Allow children for the target item, and expand it\r
+            tree.setChildrenAllowed(target, true);\r
+            tree.expandItem(target);\r
+\r
+            // Create new item, set parent, disallow children (= leaf node)\r
+            Object itemId = tree.addItem();\r
+            tree.setParent(itemId, target);\r
+            tree.setChildrenAllowed(itemId, false);\r
+\r
+            // Set the name for this item (we use it as item caption)\r
+            Item item = tree.getItem(itemId);\r
+            Property name = item.getItemProperty(ExampleUtil.hw_PROPERTY_NAME);\r
+            name.setValue("New Item");\r
+\r
         } else if (action == ACTION_DELETE) {\r
-            Object parent = t.getParent(target);\r
-            t.removeItem(target);\r
+            Object parent = tree.getParent(target);\r
+            tree.removeItem(target);\r
             // If the deleted object's parent has no more children, set it's\r
-            // childrenallowed property to false\r
-            if (parent != null && t.getChildren(parent).size() == 0) {\r
-                t.setChildrenAllowed(parent, false);\r
+            // childrenallowed property to false (= leaf node)\r
+            if (parent != null && tree.getChildren(parent).size() == 0) {\r
+                tree.setChildrenAllowed(parent, false);\r
             }\r
         }\r
     }\r