v7cr.TopPageWindow.java Source code

Java tutorial

Introduction

Here is the source code for v7cr.TopPageWindow.java

Source

/**
 * Copyright (c) 2011, Thilo Planz. All rights reserved.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 */

package v7cr;

import java.util.Map;

import v7cr.v7db.Role;

import com.vaadin.Application;
import com.vaadin.terminal.gwt.server.WebApplicationContext;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;

@SuppressWarnings("serial")
class TopPageWindow extends Window {

    TopPageWindow(V7CR app) {
        super(app.getMessage("app.name"));
        setName("top");
        initUI(app);

    }

    private void initUI(V7CR app) {
        VerticalLayout vl = new VerticalLayout();
        vl.setSizeFull();
        vl.addComponent(createToolbar(app));
        TabSheet main = new TabSheet();
        vl.addComponent(main);
        vl.setExpandRatio(main, 1);

        Map<String, Role> roles = app.getRoles();
        if (roles.containsKey("admin")) {
            main.addTab(new RoleEditor(app));
            main.addTab(new UserEditor(app));
            main.addTab(new ProjectEditor(app));
        }
        for (String r : roles.keySet()) {
            if (r.startsWith("project:")) {
                String p = r.substring(8);
                main.addTab(new ReviewList(p));
            }
        }
        addComponent(vl);
    }

    private HorizontalLayout createToolbar(V7CR app) {
        Label logo = new Label(getCaption());
        Label username = new Label(app.getSessionUser().getName() + " " + app.getSessionUser().getId());
        Button logout = new Button(app.getMessage("button.logout"));
        logout.addListener(new ClickListener() {
            public void buttonClick(ClickEvent event) {
                Application a = V7CR.getInstance();
                a.close();
                ((WebApplicationContext) a.getContext()).getHttpSession().invalidate();
            }
        });

        HorizontalLayout hl = new HorizontalLayout();
        hl.addComponent(logo);
        hl.addComponent(logout);
        hl.addComponent(username);
        hl.setSpacing(true);
        return hl;
    }
}