Project

General

Profile

Download (1.27 KB) Statistics
| Branch: | Tag: | Revision:
1 4abc3175 Andreas Kohlbecker
package eu.etaxonomy.vaadin.ui.navigation;
2 683a331c Andreas Kohlbecker
3
import java.util.Collection;
4
5
import org.springframework.beans.factory.annotation.Autowired;
6 43e0fe91 Andreas Kohlbecker
import org.springframework.context.ApplicationEventPublisher;
7
import org.springframework.context.annotation.Lazy;
8 683a331c Andreas Kohlbecker
9
import com.vaadin.navigator.View;
10
import com.vaadin.navigator.ViewChangeListener;
11
import com.vaadin.spring.annotation.SpringComponent;
12
import com.vaadin.spring.annotation.UIScope;
13
14
@SpringComponent
15
@UIScope
16
class ViewChangeListenerBean implements ViewChangeListener {
17
	private static final long serialVersionUID = 1913421359807383L;
18
19 43e0fe91 Andreas Kohlbecker
	@Autowired(required=false)
20
	private Collection<ViewChangeAllowedVerifier> verifiers = null;
21 683a331c Andreas Kohlbecker
22
	@Autowired
23 43e0fe91 Andreas Kohlbecker
	@Lazy
24 683a331c Andreas Kohlbecker
	private NavigationManager navigationManager;
25
26
	@Autowired
27 43e0fe91 Andreas Kohlbecker
    ApplicationEventPublisher eventBus;
28 683a331c Andreas Kohlbecker
29
	@Override
30
	public boolean beforeViewChange(ViewChangeEvent event) {
31
		View currentView = navigationManager.getCurrentView();
32 43e0fe91 Andreas Kohlbecker
		if (currentView != null && verifiers != null) {
33 683a331c Andreas Kohlbecker
			for (ViewChangeAllowedVerifier verifier : verifiers) {
34
				if (currentView.equals(verifier)) {
35
					if (!verifier.isViewChangeAllowed()) {
36
						return false;
37
					}
38
				}
39
			}
40
		}
41
		return true;
42
	}
43
44
	@Override
45
	public void afterViewChange(ViewChangeEvent event) {
46 43e0fe91 Andreas Kohlbecker
	    eventBus.publishEvent(new AfterViewChangeEvent());
47 683a331c Andreas Kohlbecker
	}
48
49
}