com.cavisson.gui.dashboard.components.controls.Tabsheets.java Source code

Java tutorial

Introduction

Here is the source code for com.cavisson.gui.dashboard.components.controls.Tabsheets.java

Source

/*
 * Copyright 2000-2014 Vaadin Ltd.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations under
 * the License.
 */
package com.cavisson.gui.dashboard.components.controls;

import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.navigator.View;
import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
import com.vaadin.shared.ui.MarginInfo;
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);

        Label h1 = new Label("Tabs");
        h1.addStyleName("h1");
        addComponent(h1);

        HorizontalLayout wrap = new HorizontalLayout();
        wrap.setSpacing(true);
        wrap.addStyleName("wrapping");
        addComponent(wrap);

        final CheckBox closable = new CheckBox("Closable");
        closable.setImmediate(true);
        wrap.addComponent(closable);

        final CheckBox overflow = new CheckBox("Overflow");
        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 disable = new CheckBox("Disable tabs");
        disable.setImmediate(true);
        wrap.addComponent(disable);

        Label h3 = new Label("Additional Styles");
        h3.addStyleName("h3");
        addComponent(h3);

        wrap = new HorizontalLayout();
        wrap.setSpacing(true);
        wrap.addStyleName("wrapping");
        wrap.setMargin(new MarginInfo(false, false, true, false));
        addComponent(wrap);

        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 rightAlign = new CheckBox("Right-aligned tabs");
        rightAlign.setImmediate(true);
        wrap.addComponent(rightAlign);

        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 compact = new CheckBox("Compact");
        compact.setImmediate(true);
        wrap.addComponent(compact);

        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) {
                String style = framed.getValue() ? "framed " : "";
                style += centered.getValue() ? " centered-tabs" : "";
                style += rightAlign.getValue() ? " right-aligned-tabs" : "";
                style += equal.getValue() ? " equal-width-tabs" : "";
                style += padded.getValue() ? " padded-tabbar" : "";
                style += compact.getValue() ? " compact-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(), disable.getValue());
                addComponent(tabs);
            }
        };
        closable.addValueChangeListener(update);
        overflow.addValueChangeListener(update);
        caption.addValueChangeListener(update);
        icon.addValueChangeListener(update);
        disable.addValueChangeListener(update);
        framed.addValueChangeListener(update);
        centered.addValueChangeListener(update);
        rightAlign.addValueChangeListener(update);
        equal.addValueChangeListener(update);
        padded.addValueChangeListener(update);
        compact.addValueChangeListener(update);
        iconsOnTop.addValueChangeListener(update);
        selectedOnly.addValueChangeListener(update);

        // Generate initial view
        icon.setValue(true);
    }

    static TabSheet getTabSheet(boolean caption, String style, boolean closable, boolean scrolling, boolean icon,
            boolean disable) {
        TestIcon testIcon = new TestIcon(60);

        TabSheet ts = new TabSheet();
        ts.addStyleName(style);
        StringGenerator sg = new StringGenerator();

        for (int i = 1; i <= (scrolling ? 10 : 3); i++) {
            String tabcaption = caption ? sg.nextString(true) + " " + sg.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(content, tabcaption);
            t.setClosable(closable);
            t.setEnabled(!disable);

            // First tab is always enabled
            if (i == 1) {
                t.setEnabled(true);
            }

            if (icon) {
                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;
    }

    @Override
    public void enter(ViewChangeEvent event) {
        // TODO Auto-generated method stub

    }

}