]> source.dussan.org Git - vaadin-framework.git/commitdiff
Added table example (not done yet)
authorMarc Englund <marc.englund@itmill.com>
Tue, 4 Dec 2007 08:35:27 +0000 (08:35 +0000)
committerMarc Englund <marc.englund@itmill.com>
Tue, 4 Dec 2007 08:35:27 +0000 (08:35 +0000)
svn changeset:3133/svn branch:trunk

src/com/itmill/toolkit/demo/featurebrowser/FeatureBrowser.java
src/com/itmill/toolkit/demo/featurebrowser/TableExample.java [new file with mode: 0644]

index 5999f9445923511c713b08af05a0b6b559f356c3..5a20a3f965649755231d35f2a59b398b425df3d6 100644 (file)
@@ -72,7 +72,7 @@ public class FeatureBrowser extends com.itmill.toolkit.Application implements
             // Wrangling data: Table
             { "Wrangling data", "Table",
                     "A dynamic Table with bells, whistles and actions",
-                    Button.class },
+                    TableExample.class },
             // Wrangling data: Tree
             { "Wrangling data", "Tree", "A hierarchy of things",
                     TreeExample.class },
diff --git a/src/com/itmill/toolkit/demo/featurebrowser/TableExample.java b/src/com/itmill/toolkit/demo/featurebrowser/TableExample.java
new file mode 100644 (file)
index 0000000..17beed8
--- /dev/null
@@ -0,0 +1,161 @@
+package com.itmill.toolkit.demo.featurebrowser;\r
+\r
+import com.itmill.toolkit.data.Item;\r
+import com.itmill.toolkit.data.Property;\r
+import com.itmill.toolkit.data.Property.ValueChangeEvent;\r
+import com.itmill.toolkit.event.Action;\r
+import com.itmill.toolkit.ui.CustomComponent;\r
+import com.itmill.toolkit.ui.Field;\r
+import com.itmill.toolkit.ui.OrderedLayout;\r
+import com.itmill.toolkit.ui.Table;\r
+\r
+/**\r
+ * Table example.\r
+ * \r
+ * @author IT Mill Ltd.\r
+ */\r
+public class TableExample extends CustomComponent implements\r
+        Field.ValueChangeListener, Action.Handler {\r
+\r
+    // Actions\r
+    private static final Action ACTION_SAVE = new Action("Save");\r
+    private static final Action ACTION_DELETE = new Action("Delete");\r
+    private static final Action ACTION_HIRE = new Action("Hire");\r
+    // Action sets\r
+    private static final Action[] ACTIONS_NOHIRE = new Action[] { ACTION_SAVE,\r
+            ACTION_DELETE };\r
+    private static final Action[] ACTIONS_HIRE = new Action[] { ACTION_HIRE,\r
+            ACTION_SAVE, ACTION_DELETE };\r
+    // Properties\r
+    private static final Object PROPERTY_SPECIES = "Species";\r
+    private static final Object PROPERTY_TYPE = "Type";\r
+    private static final Object PROPERTY_KIND = "Kind";\r
+    private static final Object PROPERTY_HIRED = "Hired";\r
+\r
+    Table source;\r
+    Table saved;\r
+\r
+    public TableExample() {\r
+\r
+        OrderedLayout main = new OrderedLayout();\r
+        main.setMargin(true);\r
+        setCompositionRoot(main);\r
+\r
+        source = new Table("The source");\r
+        source.setPageLength(7);\r
+        source.setWidth(100);\r
+        source.setWidthUnits(Table.UNITS_PERCENTAGE);\r
+        source.setColumnCollapsingAllowed(true);\r
+        source.setColumnReorderingAllowed(true);\r
+        source.setSelectable(true);\r
+        source.setMultiSelect(true);\r
+        source.setImmediate(true);\r
+        source.setRowHeaderMode(Table.ROW_HEADER_MODE_ID);\r
+        fillTable(source);\r
+        source.addActionHandler(this);\r
+        main.addComponent(source);\r
+\r
+        saved = new Table("Saved");\r
+        saved.setPageLength(4);\r
+        saved.setWidth(100);\r
+        saved.setWidthUnits(Table.UNITS_PERCENTAGE);\r
+        saved.setSelectable(false);\r
+        saved.setColumnHeaderMode(Table.COLUMN_HEADER_MODE_HIDDEN);\r
+        saved.setRowHeaderMode(Table.ROW_HEADER_MODE_ID);\r
+        initProperties(saved);\r
+        saved.addActionHandler(this);\r
+        main.addComponent(saved);\r
+    }\r
+\r
+    private void initProperties(Table table) {\r
+        table.addContainerProperty(PROPERTY_SPECIES, String.class, "");\r
+        table.addContainerProperty(PROPERTY_TYPE, String.class, "");\r
+        table.addContainerProperty(PROPERTY_KIND, String.class, "");\r
+        table\r
+                .addContainerProperty(PROPERTY_HIRED, Boolean.class,\r
+                        Boolean.FALSE);\r
+    }\r
+\r
+    private void fillTable(Table table) {\r
+        initProperties(table);\r
+\r
+        String[] sp = new String[] { "Fox", "Dog", "Cat", "Moose", "Penguin",\r
+                "Cow" };\r
+        String[] ty = new String[] { "Quick", "Lazy", "Sleepy", "Fidgety",\r
+                "Crazy", "Kewl" };\r
+        String[] ki = new String[] { "Jumping", "Walking", "Sleeping",\r
+                "Skipping", "Dancing" };\r
+\r
+        for (int i = 0; i < 100; i++) {\r
+            String s = sp[(int) (Math.random() * sp.length)];\r
+            String t = ty[(int) (Math.random() * ty.length)];\r
+            String k = ki[(int) (Math.random() * ki.length)];\r
+            table.addItem(new Object[] { s, t, k, Boolean.FALSE }, new Integer(\r
+                    i));\r
+        }\r
+\r
+    }\r
+\r
+    public Action[] getActions(Object target, Object sender) {\r
+        if (sender == source) {\r
+            Item item = source.getItem(target);\r
+            if (item != null\r
+                    && item.getItemProperty(PROPERTY_HIRED).getValue() == Boolean.FALSE) {\r
+                return ACTIONS_HIRE;\r
+            } else {\r
+                return ACTIONS_NOHIRE;\r
+            }\r
+        } else {\r
+            return new Action[] { ACTION_DELETE };\r
+        }\r
+    }\r
+\r
+    public void handleAction(Action action, Object sender, Object target) {\r
+        if (sender == source) {\r
+            Item item = source.getItem(target);\r
+            if (action == ACTION_HIRE) {\r
+                item.getItemProperty(PROPERTY_HIRED).setValue(Boolean.TRUE);\r
+                source.requestRepaint();\r
+                if (saved.containsId(target)) {\r
+                    item = saved.getItem(target);\r
+                    item.getItemProperty(PROPERTY_HIRED).setValue(Boolean.TRUE);\r
+                    saved.requestRepaint();\r
+                }\r
+\r
+                getWindow().showNotification("Hired", "" + item);\r
+            } else if (action == ACTION_SAVE) {\r
+                if (saved.containsId(target)) {\r
+                    getWindow().showNotification("Already saved", "" + item);\r
+                    return;\r
+                }\r
+                Item added = saved.addItem(target);\r
+                Property p = added.getItemProperty(PROPERTY_SPECIES);\r
+                p.setValue(item.getItemProperty(PROPERTY_SPECIES).getValue());\r
+                p = added.getItemProperty(PROPERTY_TYPE);\r
+                p.setValue(item.getItemProperty(PROPERTY_TYPE).getValue());\r
+                p = added.getItemProperty(PROPERTY_KIND);\r
+                p.setValue(item.getItemProperty(PROPERTY_KIND).getValue());\r
+                p = added.getItemProperty(PROPERTY_HIRED);\r
+                p.setValue(item.getItemProperty(PROPERTY_HIRED).getValue());\r
+                getWindow().showNotification("Saved", "" + item);\r
+            } else {\r
+                // ACTION_DELETE\r
+                getWindow().showNotification("Deleted ", "" + item);\r
+                source.removeItem(target);\r
+            }\r
+        } else {\r
+            // sender==saved\r
+            if (action == ACTION_DELETE) {\r
+                Item item = saved.getItem(target);\r
+                getWindow().showNotification("Deleted", "" + item);\r
+                saved.removeItem(target);\r
+            }\r
+        }\r
+    }\r
+\r
+    public void valueChange(ValueChangeEvent event) {\r
+        // TODO Auto-generated method stub\r
+\r
+    }\r
+\r
+}\r