private String javaSource = null;
/**
- * Gets the name of this feature. Defaults to class simplename, override if
- * needed. Try not to exceed 25 characters too much.
+ * Gets the name of this feature. Try not to exceed 25 characters too much.
*
* @return
*/
- public String getName() {
- return getClass().getSimpleName();
- }
+ abstract public String getName();
/**
* Gets the description for this feature. Should describe what the example
* May return null, if the example has no related resources.
* </p>
* <p>
- * The name of the NamedExternalResource will be shown in the UI. <br/>
- * Note that Javadoc should be referenced via {@link #getRelatedAPI()}.
+ * The name of the NamedExternalResource will be shown in the UI. <br/> Note
+ * that Javadoc should be referenced via {@link #getRelatedAPI()}.
* </p>
*
* @see #getThemeBase()
/**
* Gets the name used when resolving the path for this feature. Usually no
- * need to overrride.
+ * need to override.
*
* @return
*/
public Components() {
super("Components", new Feature[] {
//
- new Commons(), //
+ new Common(), //
+ new Accordions(), //
new Buttons(), //
+ new Dates(), //
+ new Forms(), //
+ new Layouts(), //
new Links(), //
new Notifications(), //
- new Selects(), //
- new Layouts(), //
- new Tabsheets(), //
- new Accordions(), //
new Panels(), //
- new Forms(), // not done yet
- new Windows(), //
+ new Selects(), //
new Tables(),//
+ new Tabsheets(), //
new Texts(), //
new Trees(), //
- new Dates(), //
+ new Windows(), //
});
}
}
}
}
- public static class Commons extends FeatureSet {
- public Commons() {
- super("Commons", new Feature[] {
+ public static class Common extends FeatureSet {
+ public Common() {
+ super("Common", new Feature[] {
//
new Tooltips(), //
new Icons(), //
public Tables() {
super("Table (Grid)", new Feature[] {
//
- new TableColumnHeaders(), //
- new TableRowHeaders(), //
new TableHeaderIcons(), //
+ new TableColumnHeaders(), //
new TableColumnReordering(), //
new TableColumnCollapsing(), //
- new TableSorting(), //
new TableColumnAlignment(), //
- new TableActions(), //
- new TableLazyLoading(), //
- new TableRowStyling(), //
new TableCellStyling(), //
+ new TableSorting(), //
+ new TableRowHeaders(), //
+ new TableRowStyling(), //
+ new TableActions(), //
new TableMouseEvents(), //
+ new TableLazyLoading(), //
});
}
}
b.setIcon(res);
b.setWidth("75px");
b.setHeight("75px");
- b.setDescription("<h3>" + f.getName() + "</h3>"
- + f.getDescription());
+ b.setDescription("<h3>" + f.getName() + "</h3>");
b.addListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
((SamplerWindow) getWindow()).setFeature(f);
public class AccordionDisabled extends Feature {\r
@Override\r
public String getName() {\r
- return "Accordion - Disabling tabs";\r
+ return "Accordion, disabled tabs";\r
}\r
\r
@Override\r
public class ProminentPrimaryAction extends Feature {
+ @Override
+ public String getName() {
+ return "Prominent primary action";
+ }
+
@Override
public String getDescription() {
return "A primary action is an action that is clearly the"
public class ButtonLink extends Feature {
+ @Override
+ public String getName() {
+ return "Link button";
+ }
+
@Override
public String getDescription() {
return "A link-styled button; works like a Button but looks like a Link.<br/>"
public class ButtonPush extends Feature {
+ @Override
+ public String getName() {
+ return "Push button";
+ }
+
@Override
public String getDescription() {
return "A basic push-button.";
public class ButtonSwitch extends Feature {
+ @Override
+ public String getName() {
+ return "Switch button";
+ }
+
@Override
public String getDescription() {
return "A switch button works like a regular button, triggering a server-side event, but it's state is 'sticky' - it toggles on or off, instead of popping right back out.<br/>Also know as a CheckBox.";
+ "If there is no component causing the error, consider using a"
+ " (styled) Label or a Notification to indicate the error.";
+ @Override
+ public String getName() {
+ return "Error indicator";
+ }
+
public String getDescription() {
return desc;
}
public class Icons extends Feature {
+ @Override
+ public String getName() {
+ return "Icons";
+ }
+
@Override
public String getDescription() {
return "Most components can have an <i>icon</i>,"
public class Tooltips extends Feature {
+ @Override
+ public String getName() {
+ return "Tooltips";
+ }
+
@Override
public String getDescription() {
return "Most components can have a <i>description</i>,"
public class Validation extends Feature {
+ @Override
+ public String getName() {
+ return "Validation";
+ }
+
private static final String desc = "Fields can have Validators that check"
+ " entered values. This is most useful when used within a Form, but"
+ " but can be used to validate single, stand-alone Fields as well.";
public class DateInline extends Feature {\r
@Override\r
public String getName() {\r
- return "Date selection inline";\r
+ return "Inline date selection";\r
}\r
\r
@Override\r
public class DateLocale extends Feature {\r
@Override\r
public String getName() {\r
- return "Date selection - Locale";\r
+ return "Date selection, locale";\r
}\r
\r
@Override\r
public class DatePopup extends Feature {\r
@Override\r
public String getName() {\r
- return "Date selection pop-up";\r
+ return "Pop-up date selection";\r
}\r
\r
@Override\r
public class DateResolution extends Feature {\r
@Override\r
public String getName() {\r
- return "Date selection - Resolution";\r
+ return "Date selection, resolution";\r
}\r
\r
@Override\r
public class FormBasic extends Feature {
+ @Override
+ public String getName() {
+ return "Form";
+ }
+
@Override
public Component getExample() {
return new FormPojoExample();
public class FormPojo extends Feature {
+ @Override
+ public String getName() {
+ return "Bean-bound form";
+ }
+
@Override
public Component getExample() {
return new FormPojoExample();
public class LinkCurrentWindow extends Feature {
+ @Override
+ public String getName() {
+ return "Link";
+ }
+
@Override
public String getDescription() {
return "An external link - this is the basic HTML-style link, changing"
public class LinkNoDecorations extends Feature {
+ @Override
+ public String getName() {
+ return "Link, configure window";
+ }
+
@Override
public String getDescription() {
return "An basic HTML-style (external) link, opening a browser window"
public class LinkSizedWindow extends Feature {
+ @Override
+ public String getName() {
+ return "Link, sized window";
+ }
+
@Override
public String getDescription() {
return "An basic HTML-style (external) link, opening a small window w/o"
public class NotificationCustom extends Feature {
+ @Override
+ public String getName() {
+ return "Customized notification";
+ }
+
@Override
public String getDescription() {
return "Notifications are lightweight informational messages,"
public class NotificationError extends Feature {
+ @Override
+ public String getName() {
+ return "Error notification";
+ }
+
@Override
public String getDescription() {
return "Notifications are lightweight informational messages,"
public class NotificationHumanized extends Feature {
+ @Override
+ public String getName() {
+ return "Humanized notification";
+ }
+
@Override
public String getDescription() {
return "Notifications are lightweight informational messages,"
public class NotificationTray extends Feature {
+ @Override
+ public String getName() {
+ return "Tray notification";
+ }
+
@Override
public String getDescription() {
return "Notifications are lightweight informational messages,"
public class NotificationWarning extends Feature {
+ @Override
+ public String getName() {
+ return "Warning notification";
+ }
+
@Override
public String getDescription() {
return "Notifications are lightweight informational messages,"
public class PanelBasic extends Feature {\r
@Override\r
public String getName() {\r
- return "Panel with caption";\r
+ return "Panel";\r
}\r
\r
@Override\r
public class ComboBoxContains extends Feature {\r
@Override\r
public String getName() {\r
- return "Combobox - Contains";\r
+ return "Combobox, suggesting (contains)";\r
}\r
\r
@Override\r
public class ComboBoxNewItems extends Feature {\r
@Override\r
public String getName() {\r
- return "Combobox - Add items";\r
+ return "Combobox, enter new items";\r
}\r
\r
@Override\r
public class ComboBoxStartsWith extends Feature {\r
@Override\r
public String getName() {\r
- return "Combobox - Starts with";\r
+ return "Combobox, suggesting (starts-with)";\r
}\r
\r
@Override\r
public class ListSelectMultiple extends Feature {\r
@Override\r
public String getName() {\r
- return "Listselect - Multi";\r
+ return "List select, multiple selections";\r
}\r
\r
@Override\r
public class ListSelectSingle extends Feature {\r
@Override\r
public String getName() {\r
- return "Listselect - Single";\r
+ return "List select, single selection";\r
}\r
\r
@Override\r
public class TwinColumnSelect extends Feature {\r
@Override\r
public String getName() {\r
- return "Twin column select";\r
+ return "Twin column select (list builder)";\r
}\r
\r
@Override\r
\r
@Override\r
public NamedExternalResource[] getRelatedResources() {\r
- // TODO Auto-generated method stub\r
- return null;\r
+ return new NamedExternalResource[] { new NamedExternalResource(\r
+ "Open Source Design Pattern Library; List Builder",\r
+ "http://www.uidesignpatterns.org/content/list-builder") };\r
}\r
\r
}\r
public class TableActions extends Feature {
+ @Override
+ public String getName() {
+ return "Table, context menu";
+ }
+
@Override
public Component getExample() {
return new TableMainFeaturesExample();
public class TableCellStyling extends Feature {
+ @Override
+ public String getName() {
+ return "Table, styling cells";
+ }
+
@Override
public Component getExample() {
return new TableStylingExample();
public class TableColumnAlignment extends Feature {
+ @Override
+ public String getName() {
+ return "Table, column alignment";
+ }
+
@Override
public Component getExample() {
return new TableMainFeaturesExample();
public class TableColumnCollapsing extends Feature {
+ @Override
+ public String getName() {
+ return "Table, column collapsing";
+ }
+
@Override
public Component getExample() {
return new TableMainFeaturesExample();
public class TableColumnHeaders extends Feature {
+ @Override
+ public String getName() {
+ return "Table, column headers";
+ }
+
@Override
public Component getExample() {
return new TableMainFeaturesExample();
public class TableColumnReordering extends Feature {
+ @Override
+ public String getName() {
+ return "Table, column drag&drop";
+ }
+
@Override
public Component getExample() {
return new TableMainFeaturesExample();
public class TableHeaderIcons extends Feature {
+ @Override
+ public String getName() {
+ return "Table, icons in headers";
+ }
+
@Override
public Component getExample() {
return new TableMainFeaturesExample();
public class TableLazyLoading extends Feature {
+ @Override
+ public String getName() {
+ return "Table, lazy loading";
+ }
+
@Override
public Component getExample() {
return new TableMainFeaturesExample();
public class TableMouseEvents extends Feature {
+ @Override
+ public String getName() {
+ return "Table, mouse events";
+ }
+
@Override
public Component getExample() {
return new TableStylingExample();
public class TableRowHeaders extends Feature {
+ @Override
+ public String getName() {
+ return "Table, row headers";
+ }
+
@Override
public Component getExample() {
return new TableMainFeaturesExample();
public class TableRowStyling extends Feature {
+ @Override
+ public String getName() {
+ return "Table, row styling";
+ }
+
@Override
public Component getExample() {
return new TableStylingExample();
public class TableSorting extends Feature {
+ @Override
+ public String getName() {
+ return "Table, sorting";
+ }
+
@Override
public Component getExample() {
return new TableMainFeaturesExample();
public class TabSheetDisabled extends Feature {\r
@Override\r
public String getName() {\r
- return "Tabsheet - Disabling tabs";\r
+ return "Tabsheet, disabled tabs";\r
}\r
\r
@Override\r
public class TabSheetScrolling extends Feature {\r
@Override\r
public String getName() {\r
- return "Tabsheet - Scrolling tabs";\r
+ return "Tabsheet, scrolling tabs";\r
}\r
\r
@Override\r
public class LabelPlain extends Feature {\r
@Override\r
public String getName() {\r
- return "Label - Plain text";\r
+ return "Label, plain text";\r
}\r
\r
@Override\r
public class LabelPreformatted extends Feature {\r
@Override\r
public String getName() {\r
- return "Label - Preformatted";\r
+ return "Label, preformatted";\r
}\r
\r
@Override\r
public class LabelRich extends Feature {\r
@Override\r
public String getName() {\r
- return "Label - Rich text";\r
+ return "Label, rich text";\r
}\r
\r
@Override\r
public class TreeActions extends Feature {\r
@Override\r
public String getName() {\r
- return "Tree - Actions";\r
+ return "Tree, context menu";\r
}\r
\r
@Override\r
public class TreeMouseEvents extends Feature {\r
@Override\r
public String getName() {\r
- return "Tree - Mouse events";\r
+ return "Tree, mouse events";\r
}\r
\r
@Override\r
public class TreeMultiSelect extends Feature {\r
@Override\r
public String getName() {\r
- return "Tree - Multiselect";\r
+ return "Tree, multiple selections";\r
}\r
\r
@Override\r
package com.itmill.toolkit.demo.sampler.features.trees;\r
\r
+import java.util.Iterator;\r
import java.util.Set;\r
\r
import com.itmill.toolkit.data.Item;\r
+import com.itmill.toolkit.data.Property.ValueChangeEvent;\r
+import com.itmill.toolkit.data.Property.ValueChangeListener;\r
import com.itmill.toolkit.demo.sampler.ExampleUtil;\r
import com.itmill.toolkit.event.Action;\r
import com.itmill.toolkit.ui.AbstractSelect;\r
import com.itmill.toolkit.ui.Button.ClickEvent;\r
\r
public class TreeMultiSelectExample extends VerticalLayout implements\r
- Button.ClickListener, Action.Handler {\r
+ Action.Handler {\r
\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 Button delete;\r
- private int itemId;\r
+ private Tree tree;\r
+ private Button deleteButton;\r
\r
public TreeMultiSelectExample() {\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
+ tree = new Tree("Hardware Inventory", ExampleUtil\r
+ .getHardwareContainer());\r
+ // Set multiselect mode\r
+ tree.setMultiSelect(true);\r
+ tree.setImmediate(true);\r
+ tree.addListener(new ValueChangeListener() {\r
+ public void valueChange(ValueChangeEvent event) {\r
+ Tree t = (Tree) event.getProperty();\r
+ // enable if something is selected, returns a set\r
+ deleteButton.setEnabled(t.getValue() != null\r
+ && ((Set) t.getValue()).size() > 0);\r
+ }\r
+ });\r
\r
// Add Actionhandler\r
-\r
- t.addActionHandler(this);\r
-\r
- t.setImmediate(true);\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
-\r
- // Starting itemId # for new items\r
- itemId = t.getContainerDataSource().size();\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 (Iterator it = tree.rootItemIds().iterator(); it.hasNext();) {\r
+ tree.expandItemsRecursively(it.next());\r
}\r
\r
- // Create the 'delete button'\r
- delete = new Button("Delete", this, "buttonClick");\r
+ // Create the 'delete button', inline click-listener\r
+ deleteButton = new Button("Delete", new Button.ClickListener() {\r
+ public void buttonClick(ClickEvent event) {\r
+ // Delete all the selected objects\r
+ Object[] toDelete = ((Set<Object>) tree.getValue()).toArray();\r
+ for (int i = 0; i < toDelete.length; i++) {\r
+ handleAction(ACTION_DELETE, tree, toDelete[i]);\r
+ }\r
+ }\r
+ });\r
+ deleteButton.setEnabled(false);\r
\r
- addComponent(delete);\r
- addComponent(t);\r
+ addComponent(deleteButton);\r
+ addComponent(tree);\r
\r
- // Set multiselect mode\r
- t.setMultiSelect(true);\r
- }\r
-\r
- public void buttonClick(ClickEvent event) {\r
- // Delete all the selected objects\r
- Object[] toDelete = ((Set<Object>) t.getValue()).toArray();\r
- for (int i = 0; i < toDelete.length; i++) {\r
- handleAction(ACTION_DELETE, t, toDelete[i]);\r
- }\r
}\r
\r
/*\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
+ tree.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
+ Object itemId = tree.addItem();\r
+ tree.setChildrenAllowed(itemId, false);\r
String newItemName = "New Item # " + itemId;\r
- i.getItemProperty(ExampleUtil.hw_PROPERTY_NAME).setValue(\r
+ Item item = tree.getItem(itemId);\r
+ item.getItemProperty(ExampleUtil.hw_PROPERTY_NAME).setValue(\r
newItemName);\r
- t.setParent(itemId, target);\r
- t.expandItem(target);\r
- itemId++;\r
+ tree.setParent(itemId, target);\r
+ tree.expandItem(target);\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
+ if (parent != null && tree.getChildren(parent).size() == 0) {\r
+ tree.setChildrenAllowed(parent, false);\r
}\r
}\r
}\r
public class TreeSingleSelect extends Feature {\r
@Override\r
public String getName() {\r
- return "Tree - Single select";\r
+ return "Tree, single selection";\r
}\r
\r
@Override\r