package com.vaadin.tests.tickets; import com.vaadin.server.LegacyApplication; import com.vaadin.ui.Accordion; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; import com.vaadin.ui.LegacyWindow; import com.vaadin.ui.TabSheet; import com.vaadin.ui.VerticalLayout; public class Ticket2289 extends LegacyApplication { TabSheet ts = null; Accordion acc = null; @Override public void init() { LegacyWindow w = new LegacyWindow(); setMainWindow(w); VerticalLayout ol = new VerticalLayout(); w.setContent(ol); Button b = new Button("close current tab"); b.addListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { closeCurrentTab(); } }); ol.addComponent(b); b = new Button("close first tab"); b.addListener(new Button.ClickListener() { @Override public void buttonClick(ClickEvent event) { closeFirstTab(); } }); ol.addComponent(b); ts = new TabSheet(); ts.setSizeUndefined(); ts.setWidth("300px"); ts.addTab(new MyTab("tab one"), "Caption1", null); ts.addTab(new MyTab("tab two"), "Caption2", null); ts.addTab(new MyTab("tab three"), "Caption3", null); ts.addTab(new MyTab("tab four"), "Caption4", null); ts.addTab(new MyTab("tab five"), "Caption5", null); acc = new Accordion(); acc.setSizeUndefined(); acc.addTab(new MyTab("tab one"), "Caption1", null); acc.addTab(new MyTab("tab two"), "Caption2", null); acc.addTab(new MyTab("tab three"), "Caption3", null); acc.addTab(new MyTab("tab four"), "Caption4", null); ol.addComponent(acc); ts = null; // ol.addComponent(ts); } private void closeCurrentTab() { if (ts != null) { MyTab m = (MyTab) ts.getSelectedTab(); if (m != null) { ts.removeComponent(m); } } if (acc != null) { MyTab m = (MyTab) acc.getSelectedTab(); if (m != null) { acc.removeComponent(m); } } } private void closeFirstTab() { if (ts != null) { ts.removeComponent(ts.getComponentIterator().next()); } if (acc != null) { acc.removeComponent(acc.getComponentIterator().next()); } } } class MyTab extends CustomComponent { public MyTab(String text) { setSizeUndefined(); HorizontalLayout ol = new HorizontalLayout(); setCompositionRoot(ol); ol.addComponent(new Label(text)); } }