Project

General

Profile

Download (6.28 KB) Statistics
| Branch: | Tag: | Revision:
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.beans.factory.annotation.Qualifier;
13
import org.vaadin.spring.events.EventBus.UIEventBus;
14

    
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;
33

    
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;
45

    
46
/**
47
 * @author a.kohlbecker
48
 * @since Feb 24, 2017
49
 *
50
 */
51
@Theme("edit-valo")
52
@Title("Registration")
53
@SpringUI(path="registration")
54
@Viewport("width=device-width, initial-scale=1")
55
@Widgetset("eu.etaxonomy.cdm.vaadin.AppWidgetSet")
56
// @PreserveOnRefresh
57
// @Push
58
public class RegistrationUI extends UI {
59

    
60
    private static final long serialVersionUID = -8626236111335323691L;
61

    
62
    @Autowired
63
    @Qualifier("viewAreaBean")
64
    private ViewDisplay viewDisplay;
65

    
66
    //---- pull into abstract super class ? ---------
67
    @Autowired
68
    SpringViewProvider viewProvider;
69

    
70
    @Autowired
71
    NavigationManagerBean navigator;
72

    
73
    @Autowired(required = false)
74
    EntityCacheDebugger entityCacheDebugger = null;
75

    
76
    @Autowired
77
    UIEventBus uiEventBus;
78

    
79
    /*
80
         * this HACKY solution forces the bean to be instantiated, TODO do it properly
81
         */
82
    //    @Autowired
83
    //    MenuBeanDiscoveryBean bean;
84
    
85
        @Autowired
86
        private MainMenu mainMenu;
87

    
88
    /*
89
             * this HACKY solution forces the bean to be instantiated, TODO do it properly
90
             */
91
        //    @Autowired
92
        //    MenuBeanDiscoveryBean bean;
93
        
94
            @Autowired
95
            @Qualifier("registrationToolbar")
96
            private Toolbar toolbar;
97

    
98
    //---------------------------------------------
99
            
100
            public static final String INITIAL_VIEW =  DashBoardView.NAME;
101

    
102
    protected void configureAccessDeniedView() {
103
        viewProvider.setAccessDeniedViewClass(RedirectToLoginView.class);
104
    }
105

    
106
    /**
107
     * @return
108
     */
109
    private String pageFragmentAsState() {
110
        Page page = Page.getCurrent();
111
        String fragment = page.getUriFragment();
112
        String state = null;
113
        if(fragment != null && fragment.startsWith("!")){
114
            state = fragment.substring(1, fragment.length());
115
        }
116
        return state;
117
    }
118

    
119
    //---------------------------------------------
120

    
121
    
122

    
123

    
124
    /*
125
     * this HACKY solution forces the bean to be instantiated, TODO do it properly
126
     */
127
//    @Autowired
128
//    MenuBeanDiscoveryBean bean;
129

    
130
    public RegistrationUI() {
131

    
132
    }
133

    
134
    @Override
135
    protected void init(VaadinRequest request) {
136

    
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>"));
140

    
141
        navigator.setViewDisplay(viewDisplay);
142
        configureAccessDeniedView();
143

    
144
        addStyleName(ValoTheme.UI_WITH_MENU);
145
        Responsive.makeResponsive(this);
146

    
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);
152

    
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());
156

    
157
        if(ToolbarDisplay.class.isAssignableFrom(viewDisplay.getClass())){
158
            ((ToolbarDisplay)viewDisplay).setToolbar(toolbar);
159
        }
160

    
161

    
162
        uiEventBus.publish(this, new UIInitializedEvent());
163

    
164
        String brand = "phycobank";
165
        //TODO create annotation:
166
        // @Styles(files={""}, branding="brand")
167
        //
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);
173

    
174
        navigator.setDefaultViewName(INITIAL_VIEW);
175

    
176
        if(entityCacheDebugger != null){
177
            addShortcutListener(entityCacheDebugger.getShortcutListener());
178
        }
179
        //navigate to initial view
180
//        String state = pageFragmentAsState();
181

    
182

    
183
//        if(state == null){
184
//            // the case when state != null is handled in the UI base class
185
//            eventBus.publishEvent(new NavigationEvent(INITIAL_VIEW));
186
//        }
187
    }
188
}
(6-6/8)