Project

General

Profile

Download (6.25 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.vaadin.component;
2

    
3
import java.io.Serializable;
4

    
5
import javax.annotation.PostConstruct;
6

    
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.beans.factory.annotation.Qualifier;
9
import org.vaadin.spring.events.EventBus;
10
import org.vaadin.spring.events.annotation.EventBusListenerMethod;
11

    
12
import com.vaadin.server.FontAwesome;
13
import com.vaadin.server.ThemeResource;
14
import com.vaadin.spring.annotation.SpringComponent;
15
import com.vaadin.spring.annotation.ViewScope;
16
import com.vaadin.ui.Alignment;
17
import com.vaadin.ui.Button;
18
import com.vaadin.ui.HorizontalLayout;
19

    
20
import eu.etaxonomy.cdm.api.application.CdmRepository;
21
import eu.etaxonomy.cdm.i18n.Messages;
22
import eu.etaxonomy.cdm.service.CdmUserHelper;
23
import eu.etaxonomy.cdm.vaadin.event.AuthenticationSuccessEvent;
24
import eu.etaxonomy.vaadin.ui.navigation.NavigationEvent;
25
import eu.etaxonomy.vaadin.ui.navigation.NavigationManager;
26

    
27
@SpringComponent("distributionToolbar")
28
@ViewScope
29
public class DistributionToolbar extends HorizontalLayout implements Serializable{
30

    
31
	/**
32
	 * automatically generated ID
33
	 */
34
	private static final long serialVersionUID = 5344340511582993289L;
35

    
36
    private EventBus.UIEventBus uiEventBus;
37

    
38
    @Autowired
39
    private final void setViewEventBus(EventBus.UIEventBus viewEventBus){
40
        this.uiEventBus = viewEventBus;
41
        viewEventBus.subscribe(AuthenticationSuccessEvent.class);
42
    }
43

    
44
    @Autowired
45
    @Qualifier("cdmRepository")
46
    private CdmRepository repo;
47

    
48
    @Autowired
49
    private NavigationManager navigationManager;
50

    
51
    @Autowired
52
    private CdmUserHelper userHelper;
53

    
54
    private final Button loginButton = new Button(Messages.getLocalizedString(Messages.DistributionToolbar_LOGIN));
55

    
56
    private final Button logoutButton = new Button(Messages.getLocalizedString(Messages.DistributionToolbar_LOGOUT));
57

    
58
    private final Button userButton = new Button(FontAwesome.USER);
59

    
60
	private final Button editButton = new Button(Messages.getLocalizedString(Messages.DistributionToolbar_EDIT));
61

    
62
	private final Button saveButton = new Button(Messages.getLocalizedString(Messages.DistributionToolbar_SAVE));
63

    
64
	private final Button detailButton = new Button(Messages.getLocalizedString(Messages.DistributionToolbar_DETAIL));
65

    
66
	private final Button distributionSettingsButton =  new Button(Messages.getLocalizedString(Messages.DistributionToolbar_AREAS_AND_TAXA));
67

    
68
	private final Button settingsButton =  new Button(Messages.getLocalizedString(Messages.DistributionToolbar_STATUS));
69

    
70
//	private final Authentication authentication;
71
//	private ExcelExporter exporter = new ExcelExporter();
72

    
73
	@PostConstruct
74
    public void init() {
75
		setMargin(true);
76
		setSpacing(true);
77
		setStyleName("toolbar"); //$NON-NLS-1$
78
		setWidth("100%"); //$NON-NLS-1$
79
		setHeight("75px"); //$NON-NLS-1$
80

    
81
//		exporter.setCaption("Export");
82
//		exporter.setIcon(new ThemeResource("icons/32/document-xsl.png"));
83
		loginButton.addClickListener(e -> performLogin());
84
		logoutButton.addClickListener(e -> performLogout());
85
		saveButton.setIcon(new ThemeResource("icons/32/document-save.png")); //$NON-NLS-1$
86
		editButton.setIcon(new ThemeResource("icons/32/document-edit.png")); //$NON-NLS-1$
87
		detailButton.setIcon(new ThemeResource("icons/32/document-txt.png")); //$NON-NLS-1$
88
		settingsButton.setIcon(new ThemeResource("icons/32/settings_1.png")); //$NON-NLS-1$
89
		distributionSettingsButton.setIcon(new ThemeResource("icons/32/settings_1.png")); //$NON-NLS-1$
90

    
91
        HorizontalLayout leftLayout = new HorizontalLayout();
92
        leftLayout.addComponent(detailButton);
93
        leftLayout.addComponent(settingsButton);
94
        leftLayout.addComponent(distributionSettingsButton);
95

    
96
		HorizontalLayout rightLayout = new HorizontalLayout();
97
		rightLayout.addComponent(loginButton);
98
		rightLayout.addComponent(logoutButton);
99
        rightLayout.addComponent(userButton);
100

    
101
        addComponent(leftLayout);
102
        setComponentAlignment(leftLayout, Alignment.MIDDLE_LEFT);
103
		addComponent(rightLayout);
104
		setComponentAlignment(rightLayout, Alignment.MIDDLE_RIGHT);
105
		setExpandRatio(rightLayout, 1);
106
		updateAuthenticationButtons();
107
    }
108

    
109
	@EventBusListenerMethod
110
    public void onAuthenticationSuccessEvent(org.vaadin.spring.events.Event<AuthenticationSuccessEvent> event){
111
        boolean isInitialized = userButton != null;
112
        // The RegistrationToolbar is being initialize even if not needed only because it is a EventListener
113
        // which causes Spring to initialize it.
114
        // TODO After switching to an other event bus this check can be removed
115
        if(isInitialized){
116
            updateAuthenticationButtons();
117
        }
118
    }
119

    
120
    /**
121
     * @param event
122
     */
123
    protected void updateAuthenticationButtons() {
124
        if(userHelper.userIsAutheticated() && !userHelper.userIsAnnonymous()){
125
            userButton.setCaption(userHelper.userName());
126
            userButton.setVisible(true);
127
            logoutButton.setVisible(true);
128
            loginButton.setVisible(false);
129
            saveButton.setVisible(true);
130
            editButton.setVisible(true);
131
            detailButton.setVisible(true);
132
            settingsButton.setVisible(true);
133
            distributionSettingsButton.setVisible(true);
134
        } else {
135
            userButton.setCaption(null);
136
            userButton.setVisible(false);
137
            logoutButton.setVisible(false);
138
            loginButton.setVisible(true);
139
            saveButton.setVisible(false);
140
            editButton.setVisible(false);
141
            detailButton.setVisible(false);
142
            settingsButton.setVisible(false);
143
            distributionSettingsButton.setVisible(false);
144
        }
145
    }
146

    
147
    /**
148
     * @return
149
     */
150
    private void performLogin() {
151
        uiEventBus.publish(this, new NavigationEvent("login", navigationManager.getCurrentViewName())); //$NON-NLS-1$
152
    }
153

    
154

    
155
    private void performLogout() {
156
        userHelper.logout();
157
        updateAuthenticationButtons();
158
        navigationManager.reloadCurrentView();
159
    }
160

    
161
    public Button getSettingsButton(){
162
        return settingsButton;
163
    }
164

    
165
    public Button getDistributionSettingsButton() {
166
		return distributionSettingsButton;
167
	}
168

    
169
	public Button getEditButton() {
170
		return editButton;
171
	}
172

    
173
	public Button getSaveButton() {
174
		return saveButton;
175
	}
176

    
177
	public Button getDetailButton() {
178
		return detailButton;
179
	}
180

    
181
}
(7-7/10)