PopupEditor with GridLayout support
[cdm-vaadin.git] / src / main / java / eu / etaxonomy / cdm / vaadin / ui / RegistrationUI.java
1 /**
2 * Copyright (C) 2017 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
5 *
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
8 */
9 package eu.etaxonomy.cdm.vaadin.ui;
10
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.context.ApplicationEventPublisher;
13
14 import com.vaadin.annotations.Theme;
15 import com.vaadin.annotations.Title;
16 import com.vaadin.annotations.Viewport;
17 import com.vaadin.annotations.Widgetset;
18 import com.vaadin.navigator.ViewDisplay;
19 import com.vaadin.server.ExternalResource;
20 import com.vaadin.server.FontAwesome;
21 import com.vaadin.server.Page;
22 import com.vaadin.server.Resource;
23 import com.vaadin.server.Responsive;
24 import com.vaadin.server.VaadinRequest;
25 import com.vaadin.spring.annotation.SpringUI;
26 import com.vaadin.ui.Component;
27 import com.vaadin.ui.Label;
28 import com.vaadin.ui.UI;
29 import com.vaadin.ui.themes.ValoTheme;
30
31 import eu.etaxonomy.cdm.vaadin.view.registration.ListViewBean;
32 import eu.etaxonomy.cdm.vaadin.view.registration.StartRegistrationView;
33 import eu.etaxonomy.vaadin.ui.MainMenu;
34 import eu.etaxonomy.vaadin.ui.UIInitializedEvent;
35 import eu.etaxonomy.vaadin.ui.navigation.NavigationEvent;
36
37 /**
38 * @author a.kohlbecker
39 * @since Feb 24, 2017
40 *
41 */
42 @Theme("edit-valo")
43 @Title("Registration")
44 @SpringUI(path="registration")
45 @Viewport("width=device-width, initial-scale=1")
46 @Widgetset("eu.etaxonomy.cdm.vaadin.AppWidgetSet")
47 // @PreserveOnRefresh
48 // @Push
49 public class RegistrationUI extends UI {
50
51 private static final long serialVersionUID = -8626236111335323691L;
52
53 @Autowired
54 private ViewDisplay viewDisplay;
55
56 private final String INITIAL_VIEW = "workflow/edit/100002"; // DashBoardView.NAME
57
58 /*
59 * this HACKY solution forces the bean to be instantiated, TODO do it properly
60 */
61 // @Autowired
62 // MenuBeanDiscoveryBean bean;
63
64 @Autowired
65 private MainMenu mainMenu;
66
67 @Autowired
68 ApplicationEventPublisher eventBus;
69
70 public RegistrationUI() {
71
72 }
73
74 @Override
75 protected void init(VaadinRequest request) {
76 addStyleName(ValoTheme.UI_WITH_MENU);
77 Responsive.makeResponsive(this);
78
79 setContent((Component) viewDisplay);
80 Label phycoBankLogo = new Label("PhycoBank");
81 phycoBankLogo.addStyleName("phycobank-green");
82 phycoBankLogo.addStyleName(ValoTheme.LABEL_HUGE);
83 mainMenu.addMenuComponent(phycoBankLogo);
84
85 mainMenu.addMenuItem("New", FontAwesome.EDIT, StartRegistrationView.NAME);
86 mainMenu.addMenuItem("Continue", FontAwesome.ARROW_RIGHT, ListViewBean.NAME);
87 mainMenu.addMenuItem("List", FontAwesome.TASKS, ListViewBean.NAME);
88
89 eventBus.publishEvent(new UIInitializedEvent());
90
91 //navigate to initial view
92 eventBus.publishEvent(new NavigationEvent(INITIAL_VIEW));
93
94 String brand = "phycobank";
95 //TODO create annotation:
96 // @Styles(files={""}, branding="brand")
97 //
98 // the branding can either be specified or can be read from a properties file in .cdmLibrary/{instance-name}/cdm-vaadin.properties
99 // See CdmUtils for appropriate methods to access this folder
100 // the 'vaadin://' protocol refers to the VAADIN folder
101 Resource registryCssFile = new ExternalResource("vaadin://branding/" + brand + "/css/branding.css");
102 Page.getCurrent().getStyles().add(registryCssFile);
103 }
104 }