From: Teppo Kurki Date: Fri, 9 Jan 2009 13:17:36 +0000 (+0000) Subject: Added tabsheets, accordions and panels to the Sampler. X-Git-Tag: 6.7.0.beta1~3373 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=42bbeff56e6aebba793ae9c00e67b9782f2cba70;p=vaadin-framework.git Added tabsheets, accordions and panels to the Sampler. svn changeset:6479/svn branch:trunk --- 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 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 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 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 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." + + "
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 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 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 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 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 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 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." + + "
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 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 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 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 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); + } +}