Java tutorial
/******************************************************************************* * Copyright 2013 Thomas Letsch (contact@thomas-letsch.de) * * 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.addons.javaee.portal; import static org.vaadin.addons.javaee.portal.PortalView.*; import javax.annotation.PostConstruct; import javax.enterprise.event.Observes; import javax.inject.Inject; import org.vaadin.addons.javaee.i18n.TranslationKeys; import org.vaadin.addons.javaee.i18n.TranslationService; import org.vaadin.addons.javaee.navigation.MenuItem; import org.vaadin.addons.javaee.navigation.NavigationEvent; import org.vaadin.addons.javaee.navigation.SideMenu; import org.vaadin.addons.javaee.page.AbstractContentView; import org.vaadin.dialogs.ConfirmDialog; import com.vaadin.cdi.UIScoped; import com.vaadin.ui.HorizontalSplitPanel; import com.vaadin.ui.Panel; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalSplitPanel; import com.vaadin.ui.themes.Reindeer; @UIScoped public class PortalPage extends Panel { private static final long serialVersionUID = 6788886405321379139L; @Inject protected TranslationService translationService; private AbstractContentView actualContentView = null; @Inject protected SideMenu menu; @Inject protected Header header; private VerticalSplitPanel mainPanel = new VerticalSplitPanel(); private HorizontalSplitPanel menuAndContentPanel = new HorizontalSplitPanel(); private Panel contentPanel = new Panel(); @PostConstruct public void initView() { setStyleName(Reindeer.LAYOUT_WHITE); setWidth(WIDTH, Unit.PIXELS); setHeight(HEIGHT, Unit.PIXELS); contentPanel.setSizeFull(); menuAndContentPanel.setSizeFull(); menuAndContentPanel.setStyleName(Reindeer.SPLITPANEL_SMALL); menuAndContentPanel.setSplitPosition(MENU_WIDTH, Unit.PIXELS); menuAndContentPanel.setLocked(true); menuAndContentPanel.setFirstComponent(menu); menuAndContentPanel.setSecondComponent(contentPanel); mainPanel.setSizeFull(); mainPanel.setStyleName(Reindeer.SPLITPANEL_SMALL); mainPanel.setSplitPosition(HEADER_HEIGHT, Unit.PIXELS); mainPanel.setLocked(true); mainPanel.setFirstComponent(header); mainPanel.setSecondComponent(menuAndContentPanel); setContent(mainPanel); } public Panel getMainPanel() { return contentPanel; } public void handleNavigation(@Observes final NavigationEvent navigationEvent) { if (actualContentView != null && actualContentView.containsUnsavedValues()) { ConfirmDialog.show(UI.getCurrent(), translationService.getText(TranslationKeys.TITLE_NAVIGATE), translationService.getText(TranslationKeys.MESSAGE_REALLY_NAVIGATE), translationService.getText(TranslationKeys.YES), translationService.getText(TranslationKeys.NO), new ConfirmDialog.Listener() { private static final long serialVersionUID = 1L; @Override public void onClose(ConfirmDialog dialog) { if (dialog.isConfirmed()) { realHandleNavigation(navigationEvent); } else { menu.selectMenu(actualContentView.getPageName()); } } }); } else { realHandleNavigation(navigationEvent); } } public void realHandleNavigation(NavigationEvent navigationEvent) { MenuItem menuItem = menu.getMenuItem(navigationEvent.getPageName()); AbstractContentView newContentView = menuItem.getPanel(); if (newContentView == null) { return; } newContentView.onShow((actualContentView == null) ? null : actualContentView.getPageName(), navigationEvent.getParameters()); menu.selectMenu(menuItem.getName()); UI.getCurrent().getNavigator().navigateTo(navigationEvent.getPageName()); actualContentView = newContentView; } }