diff options
Diffstat (limited to 'src/com/itmill/toolkit/demo/features/FeatureTable.java')
-rw-r--r-- | src/com/itmill/toolkit/demo/features/FeatureTable.java | 231 |
1 files changed, 231 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/demo/features/FeatureTable.java b/src/com/itmill/toolkit/demo/features/FeatureTable.java new file mode 100644 index 0000000000..013031dabb --- /dev/null +++ b/src/com/itmill/toolkit/demo/features/FeatureTable.java @@ -0,0 +1,231 @@ +/* ************************************************************************* + + 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 com.itmill.toolkit.event.Action; +import com.itmill.toolkit.ui.*; + +public class FeatureTable 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 static final String[] eyecolors = + new String[] { "Blue", "Green", "Brown" }; + private static final String[] haircolors = + new String[] { "Brown", "Black", "Red", "Blonde" }; + + private Table t; + private boolean actionsActive = false; + private Button actionHandlerSwitch = + new Button("Activate actions", this, "toggleActions"); + + public void toggleActions() { + if (actionsActive) { + t.removeActionHandler(this); + actionsActive = false; + actionHandlerSwitch.setCaption("Activate Actions"); + } else { + t.addActionHandler(this); + actionsActive = true; + actionHandlerSwitch.setCaption("Deactivate Actions"); + } + } + + protected Component getDemoComponent() { + + OrderedLayout l = new OrderedLayout(); + + // Sample table + t = new Table("Most Wanted Persons List"); + t.setPageLength(10); + l.addComponent(t); + + // Add columns to table + t.addContainerProperty("Firstname", String.class, ""); + t.addContainerProperty("Lastname", String.class, ""); + t.addContainerProperty("Age", String.class, ""); + t.addContainerProperty("Eyecolor", String.class, ""); + t.addContainerProperty("Haircolor", String.class, ""); + + // Add random rows to table + for (int j = 0; j < 50; j++) { + Object id = t.addItem( + new Object[] { + firstnames[(int) (Math.random() * (firstnames.length-1))], + lastnames[(int) (Math.random() * (lastnames.length-1))], + new Integer((int) (Math.random() * 80)), + eyecolors[(int) (Math.random() * 3)], + haircolors[(int) (Math.random() * 4)] }, + new Integer(j)); + t.setItemIcon(id,getSampleIcon()); + } + + // Actions + l.addComponent(this.actionHandlerSwitch); + + // Properties + PropertyPanel p = new PropertyPanel(t); + Form ap = + p.createBeanPropertySet( + new String[] { + "pageLength", + "rowHeaderMode", + "selectable", + "columnHeaderMode", + "columnCollapsingAllowed", + "columnReorderingAllowed"}); + ap.replaceWithSelect( + "columnHeaderMode", + new Object[] { + new Integer(Table.COLUMN_HEADER_MODE_EXPLICIT), + new Integer(Table.COLUMN_HEADER_MODE_EXPLICIT_DEFAULTS_ID), + new Integer(Table.COLUMN_HEADER_MODE_HIDDEN), + new Integer(Table.COLUMN_HEADER_MODE_ID)}, + new Object[] { + "Explicit", + "Explicit defaults ID", + "Hidden", + "ID" }); + ap.replaceWithSelect( + "rowHeaderMode", + new Object[] { + new Integer(Table.ROW_HEADER_MODE_EXPLICIT), + new Integer(Table.ROW_HEADER_MODE_EXPLICIT_DEFAULTS_ID), + new Integer(Table.ROW_HEADER_MODE_HIDDEN), + new Integer(Table.ROW_HEADER_MODE_ICON_ONLY), + new Integer(Table.ROW_HEADER_MODE_ID), + new Integer(Table.ROW_HEADER_MODE_INDEX), + new Integer(Table.ROW_HEADER_MODE_ITEM), + new Integer(Table.ROW_HEADER_MODE_PROPERTY)}, + new Object[] { + "Explicit", + "Explicit defaults ID", + "Hidden", + "Icon only", + "ID", + "Index", + "Item", + "Property" }); + Select themes = (Select) p.getField("style"); + themes + .addItem("list") + .getItemProperty(themes.getItemCaptionPropertyId()) + .setValue("list"); + p.addProperties("Table Properties", ap); + l.addComponent(p); + + return l; + } + + protected String getExampleSrc() { + return "// Sample table\n" + + "t = new Table(\"Most Wanted Persons List\");\n" + + "t.setPageLength(10);\n\n" + + "// Add columns to table\n" + + "t.addContainerProperty(\"Firstname\", String.class, \"\");\n" + + "t.addContainerProperty(\"Lastname\", String.class, \"\");\n" + + "t.addContainerProperty(\"Age\", String.class, \"\");\n" + + "t.addContainerProperty(\"Eyecolor\", String.class, \"\");\n" + + "t.addContainerProperty(\"Haircolor\", String.class, \"\");\n\n" + + "// Add random rows to table\n" + + "for (int j = 0; j < 50; j++) {\n" + + " t.addItem(\n" + + " new Object[] {\n" + + " firstnames[(int) (Math.random() * 9)],\n" + + " lastnames[(int) (Math.random() * 9)],\n" + + " new Integer((int) (Math.random() * 80)),\n" + + " eyecolors[(int) (Math.random() * 3)],\n" + + " haircolors[(int) (Math.random() * 4)] },\n" + + " new Integer(j));\n" + + "}\n"; + } + + protected String getDescriptionXHTML() { + + return "<p>The Table component is designed for displaying large volumes of tabular data, " + + "in multiple pages whenever needed.</p> " + + "<p>Selection of the displayed data is supported both in selecting exclusively one row " + + "or multiple rows at the same time. For each row, there may be a set of actions associated, " + + "depending on the theme these actions may be displayed either as a drop-down " + + "menu for each row or a set of command buttons.</p><p>" + + "Table may be connected to any datasource implementing the <code>Container</code> interface." + + "This way data found in external datasources can be directly presented in the table component." + + "</p><p>" + + "Table implements a number of features and you can test most of them in the table demo tab.</p>"; + } + + protected String getImage() { + return "table.jpg"; + } + + protected String getTitle() { + return "Table"; + } + + 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 '" + + t.getItem(target).toString() + + "'"); + } + +} |