From dfdd9950c484d12dbee78890f4abe143d449abf2 Mon Sep 17 00:00:00 2001 From: Marc Englund Date: Tue, 15 Jun 2010 13:54:16 +0000 Subject: [PATCH] Added removeTab(Tab) to TabSheet, fixes #5179 svn changeset:13674/svn branch:6.4 --- src/com/vaadin/ui/TabSheet.java | 26 +++++++++++++++++++ .../tests/components/tabsheet/RemoveTabs.java | 19 ++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/src/com/vaadin/ui/TabSheet.java b/src/com/vaadin/ui/TabSheet.java index 02af64a5fe..db8178ed07 100644 --- a/src/com/vaadin/ui/TabSheet.java +++ b/src/com/vaadin/ui/TabSheet.java @@ -150,6 +150,32 @@ public class TabSheet extends AbstractComponentContainer { } } + /** + * Removes a {@link Tab} and the component associated with it, as previously + * added with {@link #addTab(Component)}, + * {@link #addTab(Component, String, Resource)} or + * {@link #addComponent(Component)}. + *

+ * If the tab was selected, the first eligible (visible and enabled) + * remaining tab is selected. + *

+ * + * @see #addTab(Component) + * @see #addTab(Component, String, Resource) + * @see #addComponent(Component) + * @see #removeComponent(Component) + * @param tab + * the Tab to remove + */ + public void removeTab(Tab tab) { + for (Component c : tabs.keySet()) { + if (tabs.get(c).equals(tab)) { + removeComponent(c); + break; + } + } + } + /** * Adds a new tab into TabSheet. Component caption and icon are copied to * the tab metadata at creation time. diff --git a/tests/src/com/vaadin/tests/components/tabsheet/RemoveTabs.java b/tests/src/com/vaadin/tests/components/tabsheet/RemoveTabs.java index c2f8af8454..7194ddf9fd 100644 --- a/tests/src/com/vaadin/tests/components/tabsheet/RemoveTabs.java +++ b/tests/src/com/vaadin/tests/components/tabsheet/RemoveTabs.java @@ -11,6 +11,7 @@ import com.vaadin.ui.Component; import com.vaadin.ui.Label; import com.vaadin.ui.TabSheet; import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.TabSheet.Tab; public class RemoveTabs extends TestBase { @@ -19,6 +20,7 @@ public class RemoveTabs extends TestBase { protected Component[] tab = new Component[5]; private Button closeCurrent; + private Button closeCurrentWithTab; private Button closeFirst; private Button closeLast; private Button reorderTabs; @@ -53,6 +55,14 @@ public class RemoveTabs extends TestBase { } }); + closeCurrentWithTab = new Button("Close current tab with Tab"); + closeCurrentWithTab.addListener(new Button.ClickListener() { + public void buttonClick(ClickEvent event) { + closeCurrentTabWithTab(); + + } + }); + closeFirst = new Button("close first tab"); closeFirst.addListener(new Button.ClickListener() { public void buttonClick(ClickEvent event) { @@ -80,6 +90,7 @@ public class RemoveTabs extends TestBase { getLayout().addComponent(closeFirst); getLayout().addComponent(closeLast); getLayout().addComponent(closeCurrent); + getLayout().addComponent(closeCurrentWithTab); getLayout().addComponent(reorderTabs); } @@ -91,6 +102,14 @@ public class RemoveTabs extends TestBase { } } + private void closeCurrentTabWithTab() { + Component c = tabsheet.getSelectedTab(); + if (c != null) { + Tab t = tabsheet.getTab(c); + tabsheet.removeTab(t); + } + } + private void closeFirstTab() { tabsheet.removeComponent((Component) tabsheet.getComponentIterator() .next()); -- 2.39.5