aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/itmill/toolkit/demo/sampler/FeatureSet.java48
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.java32
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.pngbin0 -> 2546 bytes
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabledExample.java80
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.java34
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.pngbin0 -> 2132 bytes
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIconsExample.java40
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.java35
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.pngbin0 -> 2322 bytes
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasicExample.java44
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.java33
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.pngbin0 -> 2076 bytes
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/panels/PanelLightExample.java41
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.java33
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.pngbin0 -> 1679 bytes
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabledExample.java80
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.java35
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.pngbin0 -> 1596 bytes
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIconsExample.java38
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.java33
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.pngbin0 -> 1469 bytes
-rw-r--r--src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrollingExample.java42
22 files changed, 645 insertions, 3 deletions
diff --git a/src/com/itmill/toolkit/demo/sampler/FeatureSet.java b/src/com/itmill/toolkit/demo/sampler/FeatureSet.java
index 8f666e987a..610558996d 100644
--- a/src/com/itmill/toolkit/demo/sampler/FeatureSet.java
+++ b/src/com/itmill/toolkit/demo/sampler/FeatureSet.java
@@ -6,6 +6,8 @@ import java.util.LinkedList;
import com.itmill.toolkit.data.Item;
import com.itmill.toolkit.data.Property;
import com.itmill.toolkit.data.util.HierarchicalContainer;
+import com.itmill.toolkit.demo.sampler.features.accordions.AccordionDisabled;
+import com.itmill.toolkit.demo.sampler.features.accordions.AccordionIcons;
import com.itmill.toolkit.demo.sampler.features.blueprints.ProminentPrimaryAction;
import com.itmill.toolkit.demo.sampler.features.buttons.ButtonLink;
import com.itmill.toolkit.demo.sampler.features.buttons.ButtonPush;
@@ -24,6 +26,8 @@ import com.itmill.toolkit.demo.sampler.features.notifications.NotificationError;
import com.itmill.toolkit.demo.sampler.features.notifications.NotificationHumanized;
import com.itmill.toolkit.demo.sampler.features.notifications.NotificationTray;
import com.itmill.toolkit.demo.sampler.features.notifications.NotificationWarning;
+import com.itmill.toolkit.demo.sampler.features.panels.PanelBasic;
+import com.itmill.toolkit.demo.sampler.features.panels.PanelLight;
import com.itmill.toolkit.demo.sampler.features.selects.ComboBoxContains;
import com.itmill.toolkit.demo.sampler.features.selects.ComboBoxNewItems;
import com.itmill.toolkit.demo.sampler.features.selects.ComboBoxPlain;
@@ -32,6 +36,9 @@ import com.itmill.toolkit.demo.sampler.features.selects.ListSelectMultiple;
import com.itmill.toolkit.demo.sampler.features.selects.ListSelectSingle;
import com.itmill.toolkit.demo.sampler.features.selects.NativeSelection;
import com.itmill.toolkit.demo.sampler.features.selects.TwinColumnSelect;
+import com.itmill.toolkit.demo.sampler.features.tabsheets.TabSheetDisabled;
+import com.itmill.toolkit.demo.sampler.features.tabsheets.TabSheetIcons;
+import com.itmill.toolkit.demo.sampler.features.tabsheets.TabSheetScrolling;
/**
* Contains the FeatureSet implementation and the structure for the feature
@@ -75,6 +82,9 @@ public class FeatureSet extends Feature {
new Notifications(), //
new Selects(), //
new Layouts(), //
+ new Tabsheets(), //
+ new Accordions(), //
+ new Panels(), //
});
}
}
@@ -132,7 +142,7 @@ public class FeatureSet extends Feature {
public static class Selects extends FeatureSet {
public Selects() {
super("Selects", new Feature[] {
- //
+ //
new ListSelectSingle(), //
new ListSelectMultiple(), //
new TwinColumnSelect(), //
@@ -142,13 +152,14 @@ public class FeatureSet extends Feature {
new ComboBoxContains(), //
new ComboBoxNewItems(), //
- });
- }
+ });
+ }
}
public static class Layouts extends FeatureSet {
public Layouts() {
super("Layouts", new Feature[] {
+ //
new VerticalLayoutBasic(), //
new HorizontalLayoutBasic(), //
new LayoutSpacing(), //
@@ -157,6 +168,37 @@ public class FeatureSet extends Feature {
}
}
+ public static class Tabsheets extends FeatureSet {
+ public Tabsheets() {
+ super("Tabsheets", new Feature[] {
+ //
+ new TabSheetIcons(), //
+ new TabSheetScrolling(), //
+ new TabSheetDisabled(), //
+ });
+ }
+ }
+
+ public static class Accordions extends FeatureSet {
+ public Accordions() {
+ super("Accordions", new Feature[] {
+ //
+ new AccordionIcons(), //
+ new AccordionDisabled(), //
+ });
+ }
+ }
+
+ public static class Panels extends FeatureSet {
+ public Panels() {
+ super("Panels", new Feature[] {
+ //
+ new PanelBasic(), //
+ new PanelLight(), //
+ });
+ }
+ }
+
// ----------------------------------------------------------
/*
* FeatureSet implementation follows.
diff --git a/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.java b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.java
new file mode 100644
index 0000000000..5e7d22c719
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.java
@@ -0,0 +1,32 @@
+package com.itmill.toolkit.demo.sampler.features.accordions;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.ui.Accordion;
+
+public class AccordionDisabled extends Feature {
+
+ @Override
+ public String getDescription() {
+ return "With an accordion component you can disable, enable,"
+ + " hide and show tabs, similary to a tabsheet.";
+ }
+
+ @Override
+ public APIResource[] getRelatedAPI() {
+ return new APIResource[] { new APIResource(Accordion.class) };
+ }
+
+ @Override
+ public Class[] getRelatedFeatures() {
+ return new Class[] { AccordionIcons.class };
+ }
+
+ @Override
+ public NamedExternalResource[] getRelatedResources() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.png b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.png
new file mode 100644
index 0000000000..de768e613b
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.png
Binary files differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabledExample.java b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabledExample.java
new file mode 100644
index 0000000000..cafb2ffcc5
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabledExample.java
@@ -0,0 +1,80 @@
+package com.itmill.toolkit.demo.sampler.features.accordions;
+
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Accordion;
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.HorizontalLayout;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.VerticalLayout;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;
+
+public class AccordionDisabledExample extends VerticalLayout implements
+ Accordion.SelectedTabChangeListener, Button.ClickListener {
+
+ private Accordion a;
+ private Button b1;
+ private Button b2;
+ private Label l1;
+ private Label l2;
+ private Label l3;
+
+ public AccordionDisabledExample() {
+ setSpacing(true);
+
+ l1 = new Label("There are no previously saved actions.");
+ l2 = new Label("There are no saved notes.");
+ l3 = new Label("There are currently no issues.");
+
+ ThemeResource i1 = new ThemeResource("icons/action_save.gif");
+ ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");
+ ThemeResource i3 = new ThemeResource("icons/icon_info.gif");
+
+ a = new Accordion();
+ a.setHeight(400, UNITS_PIXELS);
+ a.setWidth(400, UNITS_PIXELS);
+ a.addTab(l1, "Saved actions", i1);
+ a.addTab(l2, "Notes", i2);
+ a.addTab(l3, "Issues", i3);
+ a.addListener(this);
+
+ b1 = new Button("Disable 'Notes' tab");
+ b2 = new Button("Hide 'Issues' tab");
+ b1.addListener(this);
+ b2.addListener(this);
+
+ HorizontalLayout hl = new HorizontalLayout();
+ hl.setSpacing(true);
+ hl.addComponent(b1);
+ hl.addComponent(b2);
+
+ addComponent(a);
+ addComponent(hl);
+ }
+
+ public void selectedTabChange(SelectedTabChangeEvent event) {
+ String c = a.getTabCaption(event.getTabSheet().getSelectedTab());
+ getWindow().showNotification("Selected tab: " + c);
+ }
+
+ public void buttonClick(ClickEvent event) {
+ if (b1.equals(event.getButton())) { // b1 clicked
+ if (l2.isEnabled()) {
+ l2.setEnabled(false);
+ b1.setCaption("Enable 'Notes' tab");
+ } else {
+ l2.setEnabled(true);
+ b1.setCaption("Disable 'Notes' tab");
+ }
+ } else { // b2 clicked
+ if (l3.isVisible()) {
+ l3.setVisible(false);
+ b2.setCaption("Show 'Issues' tab");
+ } else {
+ l3.setVisible(true);
+ b2.setCaption("Hide 'Issues' tab");
+ }
+ }
+ a.requestRepaint();
+ }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.java b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.java
new file mode 100644
index 0000000000..9503378875
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.java
@@ -0,0 +1,34 @@
+package com.itmill.toolkit.demo.sampler.features.accordions;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.ui.Accordion;
+
+public class AccordionIcons extends Feature {
+
+ @Override
+ public String getDescription() {
+ return "An accordion component is a specialized case of a"
+ + " tabsheet. Within an accordion, the tabs are organized"
+ + " vertically, and the content will be shown directly"
+ + " below the tab.";
+ }
+
+ @Override
+ public APIResource[] getRelatedAPI() {
+ return new APIResource[] { new APIResource(Accordion.class) };
+ }
+
+ @Override
+ public Class[] getRelatedFeatures() {
+ return new Class[] { AccordionDisabled.class };
+ }
+
+ @Override
+ public NamedExternalResource[] getRelatedResources() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.png b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.png
new file mode 100644
index 0000000000..60f5cc94d4
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.png
Binary files differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIconsExample.java b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIconsExample.java
new file mode 100644
index 0000000000..d76892ea86
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIconsExample.java
@@ -0,0 +1,40 @@
+package com.itmill.toolkit.demo.sampler.features.accordions;
+
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Accordion;
+import com.itmill.toolkit.ui.HorizontalLayout;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;
+
+public class AccordionIconsExample extends HorizontalLayout implements
+ Accordion.SelectedTabChangeListener {
+
+ private Accordion a;
+
+ public AccordionIconsExample() {
+ setSpacing(true);
+
+ Label l1 = new Label("There are no previously saved actions.");
+ Label l2 = new Label("There are no saved notes.");
+ Label l3 = new Label("There are currently no issues.");
+
+ ThemeResource i1 = new ThemeResource("icons/action_save.gif");
+ ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");
+ ThemeResource i3 = new ThemeResource("icons/icon_info.gif");
+
+ a = new Accordion();
+ a.setHeight(400, UNITS_PIXELS);
+ a.setWidth(400, UNITS_PIXELS);
+ a.addTab(l1, "Saved actions", i1);
+ a.addTab(l2, "Notes", i2);
+ a.addTab(l3, "Issues", i3);
+ a.addListener(this);
+
+ addComponent(a);
+ }
+
+ public void selectedTabChange(SelectedTabChangeEvent event) {
+ String c = a.getTabCaption(event.getTabSheet().getSelectedTab());
+ getWindow().showNotification("Selected tab: " + c);
+ }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.java b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.java
new file mode 100644
index 0000000000..605cdadfc9
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.java
@@ -0,0 +1,35 @@
+package com.itmill.toolkit.demo.sampler.features.panels;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.ui.Panel;
+
+public class PanelBasic extends Feature {
+
+ @Override
+ public String getDescription() {
+ return "Panel is a simple container for one component."
+ + " A caption can optionally be added."
+ + "<br>A panel typically contains a layout component"
+ + " where the other components can be added.";
+
+ }
+
+ @Override
+ public APIResource[] getRelatedAPI() {
+ return new APIResource[] { new APIResource(Panel.class) };
+ }
+
+ @Override
+ public Class[] getRelatedFeatures() {
+ return new Class[] { PanelLight.class };
+ }
+
+ @Override
+ public NamedExternalResource[] getRelatedResources() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.png b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.png
new file mode 100644
index 0000000000..c1e3df6d7b
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.png
Binary files differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasicExample.java b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasicExample.java
new file mode 100644
index 0000000000..35d6faf17f
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasicExample.java
@@ -0,0 +1,44 @@
+package com.itmill.toolkit.demo.sampler.features.panels;
+
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.Panel;
+import com.itmill.toolkit.ui.VerticalLayout;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+import com.itmill.toolkit.ui.Button.ClickListener;
+
+public class PanelBasicExample extends VerticalLayout implements ClickListener {
+
+ private Panel p1;
+ private Panel p2;
+
+ public PanelBasicExample() {
+ setSpacing(true);
+
+ // First panel uses layout in which the components are added
+ VerticalLayout vl = new VerticalLayout();
+ Label l = new Label("Push the button to toggle caption.");
+ Button b = new Button("Toggle caption");
+ b.addListener(this);
+ vl.setSpacing(true);
+ vl.addComponent(l);
+ vl.addComponent(b);
+ p1 = new Panel("This is a standard Panel");
+ p1.setLayout(vl);
+
+ // We add the Label component directly to the second panel
+ p2 = new Panel();
+ p2.addComponent(new Label("This is a standard panel without caption."));
+
+ addComponent(p1);
+ addComponent(p2);
+ }
+
+ public void buttonClick(ClickEvent event) {
+ if (p1.getCaption().equals("")) {
+ p1.setCaption("This is a standard Panel");
+ } else {
+ p1.setCaption("");
+ }
+ }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.java b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.java
new file mode 100644
index 0000000000..6cc3db4ec1
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.java
@@ -0,0 +1,33 @@
+package com.itmill.toolkit.demo.sampler.features.panels;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.ui.Panel;
+
+public class PanelLight extends Feature {
+
+ @Override
+ public String getDescription() {
+ return "A lighter style for the Panel component is"
+ + " also available.";
+
+ }
+
+ @Override
+ public APIResource[] getRelatedAPI() {
+ return new APIResource[] { new APIResource(Panel.class) };
+ }
+
+ @Override
+ public Class[] getRelatedFeatures() {
+ return new Class[] { PanelBasic.class };
+ }
+
+ @Override
+ public NamedExternalResource[] getRelatedResources() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.png b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.png
new file mode 100644
index 0000000000..df98cde8e3
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.png
Binary files differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLightExample.java b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLightExample.java
new file mode 100644
index 0000000000..508c8397b2
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLightExample.java
@@ -0,0 +1,41 @@
+package com.itmill.toolkit.demo.sampler.features.panels;
+
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.Panel;
+import com.itmill.toolkit.ui.VerticalLayout;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+import com.itmill.toolkit.ui.Button.ClickListener;
+
+public class PanelLightExample extends VerticalLayout implements ClickListener {
+
+ private Panel p;
+
+ public PanelLightExample() {
+ setSpacing(true);
+
+ // First panel uses layout in which the components are added
+ VerticalLayout vl = new VerticalLayout();
+ Label l = new Label("Push the button to toggle style.");
+ Button b = new Button("Toggle style");
+ b.addListener(this);
+ vl.setSpacing(true);
+ vl.addComponent(l);
+ vl.addComponent(b);
+ p = new Panel("This is a light Panel");
+ p.setStyleName("light");
+ p.setLayout(vl);
+
+ addComponent(p);
+ }
+
+ public void buttonClick(ClickEvent event) {
+ if (p.getStyleName().contains("light")) {
+ p.removeStyleName("light");
+ p.setCaption("This is a standard Panel");
+ } else {
+ p.setStyleName("light");
+ p.setCaption("This is a light Panel");
+ }
+ }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.java b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.java
new file mode 100644
index 0000000000..bf1026193c
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.java
@@ -0,0 +1,33 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.ui.TabSheet;
+
+public class TabSheetDisabled extends Feature {
+
+ @Override
+ public String getDescription() {
+ return "With a tabsheet component you also have the"
+ + " ability to enable and disable as well as"
+ + " show and hide specific tabs.";
+ }
+
+ @Override
+ public APIResource[] getRelatedAPI() {
+ return new APIResource[] { new APIResource(TabSheet.class) };
+ }
+
+ @Override
+ public Class[] getRelatedFeatures() {
+ return new Class[] { TabSheetIcons.class, TabSheetScrolling.class };
+ }
+
+ @Override
+ public NamedExternalResource[] getRelatedResources() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.png b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.png
new file mode 100644
index 0000000000..e65d53fc2e
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.png
Binary files differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabledExample.java b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabledExample.java
new file mode 100644
index 0000000000..cd66f33942
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabledExample.java
@@ -0,0 +1,80 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;
+
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Button;
+import com.itmill.toolkit.ui.HorizontalLayout;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.TabSheet;
+import com.itmill.toolkit.ui.VerticalLayout;
+import com.itmill.toolkit.ui.Button.ClickEvent;
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;
+
+public class TabSheetDisabledExample extends VerticalLayout implements
+ TabSheet.SelectedTabChangeListener, Button.ClickListener {
+
+ private TabSheet t;
+ private Button b1;
+ private Button b2;
+ private Label l1;
+ private Label l2;
+ private Label l3;
+
+ public TabSheetDisabledExample() {
+ setSpacing(true);
+
+ l1 = new Label("There are no previously saved actions.");
+ l2 = new Label("There are no saved notes.");
+ l3 = new Label("There are currently no issues.");
+
+ ThemeResource i1 = new ThemeResource("icons/action_save.gif");
+ ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");
+ ThemeResource i3 = new ThemeResource("icons/icon_info.gif");
+
+ t = new TabSheet();
+ t.setHeight(400, UNITS_PIXELS);
+ t.setWidth(400, UNITS_PIXELS);
+ t.addTab(l1, "Saved actions", i1);
+ t.addTab(l2, "Notes", i2);
+ t.addTab(l3, "Issues", i3);
+ t.addListener(this);
+
+ b1 = new Button("Disable 'Notes' tab");
+ b2 = new Button("Hide 'Issues' tab");
+ b1.addListener(this);
+ b2.addListener(this);
+
+ HorizontalLayout hl = new HorizontalLayout();
+ hl.setSpacing(true);
+ hl.addComponent(b1);
+ hl.addComponent(b2);
+
+ addComponent(t);
+ addComponent(hl);
+ }
+
+ public void selectedTabChange(SelectedTabChangeEvent event) {
+ String c = t.getTabCaption(event.getTabSheet().getSelectedTab());
+ getWindow().showNotification("Selected tab: " + c);
+ }
+
+ public void buttonClick(ClickEvent event) {
+ if (b1.equals(event.getButton())) { // b1 clicked
+ if (l2.isEnabled()) {
+ l2.setEnabled(false);
+ b1.setCaption("Enable 'Notes' tab");
+ } else {
+ l2.setEnabled(true);
+ b1.setCaption("Disable 'Notes' tab");
+ }
+ } else { // b2 clicked
+ if (l3.isVisible()) {
+ l3.setVisible(false);
+ b2.setCaption("Show 'Issues' tab");
+ } else {
+ l3.setVisible(true);
+ b2.setCaption("Hide 'Issues' tab");
+ }
+ }
+ t.requestRepaint();
+ }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.java b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.java
new file mode 100644
index 0000000000..03c7f60db7
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.java
@@ -0,0 +1,35 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.ui.TabSheet;
+
+public class TabSheetIcons extends Feature {
+
+ @Override
+ public String getDescription() {
+ return "A tabsheet component with icons. Each tab can"
+ + " contain any component. In this simple example"
+ + " each tab contains a label."
+ + "<br> You can also attach a listener to the tab"
+ + " change event.";
+ }
+
+ @Override
+ public APIResource[] getRelatedAPI() {
+ return new APIResource[] { new APIResource(TabSheet.class) };
+ }
+
+ @Override
+ public Class[] getRelatedFeatures() {
+ return new Class[] { TabSheetScrolling.class, TabSheetDisabled.class };
+ }
+
+ @Override
+ public NamedExternalResource[] getRelatedResources() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.png b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.png
new file mode 100644
index 0000000000..86dd17e437
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.png
Binary files differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIconsExample.java b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIconsExample.java
new file mode 100644
index 0000000000..922974bab9
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIconsExample.java
@@ -0,0 +1,38 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;
+
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.TabSheet;
+import com.itmill.toolkit.ui.VerticalLayout;
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;
+
+public class TabSheetIconsExample extends VerticalLayout implements
+ TabSheet.SelectedTabChangeListener {
+
+ private TabSheet t;
+
+ public TabSheetIconsExample() {
+ Label l1 = new Label("There are no previously saved actions.");
+ Label l2 = new Label("There are no saved notes.");
+ Label l3 = new Label("There are currently no issues.");
+
+ ThemeResource i1 = new ThemeResource("icons/action_save.gif");
+ ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");
+ ThemeResource i3 = new ThemeResource("icons/icon_info.gif");
+
+ t = new TabSheet();
+ t.setHeight(400, UNITS_PIXELS);
+ t.setWidth(400, UNITS_PIXELS);
+ t.addTab(l1, "Saved actions", i1);
+ t.addTab(l2, "Notes", i2);
+ t.addTab(l3, "Issues", i3);
+ t.addListener(this);
+
+ addComponent(t);
+ }
+
+ public void selectedTabChange(SelectedTabChangeEvent event) {
+ String c = t.getTabCaption(event.getTabSheet().getSelectedTab());
+ getWindow().showNotification("Selected tab: " + c);
+ }
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.java b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.java
new file mode 100644
index 0000000000..1d3bf93a2c
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.java
@@ -0,0 +1,33 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;
+
+import com.itmill.toolkit.demo.sampler.APIResource;
+import com.itmill.toolkit.demo.sampler.Feature;
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;
+import com.itmill.toolkit.ui.TabSheet;
+
+public class TabSheetScrolling extends Feature {
+
+ @Override
+ public String getDescription() {
+ return "A tabsheet component with too many tabs to display"
+ + " within the width of the tabsheet. A scrolling"
+ + "feature will be added to the tab bar automatically.";
+ }
+
+ @Override
+ public APIResource[] getRelatedAPI() {
+ return new APIResource[] { new APIResource(TabSheet.class) };
+ }
+
+ @Override
+ public Class[] getRelatedFeatures() {
+ return new Class[] { TabSheetIcons.class, TabSheetDisabled.class };
+ }
+
+ @Override
+ public NamedExternalResource[] getRelatedResources() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.png b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.png
new file mode 100644
index 0000000000..18b3011b87
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.png
Binary files differ
diff --git a/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrollingExample.java b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrollingExample.java
new file mode 100644
index 0000000000..102a0879e2
--- /dev/null
+++ b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrollingExample.java
@@ -0,0 +1,42 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;
+
+import com.itmill.toolkit.terminal.ThemeResource;
+import com.itmill.toolkit.ui.Label;
+import com.itmill.toolkit.ui.TabSheet;
+import com.itmill.toolkit.ui.VerticalLayout;
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;
+
+public class TabSheetScrollingExample extends VerticalLayout implements
+ TabSheet.SelectedTabChangeListener {
+
+ private TabSheet t;
+
+ public TabSheetScrollingExample() {
+ Label l1 = new Label("There are no previously saved actions.");
+ Label l2 = new Label("There are no saved notes.");
+ Label l3 = new Label("There are currently no issues.");
+ Label l4 = new Label("There are no comments.");
+ Label l5 = new Label("There is no new feedback.");
+
+ ThemeResource i1 = new ThemeResource("icons/action_save.gif");
+ ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");
+ ThemeResource i3 = new ThemeResource("icons/icon_info.gif");
+
+ t = new TabSheet();
+ t.setHeight(400, UNITS_PIXELS);
+ t.setWidth(400, UNITS_PIXELS);
+ t.addTab(l1, "Saved actions", i1);
+ t.addTab(l2, "Notes", i2);
+ t.addTab(l3, "Issues", i3);
+ t.addTab(l4, "Comments", i2);
+ t.addTab(l5, "Feedback", i2);
+ t.addListener(this);
+
+ addComponent(t);
+ }
+
+ public void selectedTabChange(SelectedTabChangeEvent event) {
+ String c = t.getTabCaption(event.getTabSheet().getSelectedTab());
+ getWindow().showNotification("Selected tab: " + c);
+ }
+}