diff options
Diffstat (limited to 'src/com/itmill/toolkit/demo/sampler/features/table/TableMainFeaturesExample.java')
-rw-r--r-- | src/com/itmill/toolkit/demo/sampler/features/table/TableMainFeaturesExample.java | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/src/com/itmill/toolkit/demo/sampler/features/table/TableMainFeaturesExample.java b/src/com/itmill/toolkit/demo/sampler/features/table/TableMainFeaturesExample.java new file mode 100644 index 0000000000..49e5c10022 --- /dev/null +++ b/src/com/itmill/toolkit/demo/sampler/features/table/TableMainFeaturesExample.java @@ -0,0 +1,119 @@ +package com.itmill.toolkit.demo.sampler.features.table; + +import java.util.HashSet; + +import com.itmill.toolkit.data.Item; +import com.itmill.toolkit.demo.sampler.ExampleUtil; +import com.itmill.toolkit.event.Action; +import com.itmill.toolkit.terminal.ThemeResource; +import com.itmill.toolkit.ui.Label; +import com.itmill.toolkit.ui.Table; +import com.itmill.toolkit.ui.VerticalLayout; +import com.itmill.toolkit.ui.Table.CellStyleGenerator; + +public class TableMainFeaturesExample extends VerticalLayout { + + Table table = new Table("ISO-3166 Country Codes and flags"); + + HashSet<Object> markedRows = new HashSet<Object>(); + + static final Action ACTION_MARK = new Action("Mark"); + static final Action ACTION_UNMARK = new Action("Unmark"); + static final Action ACTION_LOG = new Action("Log"); + static final Action[] ACTIONS_UNMARKED = new Action[] { ACTION_MARK, + ACTION_LOG }; + static final Action[] ACTIONS_MARKED = new Action[] { ACTION_UNMARK, + ACTION_LOG }; + + public TableMainFeaturesExample() { + addComponent(table); + + // set a style name, so we can style rows and cells + table.setStyleName("iso3166"); + + // size + table.setWidth("100%"); + table.setPageLength(7); + + // multiselect mode + table.setMultiSelect(true); + + // connect data source + table.setContainerDataSource(ExampleUtil.getISO3166Container()); + + // turn on column reordering and collapsing + table.setColumnReorderingAllowed(true); + table.setColumnCollapsingAllowed(true); + + // set column headers + table.setColumnHeaders(new String[] { "Country", "Code", "Icon file" }); + + // Icons for column headers + table.setColumnIcon(ExampleUtil.iso3166_PROPERTY_FLAG, + new ThemeResource("icons/action_save.gif")); + table.setColumnIcon(ExampleUtil.iso3166_PROPERTY_NAME, + new ThemeResource("icons/icon_get_world.gif")); + table.setColumnIcon(ExampleUtil.iso3166_PROPERTY_SHORT, + new ThemeResource("icons/page_code.gif")); + + // Collapse one column - the user can make it visible again + try { + table.setColumnCollapsed(ExampleUtil.iso3166_PROPERTY_FLAG, true); + } catch (IllegalAccessException e) { + // Not critical, but strange + System.err.println(e); + } + + // show row header w/ icon + table.setRowHeaderMode(Table.ROW_HEADER_MODE_ICON_ONLY); + table.setItemIconPropertyId(ExampleUtil.iso3166_PROPERTY_FLAG); + + // Actions (a.k.a context menu) + table.addActionHandler(new Action.Handler() { + public Action[] getActions(Object target, Object sender) { + if (markedRows.contains(target)) { + return ACTIONS_MARKED; + } else { + return ACTIONS_UNMARKED; + } + } + + public void handleAction(Action action, Object sender, Object target) { + if (ACTION_MARK.equals(action)) { + markedRows.add(target); + table.requestRepaint(); + } else if (ACTION_UNMARK.equals(action)) { + markedRows.remove(target); + table.requestRepaint(); + } else if (ACTION_LOG.equals(action)) { + Item item = table.getItem(target); + addComponent(new Label(target + + ", " + + item.getItemProperty( + ExampleUtil.iso3166_PROPERTY_NAME) + .getValue())); + } + + } + + }); + + // style generator + table.setCellStyleGenerator(new CellStyleGenerator() { + public String getStyle(Object itemId, Object propertyId) { + if (propertyId == null) { + // no propertyId, styling row + return (markedRows.contains(itemId) ? "marked" : null); + } else if (ExampleUtil.iso3166_PROPERTY_NAME.equals(propertyId)) { + return "bold"; + } else { + // no style + return null; + } + + } + + }); + + } +} |