org.vaadin.alump.fancylayouts.demo.PanelDemo.java Source code

Java tutorial

Introduction

Here is the source code for org.vaadin.alump.fancylayouts.demo.PanelDemo.java

Source

/**
 * PanelDemo.java (FancyLayouts)
 * 
 * Copyright 2012 Vaadin Ltd, Sami Viitanen <alump@vaadin.org>
 *
 * 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 org.vaadin.alump.fancylayouts.demo;

import org.vaadin.alump.fancylayouts.FancyPanel;

import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.server.ExternalResource;
import com.vaadin.server.ThemeResource;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Component;
import com.vaadin.ui.ComponentContainer;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.Embedded;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Image;
import com.vaadin.ui.Label;
import com.vaadin.ui.VerticalLayout;

/**
 * Demo using FancyPanel
 */
@SuppressWarnings("serial")
public class PanelDemo extends VerticalLayout {

    protected FancyPanel panel;
    protected Component introPanel;
    protected Component panelA;
    protected Component panelB;
    protected Component panelC;
    protected CheckBox fade;
    protected CheckBox zoom;
    protected CheckBox rotate;
    protected CheckBox horizontal;

    public PanelDemo() {
        setMargin(true);
        setSizeFull();
        setSpacing(true);

        panel = new FancyPanel(createPanelContentStart());

        Label label = new Label("FancyPanel is panel that offer scrolling and transition when "
                + "you replace it's content with setContent() call. It's like "
                + "Vaadin Panel, but I haven't added panel styling DOM "
                + "elements to keep this clean and simple.");
        addComponent(label);

        HorizontalLayout buttonLayout = new HorizontalLayout();
        buttonLayout.setSpacing(true);
        addComponent(buttonLayout);

        Button contA = new Button("Panel content A");
        buttonLayout.addComponent(contA);

        Button contB = new Button("Panel content B");
        buttonLayout.addComponent(contB);

        Button contC = new Button("Panel content C");
        buttonLayout.addComponent(contC);

        CheckBox scrollable = new CheckBox("scrollable");
        scrollable.setValue(panel.isScrollable());
        scrollable.setImmediate(true);
        buttonLayout.addComponent(scrollable);

        fade = new CheckBox("fade");
        fade.setImmediate(true);
        buttonLayout.addComponent(fade);

        zoom = new CheckBox("zoom");
        zoom.setImmediate(true);
        buttonLayout.addComponent(zoom);

        rotate = new CheckBox("rotate");
        rotate.setImmediate(true);
        buttonLayout.addComponent(rotate);

        horizontal = new CheckBox("horizontal");
        horizontal.setValue(true);
        horizontal.setImmediate(true);
        buttonLayout.addComponent(horizontal);

        panel.setSizeFull();
        addComponent(panel);
        setExpandRatio(panel, 1.0f);

        contA.addClickListener(new Button.ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                if (panelA == null) {
                    panelA = createPanelContentA();
                }
                panel.showComponent(panelA);
                removeIntro();
            }
        });

        contB.addClickListener(new Button.ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                if (panelB == null) {
                    panelB = createPanelContentB();
                }
                panel.showComponent(panelB);
                removeIntro();
            }
        });

        contC.addClickListener(new Button.ClickListener() {

            @Override
            public void buttonClick(ClickEvent event) {
                if (panelC == null) {
                    panelC = createPanelContentD();
                }
                panel.showComponent(panelC);
                removeIntro();
            }
        });

        scrollable.addValueChangeListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {
                boolean enable = (Boolean) event.getProperty().getValue();
                // Set scrollable value of panel
                panel.setScrollable(enable);
            }
        });

        fade.addValueChangeListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {
                boolean enable = (Boolean) event.getProperty().getValue();
                // Enable/disable transitions
                panel.setFadeTransition(enable);
                updateTransitionCheckboxes();
            }
        });

        zoom.addValueChangeListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {
                boolean enable = (Boolean) event.getProperty().getValue();
                // Enable/disable transitions
                panel.setZoomTransition(enable);
                updateTransitionCheckboxes();
            }
        });

        rotate.addValueChangeListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {
                boolean enable = (Boolean) event.getProperty().getValue();
                // Enable/disable transitions
                panel.setRotateTransition(enable, horizontal.getValue());
                updateTransitionCheckboxes();
            }
        });

        horizontal.addValueChangeListener(new Property.ValueChangeListener() {

            @Override
            public void valueChange(ValueChangeEvent event) {
                if (rotate.getValue()) {
                    boolean enable = (Boolean) event.getProperty().getValue();
                    // Enable/disable transitions
                    panel.setRotateTransition(true, enable);
                    updateTransitionCheckboxes();
                }
            }
        });

        updateTransitionCheckboxes();
    }

    protected void updateTransitionCheckboxes() {
        fade.setValue(panel.isFadeTransition());
        zoom.setValue(panel.isZoomTransition());
        rotate.setValue(panel.isRotateTransition());
    }

    /**
     * Start content
     * 
     * @return
     */
    private ComponentContainer createPanelContentStart() {
        VerticalLayout layout = new VerticalLayout();
        layout.setMargin(true);
        layout.setSpacing(true);

        Label guide = new Label("Please select content shown in panel from the buttons above");
        layout.addComponent(guide);

        introPanel = layout;
        return layout;
    }

    private void removeIntro() {
        if (introPanel != null) {
            System.out.println("Remove intro page");
            panel.removeComponent(introPanel);
            introPanel = null;
        }
    }

    /**
     * Sample content for panel
     * 
     * @return
     */
    private ComponentContainer createPanelContentA() {

        VerticalLayout layout = new VerticalLayout();
        layout.setWidth("100%");
        layout.setMargin(true);
        layout.setSpacing(true);

        Label label = new Label(LOREM_STR);
        layout.addComponent(label);

        Embedded image = new Embedded();
        image.setSource(new ExternalResource("http://misc.siika.fi/fancy-demo1.jpg"));
        image.setWidth("500px");
        image.setHeight("281px");
        layout.addComponent(image);

        return layout;

    }

    /**
     * Sample content with more stuff
     * 
     * @return
     */
    private ComponentContainer createPanelContentB() {

        VerticalLayout layout = new VerticalLayout();
        layout.setWidth("100%");
        layout.setMargin(true);
        layout.setSpacing(true);

        Label label = new Label(BECON_STR);
        layout.addComponent(label);

        Embedded image = new Embedded();
        image.setSource(new ExternalResource("http://misc.siika.fi/kaljanhimo.jpg"));
        image.setWidth("300px");
        image.setHeight("187px");
        layout.addComponent(image);
        layout.setComponentAlignment(image, Alignment.MIDDLE_CENTER);

        Label label2 = new Label(BECON_STR);
        layout.addComponent(label2);

        return layout;

    }

    /**
     * Sample content with simple table (disabled as table is so broken in
     * Vaadin 7). To get table work you probably need some special timer.
     * 
     * @return
     */
    // private ComponentContainer createPanelContentC() {
    // VerticalLayout layout = new VerticalLayout();
    // layout.setWidth("100%");
    // layout.setMargin(true);
    // layout.setSpacing(true);
    //
    // Label label = new Label ("Table is quite broken in Vaadin 7?");
    // layout.addComponent(label);
    //
    // Table table = new Table();
    // table.setWidth("400px");
    // table.setHeight("500px");
    // table.addContainerProperty("Name", String.class, "");
    // table.addContainerProperty("Phone Number", String.class, "");
    // table.addItem(new Object[] { "Matti Meiklinen", "555 234 2344" },
    // "Matti");
    // table.addItem(new Object[] { "Donald Duck", "555 332 7782" }, "Donald");
    //
    // layout.addComponent(table);
    //
    // return layout;
    // }

    private ComponentContainer createPanelContentD() {
        CssLayout layout = new CssLayout();
        layout.addStyleName("demo-panel-d");
        layout.setWidth("100%");
        layout.setHeight("100%");

        Image image = new Image();
        image.setSource(new ThemeResource("images/meme.jpg"));
        image.addStyleName("demo-meme");
        layout.addComponent(image);

        return layout;
    }

    private static final String LOREM_STR = new String(
            "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed "
                    + "do eiusmod tempor incididunt ut labore et dolore magna "
                    + "aliqua. Ut enim ad minim veniam, quis nostrud exercitation "
                    + "ullamco laboris nisi ut aliquip ex ea commodo consequat. "
                    + "Duis aute irure dolor in reprehenderit in voluptate velit "
                    + "esse cillum dolore eu fugiat nulla pariatur. Excepteur "
                    + "sint occaecat cupidatat non proident, sunt in culpa qui "
                    + "officia deserunt mollit anim id est laborum.");

    private static final String BECON_STR = new String(
            "Ball tip sausage beef, kielbasa pork loin boudin chicken ham "
                    + "shankle salami fatback short loin. Biltong ham pastrami "
                    + "beef ribs salami swine. Shank meatball ribeye flank, tongue "
                    + "shoulder bresaola chuck. Corned beef ball tip turducken, "
                    + "sirloin swine capicola chuck ground round shoulder "
                    + "bresaola. Cow fatback venison, jerky corned beef brisket "
                    + "swine t-bone flank. Tri-tip meatball ham, flank ribeye "
                    + "venison biltong. Capicola ground round pork chop, flank "
                    + "meatloaf tenderloin leberkas hamburger kielbasa ham tail "
                    + "beef ribs rump chuck. Beef ribs brisket t-bone pork chuck "
                    + "capicola, filet mignon pork belly drumstick short loin. "
                    + "Ground round tail filet mignon shankle pork loin, turducken "
                    + "ball tip beef pork chop rump. Pastrami sirloin strip steak, "
                    + "hamburger spare ribs tenderloin meatball fatback pork ham "
                    + "biltong boudin. Boudin salami bacon chicken spare ribs ham "
                    + "hock. Strip steak ground round salami tri-tip, corned beef "
                    + "chuck beef speck tail turducken boudin prosciutto venison. "
                    + "Pork belly ball tip pastrami boudin, biltong jerky brisket "
                    + "ribeye chuck capicola pork chop bacon tongue. Meatloaf ball "
                    + "tip tenderloin, jerky swine flank shank shoulder short ribs "
                    + "sausage. Ham chicken biltong meatball tail sausage, corned "
                    + "beef bresaola andouille spare ribs. Ball tip hamburger rump "
                    + "speck, jowl shankle bacon. Andouille bacon beef ribs short "
                    + "ribs sirloin, ribeye pork loin shoulder spare ribs capicola "
                    + "pork chop filet mignon biltong shankle bresaola. Pork swine "
                    + "t-bone ground round, venison pork loin kielbasa. Tri-tip "
                    + "chuck kielbasa pork loin pastrami flank. Corned beef pork "
                    + "loin flank, sirloin strip steak cow kielbasa pork ribeye "
                    + "drumstick ham. Beef ribs short loin bresaola, chicken "
                    + "hamburger spare ribs t-bone drumstick pork belly leberkas "
                    + "biltong pork loin pancetta. Strip steak sausage short loin "
                    + "corned beef chicken, brisket pork chop tenderloin. Bresaola "
                    + "ball tip tri-tip shank, jerky pig strip steak sausage "
                    + "ribeye tongue filet mignon. Tongue meatball ribeye filet "
                    + "mignon, andouille pastrami fatback jerky cow t-bone bacon "
                    + "drumstick turkey tenderloin pork loin. Chicken capicola "
                    + "sirloin t-bone short loin meatball. Does your lorem ipsum "
                    + "text long for something a little meatier? Give our " + "generator a try its tasty!");
}