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
.beans
.factory
.annotation
.Qualifier
;
13 import org
.vaadin
.spring
.events
.EventBus
.UIEventBus
;
15 import com
.flowingcode
.vaadin
.addons
.errorwindow
.WindowErrorHandler
;
16 import com
.vaadin
.annotations
.Theme
;
17 import com
.vaadin
.annotations
.Title
;
18 import com
.vaadin
.annotations
.Viewport
;
19 import com
.vaadin
.annotations
.Widgetset
;
20 import com
.vaadin
.navigator
.ViewDisplay
;
21 import com
.vaadin
.server
.ExternalResource
;
22 import com
.vaadin
.server
.FontAwesome
;
23 import com
.vaadin
.server
.Page
;
24 import com
.vaadin
.server
.Resource
;
25 import com
.vaadin
.server
.Responsive
;
26 import com
.vaadin
.server
.VaadinRequest
;
27 import com
.vaadin
.spring
.annotation
.SpringUI
;
28 import com
.vaadin
.spring
.navigator
.SpringViewProvider
;
29 import com
.vaadin
.ui
.Component
;
30 import com
.vaadin
.ui
.Label
;
31 import com
.vaadin
.ui
.UI
;
32 import com
.vaadin
.ui
.themes
.ValoTheme
;
34 import eu
.etaxonomy
.cdm
.vaadin
.debug
.EntityCacheDebugger
;
35 import eu
.etaxonomy
.cdm
.vaadin
.toolbar
.Toolbar
;
36 import eu
.etaxonomy
.cdm
.vaadin
.view
.RedirectToLoginView
;
37 import eu
.etaxonomy
.cdm
.vaadin
.view
.registration
.DashBoardView
;
38 import eu
.etaxonomy
.cdm
.vaadin
.view
.registration
.ListView
;
39 import eu
.etaxonomy
.cdm
.vaadin
.view
.registration
.ListViewBean
;
40 import eu
.etaxonomy
.cdm
.vaadin
.view
.registration
.StartRegistrationViewBean
;
41 import eu
.etaxonomy
.vaadin
.ui
.MainMenu
;
42 import eu
.etaxonomy
.vaadin
.ui
.UIInitializedEvent
;
43 import eu
.etaxonomy
.vaadin
.ui
.navigation
.NavigationManagerBean
;
44 import eu
.etaxonomy
.vaadin
.ui
.view
.ToolbarDisplay
;
47 * @author a.kohlbecker
52 @Title("Registration")
53 @SpringUI(path
="registration")
54 @Viewport("width=device-width, initial-scale=1")
55 @Widgetset("eu.etaxonomy.cdm.vaadin.AppWidgetSet")
58 public class RegistrationUI
extends UI
{
60 private static final long serialVersionUID
= -8626236111335323691L;
63 @Qualifier("viewAreaBean")
64 private ViewDisplay viewDisplay
;
66 //---- pull into abstract super class ? ---------
68 SpringViewProvider viewProvider
;
71 NavigationManagerBean navigator
;
73 @Autowired(required
= false)
74 EntityCacheDebugger entityCacheDebugger
= null;
77 UIEventBus uiEventBus
;
80 * this HACKY solution forces the bean to be instantiated, TODO do it properly
83 // MenuBeanDiscoveryBean bean;
86 private MainMenu mainMenu
;
89 * this HACKY solution forces the bean to be instantiated, TODO do it properly
92 // MenuBeanDiscoveryBean bean;
95 @Qualifier("registrationToolbar")
96 private Toolbar toolbar
;
98 //---------------------------------------------
100 public static final String INITIAL_VIEW
= DashBoardView
.NAME
;
102 protected void configureAccessDeniedView() {
103 viewProvider
.setAccessDeniedViewClass(RedirectToLoginView
.class);
109 private String
pageFragmentAsState() {
110 Page page
= Page
.getCurrent();
111 String fragment
= page
.getUriFragment();
113 if(fragment
!= null && fragment
.startsWith("!")){
114 state
= fragment
.substring(1, fragment
.length());
119 //---------------------------------------------
125 * this HACKY solution forces the bean to be instantiated, TODO do it properly
128 // MenuBeanDiscoveryBean bean;
130 public RegistrationUI() {
135 protected void init(VaadinRequest request
) {
137 setErrorHandler(new WindowErrorHandler(this, "Please contact the editsupport@bgbm.org for more information.</br></br>"
138 + "<i>To help analyzing the problem please describe your actions that lead to this error and provide the error details from below in your email. "
139 + "You also might want to add a sreenshot of the browser page in error.</i>"));
141 navigator
.setViewDisplay(viewDisplay
);
142 configureAccessDeniedView();
144 addStyleName(ValoTheme
.UI_WITH_MENU
);
145 Responsive
.makeResponsive(this);
147 setContent((Component
) viewDisplay
);
148 Label phycoBankLogo
= new Label("PhycoBank");
149 phycoBankLogo
.addStyleName("phycobank-green");
150 phycoBankLogo
.addStyleName(ValoTheme
.LABEL_HUGE
);
151 mainMenu
.addMenuComponent(phycoBankLogo
);
153 mainMenu
.addMenuItem("New", FontAwesome
.EDIT
, StartRegistrationViewBean
.NAME
);
154 mainMenu
.addMenuItem("Continue", FontAwesome
.ARROW_RIGHT
, ListViewBean
.NAME
+ "/" + ListView
.Mode
.inProgress
.name());
155 mainMenu
.addMenuItem("List", FontAwesome
.TASKS
, ListViewBean
.NAME
+ "/" + ListView
.Mode
.all
.name());
157 if(ToolbarDisplay
.class.isAssignableFrom(viewDisplay
.getClass())){
158 ((ToolbarDisplay
)viewDisplay
).setToolbar(toolbar
);
162 uiEventBus
.publish(this, new UIInitializedEvent());
164 String brand
= "phycobank";
165 //TODO create annotation:
166 // @Styles(files={""}, branding="brand")
168 // the branding can either be specified or can be read from the properties file in .cdmLibrary/remote-webapp/{instance-name}-app.properties
169 // See CdmUtils for appropriate methods to access this folder
170 // the 'vaadin://' protocol refers to the VAADIN folder
171 Resource registryCssFile
= new ExternalResource("vaadin://branding/" + brand
+ "/css/branding.css");
172 Page
.getCurrent().getStyles().add(registryCssFile
);
174 navigator
.setDefaultViewName(INITIAL_VIEW
);
176 if(entityCacheDebugger
!= null){
177 addShortcutListener(entityCacheDebugger
.getShortcutListener());
179 //navigate to initial view
180 // String state = pageFragmentAsState();
183 // if(state == null){
184 // // the case when state != null is handled in the UI base class
185 // eventBus.publishEvent(new NavigationEvent(INITIAL_VIEW));