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

Java tutorial

Introduction

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

Source

/**
 * FancyLayoutsApplication.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 com.vaadin.annotations.VaadinServletConfiguration;
import com.vaadin.server.VaadinServlet;
import org.vaadin.alump.fancylayouts.FancyNotifications;

import com.vaadin.annotations.Push;
import com.vaadin.annotations.Theme;
import com.vaadin.annotations.Title;
import com.vaadin.server.ExternalResource;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.Button;
import com.vaadin.ui.ComponentContainer;
import com.vaadin.ui.CssLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Link;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.UI;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.BaseTheme;

import javax.servlet.annotation.WebServlet;

/**
 * Demo application using FancyLayouts components
 */
@SuppressWarnings("serial")
@Theme("demo")
@Title("FancyLayouts Demo")
// enable push
@Push
public class FancyLayoutsUI extends UI {

    @WebServlet(value = "/*")
    @VaadinServletConfiguration(productionMode = false, ui = FancyLayoutsUI.class, widgetset = "org.vaadin.alump.fancylayouts.demo.widgetset.FancyLayoutsDemoWidgetset")
    public static class FancyLayoutsUIServlet extends VaadinServlet {
    }

    private FancyNotifications notifications;

    private ComponentContainer buildLayout() {

        CssLayout topLayout = new CssLayout();
        topLayout.setSizeFull();

        TabSheet tabs = new TabSheet();
        topLayout.addComponent(tabs);
        tabs.setSizeFull();

        tabs.addTab(buildWelcome(), "Welcome");
        tabs.addTab(new ImageDemo(), "FancyImage");
        tabs.addTab(new PanelDemo(), "FancyPanel");
        tabs.addTab(new CssLayoutDemo(), "FancyLayout");

        NotificationsDemo notDemo = new NotificationsDemo();
        tabs.addTab(notDemo, "FancyNotifications");

        // Add notification to top most UI elements you have. Then just give it
        // as reference to child components.
        notifications = new FancyNotifications();
        topLayout.addComponent(notifications);
        notDemo.init(notifications);

        return topLayout;
    }

    private ComponentContainer buildWelcome() {

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

        Label header = new Label("This is online demo for FancyLayouts Vaadin AddOn.");
        header.addStyleName("demo-header");
        layout.addComponent(header);

        StringBuilder sb = new StringBuilder();
        sb.append(
                "FancyLayouts adds transitions to UI when you replace content with new. This allows you to have fancier UI in your vaadin based application.");
        sb.append(
                " Currently package contains Image widget that can be used to present multiple images in one component slot. And Panel widget which is useful");
        sb.append(" if you have to replace content inside your UI often.");

        Label desc = new Label(sb.toString());
        desc.addStyleName("demo-desc");
        layout.addComponent(desc);
        layout.setExpandRatio(desc, 1.0f);

        Link link = new Link("Source code of this demo application", new ExternalResource(
                "https://github.com/alump/FancyLayouts/blob/master/fancylayouts-demo/src/main/java/org/vaadin/alump/fancylayouts/demo/FancyLayoutsUI.java"));
        layout.addComponent(link);

        Button sourceLink = new Button();
        sourceLink.addStyleName(BaseTheme.BUTTON_LINK);

        return layout;
    }

    public FancyNotifications getNotifications() {
        return notifications;
    }

    @Override
    protected void init(VaadinRequest request) {
        this.setContent(buildLayout());

    }

}