]> source.dussan.org Git - vaadin-framework.git/commitdiff
Added tabsheets, accordions and panels to the Sampler.
authorTeppo Kurki <teppo.kurki@itmill.com>
Fri, 9 Jan 2009 13:17:36 +0000 (13:17 +0000)
committerTeppo Kurki <teppo.kurki@itmill.com>
Fri, 9 Jan 2009 13:17:36 +0000 (13:17 +0000)
svn changeset:6479/svn branch:trunk

22 files changed:
src/com/itmill/toolkit/demo/sampler/FeatureSet.java
src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabledExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIconsExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasicExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/panels/PanelLightExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabledExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIconsExample.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.java [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.png [new file with mode: 0644]
src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrollingExample.java [new file with mode: 0644]

index 8f666e987a3eb0195686273826cda9e05c88f83d..610558996dc6d2a68181662cca150cc5eec40686 100644 (file)
@@ -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 (file)
index 0000000..5e7d22c
--- /dev/null
@@ -0,0 +1,32 @@
+package com.itmill.toolkit.demo.sampler.features.accordions;\r
+\r
+import com.itmill.toolkit.demo.sampler.APIResource;\r
+import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
+import com.itmill.toolkit.ui.Accordion;\r
+\r
+public class AccordionDisabled extends Feature {\r
+\r
+    @Override\r
+    public String getDescription() {\r
+        return "With an accordion component you can disable, enable,"\r
+                + " hide and show tabs, similary to a tabsheet.";\r
+    }\r
+\r
+    @Override\r
+    public APIResource[] getRelatedAPI() {\r
+        return new APIResource[] { new APIResource(Accordion.class) };\r
+    }\r
+\r
+    @Override\r
+    public Class[] getRelatedFeatures() {\r
+        return new Class[] { AccordionIcons.class };\r
+    }\r
+\r
+    @Override\r
+    public NamedExternalResource[] getRelatedResources() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+}\r
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 (file)
index 0000000..de768e6
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionDisabled.png 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 (file)
index 0000000..cafb2ff
--- /dev/null
@@ -0,0 +1,80 @@
+package com.itmill.toolkit.demo.sampler.features.accordions;\r
+\r
+import com.itmill.toolkit.terminal.ThemeResource;\r
+import com.itmill.toolkit.ui.Accordion;\r
+import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.HorizontalLayout;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.VerticalLayout;\r
+import com.itmill.toolkit.ui.Button.ClickEvent;\r
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;\r
+\r
+public class AccordionDisabledExample extends VerticalLayout implements\r
+        Accordion.SelectedTabChangeListener, Button.ClickListener {\r
+\r
+    private Accordion a;\r
+    private Button b1;\r
+    private Button b2;\r
+    private Label l1;\r
+    private Label l2;\r
+    private Label l3;\r
+\r
+    public AccordionDisabledExample() {\r
+        setSpacing(true);\r
+\r
+        l1 = new Label("There are no previously saved actions.");\r
+        l2 = new Label("There are no saved notes.");\r
+        l3 = new Label("There are currently no issues.");\r
+\r
+        ThemeResource i1 = new ThemeResource("icons/action_save.gif");\r
+        ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");\r
+        ThemeResource i3 = new ThemeResource("icons/icon_info.gif");\r
+\r
+        a = new Accordion();\r
+        a.setHeight(400, UNITS_PIXELS);\r
+        a.setWidth(400, UNITS_PIXELS);\r
+        a.addTab(l1, "Saved actions", i1);\r
+        a.addTab(l2, "Notes", i2);\r
+        a.addTab(l3, "Issues", i3);\r
+        a.addListener(this);\r
+\r
+        b1 = new Button("Disable 'Notes' tab");\r
+        b2 = new Button("Hide 'Issues' tab");\r
+        b1.addListener(this);\r
+        b2.addListener(this);\r
+\r
+        HorizontalLayout hl = new HorizontalLayout();\r
+        hl.setSpacing(true);\r
+        hl.addComponent(b1);\r
+        hl.addComponent(b2);\r
+\r
+        addComponent(a);\r
+        addComponent(hl);\r
+    }\r
+\r
+    public void selectedTabChange(SelectedTabChangeEvent event) {\r
+        String c = a.getTabCaption(event.getTabSheet().getSelectedTab());\r
+        getWindow().showNotification("Selected tab: " + c);\r
+    }\r
+\r
+    public void buttonClick(ClickEvent event) {\r
+        if (b1.equals(event.getButton())) { // b1 clicked\r
+            if (l2.isEnabled()) {\r
+                l2.setEnabled(false);\r
+                b1.setCaption("Enable 'Notes' tab");\r
+            } else {\r
+                l2.setEnabled(true);\r
+                b1.setCaption("Disable 'Notes' tab");\r
+            }\r
+        } else { // b2 clicked\r
+            if (l3.isVisible()) {\r
+                l3.setVisible(false);\r
+                b2.setCaption("Show 'Issues' tab");\r
+            } else {\r
+                l3.setVisible(true);\r
+                b2.setCaption("Hide 'Issues' tab");\r
+            }\r
+        }\r
+        a.requestRepaint();\r
+    }\r
+}\r
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 (file)
index 0000000..9503378
--- /dev/null
@@ -0,0 +1,34 @@
+package com.itmill.toolkit.demo.sampler.features.accordions;\r
+\r
+import com.itmill.toolkit.demo.sampler.APIResource;\r
+import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
+import com.itmill.toolkit.ui.Accordion;\r
+\r
+public class AccordionIcons extends Feature {\r
+\r
+    @Override\r
+    public String getDescription() {\r
+        return "An accordion component is a specialized case of a"\r
+                + " tabsheet. Within an accordion, the tabs are organized"\r
+                + " vertically, and the content will be shown directly"\r
+                + " below the tab.";\r
+    }\r
+\r
+    @Override\r
+    public APIResource[] getRelatedAPI() {\r
+        return new APIResource[] { new APIResource(Accordion.class) };\r
+    }\r
+\r
+    @Override\r
+    public Class[] getRelatedFeatures() {\r
+        return new Class[] { AccordionDisabled.class };\r
+    }\r
+\r
+    @Override\r
+    public NamedExternalResource[] getRelatedResources() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+}\r
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 (file)
index 0000000..60f5cc9
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/accordions/AccordionIcons.png 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 (file)
index 0000000..d76892e
--- /dev/null
@@ -0,0 +1,40 @@
+package com.itmill.toolkit.demo.sampler.features.accordions;\r
+\r
+import com.itmill.toolkit.terminal.ThemeResource;\r
+import com.itmill.toolkit.ui.Accordion;\r
+import com.itmill.toolkit.ui.HorizontalLayout;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;\r
+\r
+public class AccordionIconsExample extends HorizontalLayout implements\r
+        Accordion.SelectedTabChangeListener {\r
+\r
+    private Accordion a;\r
+\r
+    public AccordionIconsExample() {\r
+        setSpacing(true);\r
+\r
+        Label l1 = new Label("There are no previously saved actions.");\r
+        Label l2 = new Label("There are no saved notes.");\r
+        Label l3 = new Label("There are currently no issues.");\r
+\r
+        ThemeResource i1 = new ThemeResource("icons/action_save.gif");\r
+        ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");\r
+        ThemeResource i3 = new ThemeResource("icons/icon_info.gif");\r
+\r
+        a = new Accordion();\r
+        a.setHeight(400, UNITS_PIXELS);\r
+        a.setWidth(400, UNITS_PIXELS);\r
+        a.addTab(l1, "Saved actions", i1);\r
+        a.addTab(l2, "Notes", i2);\r
+        a.addTab(l3, "Issues", i3);\r
+        a.addListener(this);\r
+\r
+        addComponent(a);\r
+    }\r
+\r
+    public void selectedTabChange(SelectedTabChangeEvent event) {\r
+        String c = a.getTabCaption(event.getTabSheet().getSelectedTab());\r
+        getWindow().showNotification("Selected tab: " + c);\r
+    }\r
+}\r
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 (file)
index 0000000..605cdad
--- /dev/null
@@ -0,0 +1,35 @@
+package com.itmill.toolkit.demo.sampler.features.panels;\r
+\r
+import com.itmill.toolkit.demo.sampler.APIResource;\r
+import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
+import com.itmill.toolkit.ui.Panel;\r
+\r
+public class PanelBasic extends Feature {\r
+\r
+    @Override\r
+    public String getDescription() {\r
+        return "Panel is a simple container for one component."\r
+                + " A caption can optionally be added."\r
+                + "<br>A panel typically contains a layout component"\r
+                + " where the other components can be added.";\r
+\r
+    }\r
+\r
+    @Override\r
+    public APIResource[] getRelatedAPI() {\r
+        return new APIResource[] { new APIResource(Panel.class) };\r
+    }\r
+\r
+    @Override\r
+    public Class[] getRelatedFeatures() {\r
+        return new Class[] { PanelLight.class };\r
+    }\r
+\r
+    @Override\r
+    public NamedExternalResource[] getRelatedResources() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+}\r
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 (file)
index 0000000..c1e3df6
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelBasic.png 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 (file)
index 0000000..35d6faf
--- /dev/null
@@ -0,0 +1,44 @@
+package com.itmill.toolkit.demo.sampler.features.panels;\r
+\r
+import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.Panel;\r
+import com.itmill.toolkit.ui.VerticalLayout;\r
+import com.itmill.toolkit.ui.Button.ClickEvent;\r
+import com.itmill.toolkit.ui.Button.ClickListener;\r
+\r
+public class PanelBasicExample extends VerticalLayout implements ClickListener {\r
+\r
+    private Panel p1;\r
+    private Panel p2;\r
+\r
+    public PanelBasicExample() {\r
+        setSpacing(true);\r
+\r
+        // First panel uses layout in which the components are added\r
+        VerticalLayout vl = new VerticalLayout();\r
+        Label l = new Label("Push the button to toggle caption.");\r
+        Button b = new Button("Toggle caption");\r
+        b.addListener(this);\r
+        vl.setSpacing(true);\r
+        vl.addComponent(l);\r
+        vl.addComponent(b);\r
+        p1 = new Panel("This is a standard Panel");\r
+        p1.setLayout(vl);\r
+\r
+        // We add the Label component directly to the second panel\r
+        p2 = new Panel();\r
+        p2.addComponent(new Label("This is a standard panel without caption."));\r
+\r
+        addComponent(p1);\r
+        addComponent(p2);\r
+    }\r
+\r
+    public void buttonClick(ClickEvent event) {\r
+        if (p1.getCaption().equals("")) {\r
+            p1.setCaption("This is a standard Panel");\r
+        } else {\r
+            p1.setCaption("");\r
+        }\r
+    }\r
+}\r
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 (file)
index 0000000..6cc3db4
--- /dev/null
@@ -0,0 +1,33 @@
+package com.itmill.toolkit.demo.sampler.features.panels;\r
+\r
+import com.itmill.toolkit.demo.sampler.APIResource;\r
+import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
+import com.itmill.toolkit.ui.Panel;\r
+\r
+public class PanelLight extends Feature {\r
+\r
+    @Override\r
+    public String getDescription() {\r
+        return "A lighter style for the Panel component is"\r
+                + " also available.";\r
+\r
+    }\r
+\r
+    @Override\r
+    public APIResource[] getRelatedAPI() {\r
+        return new APIResource[] { new APIResource(Panel.class) };\r
+    }\r
+\r
+    @Override\r
+    public Class[] getRelatedFeatures() {\r
+        return new Class[] { PanelBasic.class };\r
+    }\r
+\r
+    @Override\r
+    public NamedExternalResource[] getRelatedResources() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+}\r
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 (file)
index 0000000..df98cde
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/panels/PanelLight.png 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 (file)
index 0000000..508c839
--- /dev/null
@@ -0,0 +1,41 @@
+package com.itmill.toolkit.demo.sampler.features.panels;\r
+\r
+import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.Panel;\r
+import com.itmill.toolkit.ui.VerticalLayout;\r
+import com.itmill.toolkit.ui.Button.ClickEvent;\r
+import com.itmill.toolkit.ui.Button.ClickListener;\r
+\r
+public class PanelLightExample extends VerticalLayout implements ClickListener {\r
+\r
+    private Panel p;\r
+\r
+    public PanelLightExample() {\r
+        setSpacing(true);\r
+\r
+        // First panel uses layout in which the components are added\r
+        VerticalLayout vl = new VerticalLayout();\r
+        Label l = new Label("Push the button to toggle style.");\r
+        Button b = new Button("Toggle style");\r
+        b.addListener(this);\r
+        vl.setSpacing(true);\r
+        vl.addComponent(l);\r
+        vl.addComponent(b);\r
+        p = new Panel("This is a light Panel");\r
+        p.setStyleName("light");\r
+        p.setLayout(vl);\r
+\r
+        addComponent(p);\r
+    }\r
+\r
+    public void buttonClick(ClickEvent event) {\r
+        if (p.getStyleName().contains("light")) {\r
+            p.removeStyleName("light");\r
+            p.setCaption("This is a standard Panel");\r
+        } else {\r
+            p.setStyleName("light");\r
+            p.setCaption("This is a light Panel");\r
+        }\r
+    }\r
+}\r
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 (file)
index 0000000..bf10261
--- /dev/null
@@ -0,0 +1,33 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;\r
+\r
+import com.itmill.toolkit.demo.sampler.APIResource;\r
+import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
+import com.itmill.toolkit.ui.TabSheet;\r
+\r
+public class TabSheetDisabled extends Feature {\r
+\r
+    @Override\r
+    public String getDescription() {\r
+        return "With a tabsheet component you also have the"\r
+                + " ability to enable and disable as well as"\r
+                + " show and hide specific tabs.";\r
+    }\r
+\r
+    @Override\r
+    public APIResource[] getRelatedAPI() {\r
+        return new APIResource[] { new APIResource(TabSheet.class) };\r
+    }\r
+\r
+    @Override\r
+    public Class[] getRelatedFeatures() {\r
+        return new Class[] { TabSheetIcons.class, TabSheetScrolling.class };\r
+    }\r
+\r
+    @Override\r
+    public NamedExternalResource[] getRelatedResources() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+}\r
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 (file)
index 0000000..e65d53f
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetDisabled.png 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 (file)
index 0000000..cd66f33
--- /dev/null
@@ -0,0 +1,80 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;\r
+\r
+import com.itmill.toolkit.terminal.ThemeResource;\r
+import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.HorizontalLayout;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.TabSheet;\r
+import com.itmill.toolkit.ui.VerticalLayout;\r
+import com.itmill.toolkit.ui.Button.ClickEvent;\r
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;\r
+\r
+public class TabSheetDisabledExample extends VerticalLayout implements\r
+        TabSheet.SelectedTabChangeListener, Button.ClickListener {\r
+\r
+    private TabSheet t;\r
+    private Button b1;\r
+    private Button b2;\r
+    private Label l1;\r
+    private Label l2;\r
+    private Label l3;\r
+\r
+    public TabSheetDisabledExample() {\r
+        setSpacing(true);\r
+\r
+        l1 = new Label("There are no previously saved actions.");\r
+        l2 = new Label("There are no saved notes.");\r
+        l3 = new Label("There are currently no issues.");\r
+\r
+        ThemeResource i1 = new ThemeResource("icons/action_save.gif");\r
+        ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");\r
+        ThemeResource i3 = new ThemeResource("icons/icon_info.gif");\r
+\r
+        t = new TabSheet();\r
+        t.setHeight(400, UNITS_PIXELS);\r
+        t.setWidth(400, UNITS_PIXELS);\r
+        t.addTab(l1, "Saved actions", i1);\r
+        t.addTab(l2, "Notes", i2);\r
+        t.addTab(l3, "Issues", i3);\r
+        t.addListener(this);\r
+\r
+        b1 = new Button("Disable 'Notes' tab");\r
+        b2 = new Button("Hide 'Issues' tab");\r
+        b1.addListener(this);\r
+        b2.addListener(this);\r
+\r
+        HorizontalLayout hl = new HorizontalLayout();\r
+        hl.setSpacing(true);\r
+        hl.addComponent(b1);\r
+        hl.addComponent(b2);\r
+\r
+        addComponent(t);\r
+        addComponent(hl);\r
+    }\r
+\r
+    public void selectedTabChange(SelectedTabChangeEvent event) {\r
+        String c = t.getTabCaption(event.getTabSheet().getSelectedTab());\r
+        getWindow().showNotification("Selected tab: " + c);\r
+    }\r
+\r
+    public void buttonClick(ClickEvent event) {\r
+        if (b1.equals(event.getButton())) { // b1 clicked\r
+            if (l2.isEnabled()) {\r
+                l2.setEnabled(false);\r
+                b1.setCaption("Enable 'Notes' tab");\r
+            } else {\r
+                l2.setEnabled(true);\r
+                b1.setCaption("Disable 'Notes' tab");\r
+            }\r
+        } else { // b2 clicked\r
+            if (l3.isVisible()) {\r
+                l3.setVisible(false);\r
+                b2.setCaption("Show 'Issues' tab");\r
+            } else {\r
+                l3.setVisible(true);\r
+                b2.setCaption("Hide 'Issues' tab");\r
+            }\r
+        }\r
+        t.requestRepaint();\r
+    }\r
+}\r
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 (file)
index 0000000..03c7f60
--- /dev/null
@@ -0,0 +1,35 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;\r
+\r
+import com.itmill.toolkit.demo.sampler.APIResource;\r
+import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
+import com.itmill.toolkit.ui.TabSheet;\r
+\r
+public class TabSheetIcons extends Feature {\r
+\r
+    @Override\r
+    public String getDescription() {\r
+        return "A tabsheet component with icons. Each tab can"\r
+                + " contain any component. In this simple example"\r
+                + " each tab contains a label."\r
+                + "<br> You can also attach a listener to the tab"\r
+                + " change event.";\r
+    }\r
+\r
+    @Override\r
+    public APIResource[] getRelatedAPI() {\r
+        return new APIResource[] { new APIResource(TabSheet.class) };\r
+    }\r
+\r
+    @Override\r
+    public Class[] getRelatedFeatures() {\r
+        return new Class[] { TabSheetScrolling.class, TabSheetDisabled.class };\r
+    }\r
+\r
+    @Override\r
+    public NamedExternalResource[] getRelatedResources() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+}\r
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 (file)
index 0000000..86dd17e
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetIcons.png 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 (file)
index 0000000..922974b
--- /dev/null
@@ -0,0 +1,38 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;\r
+\r
+import com.itmill.toolkit.terminal.ThemeResource;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.TabSheet;\r
+import com.itmill.toolkit.ui.VerticalLayout;\r
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;\r
+\r
+public class TabSheetIconsExample extends VerticalLayout implements\r
+        TabSheet.SelectedTabChangeListener {\r
+\r
+    private TabSheet t;\r
+\r
+    public TabSheetIconsExample() {\r
+        Label l1 = new Label("There are no previously saved actions.");\r
+        Label l2 = new Label("There are no saved notes.");\r
+        Label l3 = new Label("There are currently no issues.");\r
+\r
+        ThemeResource i1 = new ThemeResource("icons/action_save.gif");\r
+        ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");\r
+        ThemeResource i3 = new ThemeResource("icons/icon_info.gif");\r
+\r
+        t = new TabSheet();\r
+        t.setHeight(400, UNITS_PIXELS);\r
+        t.setWidth(400, UNITS_PIXELS);\r
+        t.addTab(l1, "Saved actions", i1);\r
+        t.addTab(l2, "Notes", i2);\r
+        t.addTab(l3, "Issues", i3);\r
+        t.addListener(this);\r
+\r
+        addComponent(t);\r
+    }\r
+\r
+    public void selectedTabChange(SelectedTabChangeEvent event) {\r
+        String c = t.getTabCaption(event.getTabSheet().getSelectedTab());\r
+        getWindow().showNotification("Selected tab: " + c);\r
+    }\r
+}\r
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 (file)
index 0000000..1d3bf93
--- /dev/null
@@ -0,0 +1,33 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;\r
+\r
+import com.itmill.toolkit.demo.sampler.APIResource;\r
+import com.itmill.toolkit.demo.sampler.Feature;\r
+import com.itmill.toolkit.demo.sampler.NamedExternalResource;\r
+import com.itmill.toolkit.ui.TabSheet;\r
+\r
+public class TabSheetScrolling extends Feature {\r
+\r
+    @Override\r
+    public String getDescription() {\r
+        return "A tabsheet component with too many tabs to display"\r
+                + " within the width of the tabsheet. A scrolling"\r
+                + "feature will be added to the tab bar automatically.";\r
+    }\r
+\r
+    @Override\r
+    public APIResource[] getRelatedAPI() {\r
+        return new APIResource[] { new APIResource(TabSheet.class) };\r
+    }\r
+\r
+    @Override\r
+    public Class[] getRelatedFeatures() {\r
+        return new Class[] { TabSheetIcons.class, TabSheetDisabled.class };\r
+    }\r
+\r
+    @Override\r
+    public NamedExternalResource[] getRelatedResources() {\r
+        // TODO Auto-generated method stub\r
+        return null;\r
+    }\r
+\r
+}\r
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 (file)
index 0000000..18b3011
Binary files /dev/null and b/src/com/itmill/toolkit/demo/sampler/features/tabsheets/TabSheetScrolling.png 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 (file)
index 0000000..102a087
--- /dev/null
@@ -0,0 +1,42 @@
+package com.itmill.toolkit.demo.sampler.features.tabsheets;\r
+\r
+import com.itmill.toolkit.terminal.ThemeResource;\r
+import com.itmill.toolkit.ui.Label;\r
+import com.itmill.toolkit.ui.TabSheet;\r
+import com.itmill.toolkit.ui.VerticalLayout;\r
+import com.itmill.toolkit.ui.TabSheet.SelectedTabChangeEvent;\r
+\r
+public class TabSheetScrollingExample extends VerticalLayout implements\r
+        TabSheet.SelectedTabChangeListener {\r
+\r
+    private TabSheet t;\r
+\r
+    public TabSheetScrollingExample() {\r
+        Label l1 = new Label("There are no previously saved actions.");\r
+        Label l2 = new Label("There are no saved notes.");\r
+        Label l3 = new Label("There are currently no issues.");\r
+        Label l4 = new Label("There are no comments.");\r
+        Label l5 = new Label("There is no new feedback.");\r
+\r
+        ThemeResource i1 = new ThemeResource("icons/action_save.gif");\r
+        ThemeResource i2 = new ThemeResource("icons/comment_yellow.gif");\r
+        ThemeResource i3 = new ThemeResource("icons/icon_info.gif");\r
+\r
+        t = new TabSheet();\r
+        t.setHeight(400, UNITS_PIXELS);\r
+        t.setWidth(400, UNITS_PIXELS);\r
+        t.addTab(l1, "Saved actions", i1);\r
+        t.addTab(l2, "Notes", i2);\r
+        t.addTab(l3, "Issues", i3);\r
+        t.addTab(l4, "Comments", i2);\r
+        t.addTab(l5, "Feedback", i2);\r
+        t.addListener(this);\r
+\r
+        addComponent(t);\r
+    }\r
+\r
+    public void selectedTabChange(SelectedTabChangeEvent event) {\r
+        String c = t.getTabCaption(event.getTabSheet().getSelectedTab());\r
+        getWindow().showNotification("Selected tab: " + c);\r
+    }\r
+}\r