22d47230cc1a1693c2ff8abdf55c844761c7d070
[cdm-vaadin.git] / src / main / java / eu / etaxonomy / cdm / vaadin / ui / DistributionStatusUI.java
1 package eu.etaxonomy.cdm.vaadin.ui;
2
3 import org.apache.log4j.Logger;
4 import org.springframework.beans.factory.annotation.Autowired;
5 import org.springframework.context.ApplicationEventPublisher;
6
7 import com.vaadin.annotations.Theme;
8 import com.vaadin.annotations.Title;
9 import com.vaadin.annotations.Widgetset;
10 import com.vaadin.navigator.Navigator;
11 import com.vaadin.navigator.View;
12 import com.vaadin.navigator.ViewDisplay;
13 import com.vaadin.server.Page;
14 import com.vaadin.server.Responsive;
15 import com.vaadin.server.VaadinRequest;
16 import com.vaadin.spring.annotation.SpringUI;
17 import com.vaadin.spring.navigator.SpringViewProvider;
18 import com.vaadin.ui.UI;
19
20 import eu.etaxonomy.cdm.vaadin.security.ReleasableResourcesView;
21 import eu.etaxonomy.cdm.vaadin.view.RedirectToLoginView;
22 import eu.etaxonomy.cdm.vaadin.view.distributionStatus.DistributionTableViewBean;
23 import eu.etaxonomy.vaadin.ui.UIInitializedEvent;
24 import eu.etaxonomy.vaadin.ui.navigation.NavigationManagerBean;
25
26 @Theme("macosx")
27 @Title("Distribution Editor")
28 @SpringUI(path="distribution")
29 @Widgetset("eu.etaxonomy.cdm.vaadin.AppWidgetSet")
30 @SuppressWarnings("serial")
31 public class DistributionStatusUI extends UI{
32
33 private final static Logger logger = Logger.getLogger(DistributionStatusUI.class);
34
35 private ViewDisplay viewDisplay;
36
37 //---- pull into abstract super class ? ---------
38 @Autowired
39 SpringViewProvider viewProvider;
40
41 @Autowired
42 NavigationManagerBean navigator;
43
44 protected void configureAccessDeniedView() {
45 viewProvider.setAccessDeniedViewClass(RedirectToLoginView.class);
46 }
47
48 /**
49 * @return
50 */
51 private String pageFragmentAsState() {
52 Page page = Page.getCurrent();
53 String fragment = page.getUriFragment();
54 String state = null;
55 if(fragment != null && fragment.startsWith("!")){
56 state = fragment.substring(1, fragment.length());
57 }
58 return state;
59 }
60 //---------------------------------------------
61
62 public static final String INITIAL_VIEW = DistributionTableViewBean.NAME;
63
64 // @Autowired
65 // @Qualifier("registrationToolbar")
66 // private Toolbar toolbar;
67
68 @Autowired
69 ApplicationEventPublisher eventBus;
70
71 public DistributionStatusUI() {
72
73 }
74
75 @Override
76 protected void init(VaadinRequest request) {
77
78 addDetachListener(e -> {
79 for(String viewName : viewProvider.getViewNamesForCurrentUI()){
80 View view = viewProvider.getView(viewName);
81 if(view != null && view instanceof ReleasableResourcesView) {
82 ((ReleasableResourcesView)view).releaseResourcesOnAccessDenied();
83 }
84 }
85
86 });
87
88 configureAccessDeniedView();
89
90 Responsive.makeResponsive(this);
91
92 viewDisplay = new Navigator.SingleComponentContainerViewDisplay(this);
93 navigator.setViewDisplay(viewDisplay);
94 //setContent((Component) viewDisplay);
95
96 // if(ToolbarDisplay.class.isAssignableFrom(viewDisplay.getClass())){
97 // ((ToolbarDisplay)viewDisplay).setToolbar(toolbar);
98 // }
99
100 eventBus.publishEvent(new UIInitializedEvent());
101
102 navigator.setDefaultViewName(INITIAL_VIEW);
103
104 }
105 }