2 * Copyright (C) 2017 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.vaadin
.ui
;
11 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
12 import org
.springframework
.context
.ApplicationEventPublisher
;
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
.spring
.navigator
.SpringViewProvider
;
27 import com
.vaadin
.ui
.Component
;
28 import com
.vaadin
.ui
.Label
;
29 import com
.vaadin
.ui
.UI
;
30 import com
.vaadin
.ui
.themes
.ValoTheme
;
32 import eu
.etaxonomy
.cdm
.vaadin
.view
.RedirectToLoginView
;
33 import eu
.etaxonomy
.cdm
.vaadin
.view
.registration
.DashBoardView
;
34 import eu
.etaxonomy
.cdm
.vaadin
.view
.registration
.ListViewBean
;
35 import eu
.etaxonomy
.cdm
.vaadin
.view
.registration
.StartRegistrationViewBean
;
36 import eu
.etaxonomy
.vaadin
.ui
.MainMenu
;
37 import eu
.etaxonomy
.vaadin
.ui
.UIInitializedEvent
;
38 import eu
.etaxonomy
.vaadin
.ui
.navigation
.NavigationEvent
;
41 * @author a.kohlbecker
46 @Title("Registration")
47 @SpringUI(path
="registration")
48 @Viewport("width=device-width, initial-scale=1")
49 @Widgetset("eu.etaxonomy.cdm.vaadin.AppWidgetSet")
52 public class RegistrationUI
extends UI
{
54 private static final long serialVersionUID
= -8626236111335323691L;
57 private ViewDisplay viewDisplay
;
59 //---- pull into abstract super class ? ---------
61 SpringViewProvider viewProvider
;
63 protected void configureAccessDeniedView() {
64 viewProvider
.setAccessDeniedViewClass(RedirectToLoginView
.class);
66 //---------------------------------------------
68 public static final String INITIAL_VIEW
= DashBoardView
.NAME
;
72 * this HACKY solution forces the bean to be instantiated, TODO do it properly
75 // MenuBeanDiscoveryBean bean;
78 private MainMenu mainMenu
;
81 ApplicationEventPublisher eventBus
;
83 public RegistrationUI() {
88 protected void init(VaadinRequest request
) {
90 configureAccessDeniedView();
92 addStyleName(ValoTheme
.UI_WITH_MENU
);
93 Responsive
.makeResponsive(this);
95 setContent((Component
) viewDisplay
);
96 Label phycoBankLogo
= new Label("PhycoBank");
97 phycoBankLogo
.addStyleName("phycobank-green");
98 phycoBankLogo
.addStyleName(ValoTheme
.LABEL_HUGE
);
99 mainMenu
.addMenuComponent(phycoBankLogo
);
101 mainMenu
.addMenuItem("New", FontAwesome
.EDIT
, StartRegistrationViewBean
.NAME
);
102 mainMenu
.addMenuItem("Continue", FontAwesome
.ARROW_RIGHT
, ListViewBean
.NAME
+ "/" + ListViewBean
.OPTION_IN_PROGRESS
);
103 mainMenu
.addMenuItem("List", FontAwesome
.TASKS
, ListViewBean
.NAME
+ "/" + ListViewBean
.OPTION_ALL
);
105 eventBus
.publishEvent(new UIInitializedEvent());
107 String brand
= "phycobank";
108 //TODO create annotation:
109 // @Styles(files={""}, branding="brand")
111 // the branding can either be specified or can be read from the properties file in .cdmLibrary/remote-webapp/{instance-name}-app.properties
112 // See CdmUtils for appropriate methods to access this folder
113 // the 'vaadin://' protocol refers to the VAADIN folder
114 Resource registryCssFile
= new ExternalResource("vaadin://branding/" + brand
+ "/css/branding.css");
115 Page
.getCurrent().getStyles().add(registryCssFile
);
117 //navigate to initial view
118 String state
= pageFragmentAsState();
121 // the case when state != null is handled in the UI base class
122 eventBus
.publishEvent(new NavigationEvent(INITIAL_VIEW
));
129 private String
pageFragmentAsState() {
130 Page page
= Page
.getCurrent();
131 String fragment
= page
.getUriFragment();
133 if(fragment
!= null && fragment
.startsWith("!")){
134 state
= fragment
.substring(1, fragment
.length());