/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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.apache.usergrid.chop.webapp.view.main; import com.vaadin.server.VaadinService; import com.vaadin.ui.AbsoluteLayout; import com.vaadin.ui.Alignment; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.Button; import com.vaadin.ui.UI; import com.vaadin.ui.TabSheet; import org.apache.usergrid.chop.webapp.service.chart.Params; import org.apache.usergrid.chop.webapp.service.shiro.ShiroRealm; import org.apache.usergrid.chop.webapp.view.module.ModuleLayout; import org.apache.usergrid.chop.webapp.view.chart.layout.OverviewChartLayout; import org.apache.usergrid.chop.webapp.view.log.LogLayout; import org.apache.usergrid.chop.webapp.view.module.ModuleSelectListener; import org.apache.usergrid.chop.webapp.view.runner.RunnersLayout; import org.apache.usergrid.chop.webapp.view.user.UserListWindow; public class MainView extends VerticalLayout implements ModuleSelectListener { private TabSheetManager tabSheetManager; VerticalLayout tabSheet; HorizontalLayout buttons; MainView( ) { this.setHeight( "100%" ); VerticalLayout verticalLayoutForButtons = new VerticalLayout(); verticalLayoutForButtons.setSizeFull(); buttons = addButtons(); this.addComponent( buttons ); setComponentAlignment( buttons , Alignment.TOP_CENTER ); tabSheet = addTabSheet(); tabSheet.setSizeFull(); this.addComponent( tabSheet ); this.setComponentAlignment( tabSheet, Alignment.TOP_CENTER ); this.setExpandRatio( buttons, 0.04f ); this.setExpandRatio( tabSheet, 0.96f ); } private HorizontalLayout addButtons() { HorizontalLayout horizontalLayout = new HorizontalLayout(); /** Modules Button */ Button modules = new Button( "Modules" ); horizontalLayout.addComponent( modules ); modules.addClickListener( new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent clickEvent) { tabSheetManager.addTabWithVerticalLayout( new ModuleLayout( MainView.this ), "Modules" ); } }); /** Runners Button */ Button runners = new Button( "Runners" ); horizontalLayout.addComponent( runners ); runners.addClickListener( new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent clickEvent) { tabSheetManager.addTabWithVerticalLayout( new RunnersLayout(), "Runners" ); } }); /** Users Button */ Button users = new Button( "Users" ); horizontalLayout.addComponent( users ); users.addClickListener( new Button.ClickListener() { @Override public void buttonClick( Button.ClickEvent clickEvent ) { UI.getCurrent().addWindow( new UserListWindow( tabSheetManager ) ); } }); /** Logs Button */ Button logs = new Button( "Logs" ); horizontalLayout.addComponent( logs ); logs.addClickListener(new Button.ClickListener() { @Override public void buttonClick( Button.ClickEvent clickEvent ) { tabSheetManager.addTabWithVerticalLayout( new LogLayout(), "Logs" ); } }); /** Logout Button */ Button logout = new Button( "Logout" ); horizontalLayout.addComponent( logout ); logout.addClickListener( new Button.ClickListener() { @Override public void buttonClick( Button.ClickEvent clickEvent ) { ShiroRealm.logout(); redirectToMainView(); } }); float weight = logout.getHeight(); horizontalLayout.setHeight( String.valueOf( weight ) ); return horizontalLayout; } private VerticalLayout addTabSheet() { VerticalLayout tabLayout = new VerticalLayout(); TabSheet tabSheet = new TabSheet(); tabSheet.setHeight( "100%" ); tabSheetManager = new TabSheetManager( tabSheet ); tabLayout.addComponent( tabSheet ); return tabLayout; } @Override public void onModuleSelect( String moduleId ) { AbsoluteLayout layout = new OverviewChartLayout( new Params(moduleId), tabSheetManager ); tabSheetManager.addTab( layout, "Overview Chart" ); } private void redirectToMainView() { // Close the VaadinServiceSession getUI().getSession().close(); // Invalidate underlying session instead if login info is stored there VaadinService.getCurrentRequest().getWrappedSession().invalidate(); getUI().getPage().setLocation( "/VAADIN" ); } }