Project

General

Profile

Download (5.07 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.springframework.context.ApplicationEventPublisher;
14

    
15
import com.vaadin.annotations.Theme;
16
import com.vaadin.annotations.Title;
17
import com.vaadin.annotations.Viewport;
18
import com.vaadin.annotations.Widgetset;
19
import com.vaadin.navigator.ViewDisplay;
20
import com.vaadin.server.ExternalResource;
21
import com.vaadin.server.FontAwesome;
22
import com.vaadin.server.Page;
23
import com.vaadin.server.Resource;
24
import com.vaadin.server.Responsive;
25
import com.vaadin.server.VaadinRequest;
26
import com.vaadin.spring.annotation.SpringUI;
27
import com.vaadin.spring.navigator.SpringViewProvider;
28
import com.vaadin.ui.Component;
29
import com.vaadin.ui.Label;
30
import com.vaadin.ui.UI;
31
import com.vaadin.ui.themes.ValoTheme;
32

    
33
import eu.etaxonomy.cdm.vaadin.toolbar.Toolbar;
34
import eu.etaxonomy.cdm.vaadin.view.RedirectToLoginView;
35
import eu.etaxonomy.cdm.vaadin.view.registration.DashBoardView;
36
import eu.etaxonomy.cdm.vaadin.view.registration.ListViewBean;
37
import eu.etaxonomy.cdm.vaadin.view.registration.StartRegistrationViewBean;
38
import eu.etaxonomy.vaadin.ui.MainMenu;
39
import eu.etaxonomy.vaadin.ui.UIInitializedEvent;
40
import eu.etaxonomy.vaadin.ui.navigation.NavigationManagerBean;
41
import eu.etaxonomy.vaadin.ui.view.ToolbarDisplay;
42

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

    
57
    private static final long serialVersionUID = -8626236111335323691L;
58

    
59
    @Autowired
60
    @Qualifier("viewAreaBean")
61
    private ViewDisplay viewDisplay;
62

    
63
    //---- pull into abstract super class ? ---------
64
    @Autowired
65
    SpringViewProvider viewProvider;
66

    
67
    @Autowired
68
    NavigationManagerBean navigator;
69

    
70
    protected void configureAccessDeniedView() {
71
        viewProvider.setAccessDeniedViewClass(RedirectToLoginView.class);
72
    }
73

    
74
    /**
75
     * @return
76
     */
77
    private String pageFragmentAsState() {
78
        Page page = Page.getCurrent();
79
        String fragment = page.getUriFragment();
80
        String state = null;
81
        if(fragment != null && fragment.startsWith("!")){
82
            state = fragment.substring(1, fragment.length());
83
        }
84
        return state;
85
    }
86

    
87
    //---------------------------------------------
88

    
89
    public static final String INITIAL_VIEW =  DashBoardView.NAME;
90

    
91

    
92
    /*
93
     * this HACKY solution forces the bean to be instantiated, TODO do it properly
94
     */
95
//    @Autowired
96
//    MenuBeanDiscoveryBean bean;
97

    
98
    @Autowired
99
    private MainMenu mainMenu;
100

    
101
    @Autowired
102
    @Qualifier("registrationToolbar")
103
    private Toolbar toolbar;
104

    
105
    @Autowired
106
    ApplicationEventPublisher eventBus;
107

    
108
    public RegistrationUI() {
109

    
110
    }
111

    
112
    @Override
113
    protected void init(VaadinRequest request) {
114

    
115
        navigator.setViewDisplay(viewDisplay);
116
        configureAccessDeniedView();
117

    
118
        addStyleName(ValoTheme.UI_WITH_MENU);
119
        Responsive.makeResponsive(this);
120

    
121
        setContent((Component) viewDisplay);
122
        Label phycoBankLogo = new Label("PhycoBank");
123
        phycoBankLogo.addStyleName("phycobank-green");
124
        phycoBankLogo.addStyleName(ValoTheme.LABEL_HUGE);
125
        mainMenu.addMenuComponent(phycoBankLogo);
126

    
127
        mainMenu.addMenuItem("New", FontAwesome.EDIT, StartRegistrationViewBean.NAME );
128
        mainMenu.addMenuItem("Continue", FontAwesome.ARROW_RIGHT, ListViewBean.NAME + "/" + ListViewBean.OPTION_IN_PROGRESS);
129
        mainMenu.addMenuItem("List", FontAwesome.TASKS, ListViewBean.NAME + "/" + ListViewBean.OPTION_ALL);
130

    
131
        if(ToolbarDisplay.class.isAssignableFrom(viewDisplay.getClass())){
132
            ((ToolbarDisplay)viewDisplay).setToolbar(toolbar);
133
        }
134

    
135
        eventBus.publishEvent(new UIInitializedEvent());
136

    
137
        String brand = "phycobank";
138
        //TODO create annotation:
139
        // @Styles(files={""}, branding="brand")
140
        //
141
        // the branding can either be specified or can be read from the properties file in .cdmLibrary/remote-webapp/{instance-name}-app.properties
142
        // See CdmUtils for appropriate methods to access this folder
143
        // the 'vaadin://' protocol refers to the VAADIN folder
144
        Resource registryCssFile = new ExternalResource("vaadin://branding/" + brand + "/css/branding.css");
145
        Page.getCurrent().getStyles().add(registryCssFile);
146

    
147
        navigator.setDefaultViewName(INITIAL_VIEW);
148

    
149
        //navigate to initial view
150
//        String state = pageFragmentAsState();
151

    
152

    
153
//        if(state == null){
154
//            // the case when state != null is handled in the UI base class
155
//            eventBus.publishEvent(new NavigationEvent(INITIAL_VIEW));
156
//        }
157
    }
158
}
(6-6/7)