import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.TabSheet.SelectedTabChangeEvent;
+import com.vaadin.ui.TabSheet.SelectedTabChangeListener;
import com.vaadin.ui.TabSheet.Tab;
import com.vaadin.ui.VerticalLayout;
public class Tabsheets extends VerticalLayout implements View {
+
+ TabSheet tabs;
+
public Tabsheets() {
setMargin(true);
h1.addStyleName("h1");
addComponent(h1);
- final VerticalLayout wrap = new VerticalLayout();
+ final HorizontalLayout wrap = new HorizontalLayout();
wrap.setSpacing(true);
+ wrap.addStyleName("wrapping");
addComponent(wrap);
final CheckBox closable = new CheckBox("Closable");
overflow.setImmediate(true);
wrap.addComponent(overflow);
+ final CheckBox caption = new CheckBox("Captions", true);
+ caption.setImmediate(true);
+ wrap.addComponent(caption);
+
final CheckBox icon = new CheckBox("Icons");
icon.setImmediate(true);
wrap.addComponent(icon);
+ final CheckBox framed = new CheckBox("Framed", true);
+ framed.setImmediate(true);
+ wrap.addComponent(framed);
+
+ final CheckBox centered = new CheckBox("Centered Tabs");
+ centered.setImmediate(true);
+ wrap.addComponent(centered);
+
+ final CheckBox equal = new CheckBox("Equal-width tabs");
+ equal.setImmediate(true);
+ wrap.addComponent(equal);
+
+ final CheckBox padded = new CheckBox("Padded tabbar");
+ padded.setImmediate(true);
+ wrap.addComponent(padded);
+
+ final CheckBox iconsOnTop = new CheckBox("Icons on top");
+ iconsOnTop.setImmediate(true);
+ wrap.addComponent(iconsOnTop);
+
+ final CheckBox selectedOnly = new CheckBox("Selected tab closable");
+ selectedOnly.setImmediate(true);
+ wrap.addComponent(selectedOnly);
+
ValueChangeListener update = new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
- wrap.removeAllComponents();
-
- wrap.addComponents(closable, overflow, icon);
-
- wrap.addComponent(getTabSheet("Normal", null,
- closable.getValue(), overflow.getValue(),
- icon.getValue()));
- wrap.addComponent(getTabSheet("Centered tabs", "centered-tabs",
+ String style = framed.getValue() ? "framed " : "";
+ style += centered.getValue() ? " centered-tabs" : "";
+ style += equal.getValue() ? " equal-width-tabs" : "";
+ style += padded.getValue() ? " padded-tabbar" : "";
+ style += iconsOnTop.getValue() ? " icons-on-top" : "";
+ style += selectedOnly.getValue() ? " only-selected-closable"
+ : "";
+
+ if (tabs != null) {
+ removeComponent(tabs);
+ }
+ tabs = getTabSheet(caption.getValue(), style.trim(),
closable.getValue(), overflow.getValue(),
- icon.getValue()));
- wrap.addComponent(getTabSheet("Equal-width tabs",
- "equal-width-tabs", closable.getValue(),
- overflow.getValue(), icon.getValue()));
- wrap.addComponent(getTabSheet("Icons on top + padded tabbar",
- "icons-on-top padded-tabbar", closable.getValue(),
- overflow.getValue(), icon.getValue()));
- wrap.addComponent(getTabSheet("Only selected tab is closable",
- "only-selected-closable", closable.getValue(),
- overflow.getValue(), icon.getValue()));
+ icon.getValue());
+ addComponent(tabs);
}
};
closable.addValueChangeListener(update);
overflow.addValueChangeListener(update);
+ caption.addValueChangeListener(update);
icon.addValueChangeListener(update);
+ framed.addValueChangeListener(update);
+ centered.addValueChangeListener(update);
+ equal.addValueChangeListener(update);
+ padded.addValueChangeListener(update);
+ iconsOnTop.addValueChangeListener(update);
+ selectedOnly.addValueChangeListener(update);
// Generate initial view
icon.setValue(true);
}
- TabSheet getTabSheet(String caption, String style, boolean closable,
+ TabSheet getTabSheet(boolean caption, String style, boolean closable,
boolean scrolling, boolean icon) {
TabSheet ts = new TabSheet();
ts.addStyleName(style);
- ts.setCaption(caption);
- for (int i = 0; i < (scrolling ? 10 : 3); i++) {
- String tabcaption = ValoThemeTest.nextString(true);
- if (i == 0 && icon) {
- tabcaption = null;
+ for (int i = 1; i <= (scrolling ? 10 : 3); i++) {
+ String tabcaption = caption ? ValoThemeTest.nextString(true) + " "
+ + ValoThemeTest.nextString(false) : null;
+
+ VerticalLayout content = new VerticalLayout();
+ content.setMargin(true);
+ content.setSpacing(true);
+ content.addComponent(new Label("Content for tab " + i));
+ if (i == 2) {
+ content.addComponent(new Label(
+ "Excepteur sint obcaecat cupiditat non proident culpa. Magna pars studiorum, prodita quaerimus."));
}
- Tab t = ts.addTab(new Label(" "), tabcaption);
+ Tab t = ts.addTab(content, tabcaption);
t.setClosable(closable);
if (icon) {
- t.setIcon(TestIcon.get(i == 2));
+ t.setIcon(TestIcon.get(false));
}
}
+
+ ts.addSelectedTabChangeListener(new SelectedTabChangeListener() {
+ @Override
+ public void selectedTabChange(SelectedTabChangeEvent event) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ }
+ });
+
return ts;
}