1 package eu
.etaxonomy
.cdm
.vaadin
.component
;
3 import java
.io
.Serializable
;
5 import javax
.annotation
.PostConstruct
;
7 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
8 import org
.springframework
.beans
.factory
.annotation
.Qualifier
;
9 import org
.springframework
.context
.ApplicationEventPublisher
;
10 import org
.springframework
.context
.event
.EventListener
;
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
;
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
;
27 @SpringComponent("distributionToolbar")
29 public class DistributionToolbar
extends HorizontalLayout
implements Serializable
{
32 * automatically generated ID
34 private static final long serialVersionUID
= 5344340511582993289L;
37 protected ApplicationEventPublisher eventBus
;
40 @Qualifier("cdmRepository")
41 private CdmRepository repo
;
44 private NavigationManager navigationManager
;
47 private CdmUserHelper userHelper
;
49 private final Button loginButton
= new Button(Messages
.getLocalizedString(Messages
.DistributionToolbar_LOGIN
));
51 private final Button logoutButton
= new Button(Messages
.getLocalizedString(Messages
.DistributionToolbar_LOGOUT
));
53 private final Button userButton
= new Button(FontAwesome
.USER
);
55 private final Button editButton
= new Button(Messages
.getLocalizedString(Messages
.DistributionToolbar_EDIT
));
57 private final Button saveButton
= new Button(Messages
.getLocalizedString(Messages
.DistributionToolbar_SAVE
));
59 private final Button detailButton
= new Button(Messages
.getLocalizedString(Messages
.DistributionToolbar_DETAIL
));
61 private final Button distributionSettingsButton
= new Button(Messages
.getLocalizedString(Messages
.DistributionToolbar_AREAS_AND_TAXA
));
63 private final Button settingsButton
= new Button(Messages
.getLocalizedString(Messages
.DistributionToolbar_STATUS
));
65 // private final Authentication authentication;
66 // private ExcelExporter exporter = new ExcelExporter();
72 setStyleName("toolbar"); //$NON-NLS-1$
73 setWidth("100%"); //$NON-NLS-1$
74 setHeight("75px"); //$NON-NLS-1$
76 // exporter.setCaption("Export");
77 // exporter.setIcon(new ThemeResource("icons/32/document-xsl.png"));
78 loginButton
.addClickListener(e
-> performLogin());
79 logoutButton
.addClickListener(e
-> performLogout());
80 saveButton
.setIcon(new ThemeResource("icons/32/document-save.png")); //$NON-NLS-1$
81 editButton
.setIcon(new ThemeResource("icons/32/document-edit.png")); //$NON-NLS-1$
82 detailButton
.setIcon(new ThemeResource("icons/32/document-txt.png")); //$NON-NLS-1$
83 settingsButton
.setIcon(new ThemeResource("icons/32/settings_1.png")); //$NON-NLS-1$
84 distributionSettingsButton
.setIcon(new ThemeResource("icons/32/settings_1.png")); //$NON-NLS-1$
86 HorizontalLayout leftLayout
= new HorizontalLayout();
87 leftLayout
.addComponent(detailButton
);
88 leftLayout
.addComponent(settingsButton
);
89 leftLayout
.addComponent(distributionSettingsButton
);
91 HorizontalLayout rightLayout
= new HorizontalLayout();
92 rightLayout
.addComponent(loginButton
);
93 rightLayout
.addComponent(logoutButton
);
94 rightLayout
.addComponent(userButton
);
96 addComponent(leftLayout
);
97 setComponentAlignment(leftLayout
, Alignment
.MIDDLE_LEFT
);
98 addComponent(rightLayout
);
99 setComponentAlignment(rightLayout
, Alignment
.MIDDLE_RIGHT
);
100 setExpandRatio(rightLayout
, 1);
101 updateAuthenticationButtons();
105 public void onAuthenticationSuccessEvent(AuthenticationSuccessEvent event
){
106 boolean isInitialized
= userButton
!= null;
107 // The RegistrationToolbar is being initialize even if not needed only because it is a EventListener
108 // which causes Spring to initialize it.
109 // TODO After switching to an other event bus this check can be removed
111 updateAuthenticationButtons();
118 protected void updateAuthenticationButtons() {
119 if(userHelper
.userIsAutheticated() && !userHelper
.userIsAnnonymous()){
120 userButton
.setCaption(userHelper
.userName());
121 userButton
.setVisible(true);
122 logoutButton
.setVisible(true);
123 loginButton
.setVisible(false);
124 saveButton
.setVisible(true);
125 editButton
.setVisible(true);
126 detailButton
.setVisible(true);
127 settingsButton
.setVisible(true);
128 distributionSettingsButton
.setVisible(true);
130 userButton
.setCaption(null);
131 userButton
.setVisible(false);
132 logoutButton
.setVisible(false);
133 loginButton
.setVisible(true);
134 saveButton
.setVisible(false);
135 editButton
.setVisible(false);
136 detailButton
.setVisible(false);
137 settingsButton
.setVisible(false);
138 distributionSettingsButton
.setVisible(false);
145 private void performLogin() {
146 eventBus
.publishEvent(new NavigationEvent("login", navigationManager
.getCurrentViewName())); //$NON-NLS-1$
150 private void performLogout() {
152 updateAuthenticationButtons();
153 navigationManager
.reloadCurrentView();
156 public Button
getSettingsButton(){
157 return settingsButton
;
160 public Button
getDistributionSettingsButton() {
161 return distributionSettingsButton
;
164 public Button
getEditButton() {
168 public Button
getSaveButton() {
172 public Button
getDetailButton() {