Package com.vaadin.tests.tickets

Source Code of com.vaadin.tests.tickets.Ticket34

package com.vaadin.tests.tickets;

import java.util.HashMap;
import java.util.Map;

import com.vaadin.server.LegacyApplication;
import com.vaadin.server.Page;
import com.vaadin.server.Page.UriFragmentChangedEvent;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Component;
import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.Panel;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;

public class Ticket34 extends LegacyApplication {

    private Map<String, Component> views = new HashMap<String, Component>();
    private VerticalLayout mainLayout;
    private Component currentView;

    @Override
    public void init() {

        buildViews(new String[] { "main", "view2", "view3" });

        mainLayout = new VerticalLayout();
        mainLayout.setSizeFull();
        final LegacyWindow mainWin = new LegacyWindow(
                "Test app for URI fragment management/reading", mainLayout);
        setMainWindow(mainWin);

        mainWin.getPage().addListener(new Page.UriFragmentChangedListener() {

            @Override
            public void uriFragmentChanged(UriFragmentChangedEvent event) {
                getMainWindow().showNotification(
                        "Fragment now: " + event.getUriFragment());
                // try to change to view mapped by fragment string
                setView(event.getUriFragment());
            }
        });

        setView("main");

    }

    private void setView(String string) {
        Component component = views.get(string);
        if (component == null) {
            getMainWindow().showNotification(
                    "View called " + string + " not found!");
        } else if (component != currentView) {
            if (currentView != null) {
                mainLayout.replaceComponent(currentView, component);
            } else {
                mainLayout.addComponent(component);
            }
            // give all extra space for view
            mainLayout.setExpandRatio(component, 1);
            currentView = component;
        }
    }

    private void buildViews(String[] strings) {
        for (String string : strings) {
            VerticalLayout pl = new VerticalLayout();
            pl.setMargin(true);
            Panel p = new Panel(string, pl);
            p.setSizeFull();
            pl.setSpacing(true);
            pl.addComponent(new Label("This is a simple test case for "
                    + "UriFragmentReader that can be used for"
                    + " adding linking, back/forward button "
                    + "and history support for ajax application. "));
            StringBuffer sb = new StringBuffer();
            sb.append("Available views : ");
            for (String key : strings) {
                sb.append(key);
                sb.append(" ");
            }
            sb.append("Application will change to them from uri "
                    + "fragment or server initiated via textfield below.");
            pl.addComponent(new Label(sb.toString()));

            final TextField tf = new TextField(
                    "Type view name (will change to that "
                            + "view and change the uri fragment)");
            pl.addComponent(tf);
            Button b = new Button("Go!");
            pl.addComponent(b);
            b.addListener(new Button.ClickListener() {

                @Override
                public void buttonClick(ClickEvent event) {
                    String viewName = tf.getValue().toString();
                    // fragmentChangedListener will change the view if possible
                    event.getButton().getUI().getPage()
                            .setUriFragment(viewName);
                }
            });

            views.put(string, p);
        }
    }

}
TOP

Related Classes of com.vaadin.tests.tickets.Ticket34

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.