/*******************************************************************************
* Copyright (c) 2012 Dmitry Tikhomirov.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* Dmitry Tikhomirov - initial API and implementation
******************************************************************************/
package org.opensheet.client.widges;
import org.opensheet.client.dto.UserDTO;
import org.opensheet.client.l10n.OpensheetConstants;
import org.opensheet.client.mvc.events.AdminEvents;
import org.opensheet.client.mvc.events.AppEvents;
import org.opensheet.client.utils.Resources;
import org.opensheet.client.widges.combo.LangComboBox;
import org.opensheet.client.widges.windows.ReferenceBookWindow;
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.mvc.Dispatcher;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.RunAsyncCallback;
import com.google.gwt.user.client.Window;
public class SheetToolBar extends ToolBar{
Dispatcher dispatcher = Dispatcher.get();
private OpensheetConstants myMessages = (OpensheetConstants) GWT.create(OpensheetConstants.class);
public SheetToolBar(){
UserDTO userCurrent = (UserDTO) Registry.get("userCurrent");
final Dispatcher dispatcher = Dispatcher.get();
this.setId("sheetToolBarId");
Button opensheetButton = new Button("Opensheet");
opensheetButton.setIconStyle("icon-opensheet");
opensheetButton.addListener(Events.Select,new Listener<ButtonEvent>() {
@Override public void handleEvent(ButtonEvent be) {
dispatcher.dispatch(AppEvents.Sheet);
}
});
add(opensheetButton);
add(new SeparatorToolItem());
Button departmentsButton = new Button(myMessages.my_department());
departmentsButton.setIconStyle("icon-dm");
if(userCurrent.getPermission().getDm() == true){
departmentsButton.addListener(Events.Select,new Listener<ButtonEvent>() {
@Override public void handleEvent(ButtonEvent be) {
dispatcher.dispatch(AppEvents.Department);
}
});
}else{
departmentsButton.disable();
}
add(departmentsButton);
add(new SeparatorToolItem());
Button projectsButton = new Button(myMessages.my_projects());
projectsButton.setIconStyle("icon-pm");
if(userCurrent.getPermission().getPm() == true || userCurrent.getPermission().getAdmin() == true){
projectsButton.addListener(Events.Select,new Listener<ButtonEvent>() {
@Override public void handleEvent(ButtonEvent be) {
dispatcher.dispatch(AppEvents.Project);
}
});
}else{
projectsButton.disable();
}
add(projectsButton);
add(new SeparatorToolItem());
Button financialButton = new Button(myMessages.my_reports());
financialButton.setIconStyle("icon-fd");
if(userCurrent.getPermission().getFd() == true){
financialButton.addListener(Events.Select,new Listener<ButtonEvent>() {
@Override public void handleEvent(ButtonEvent be) {
dispatcher.dispatch(AppEvents.Financial);
}
});
}else{
financialButton.disable();
}
add(financialButton);
add(new SeparatorToolItem());
Button referenceButton = new Button("Reference book");
referenceButton.disable();
referenceButton.addSelectionListener(new SelectionListener<ButtonEvent>(){
@Override public void componentSelected(ButtonEvent ce) {
GWT.runAsync(new RunAsyncCallback(){
@Override public void onFailure(Throwable reason) {
MessageBox.info("Error",reason.getMessage(),null);
}
@Override public void onSuccess() {
new ReferenceBookWindow();
}
});
}
});
referenceButton.setIcon(Resources.ICONS.album());
add(referenceButton);
add(new SeparatorToolItem());
add(new FillToolItem());
LangComboBox langComboBox = new LangComboBox(userCurrent.getLang());
add(langComboBox);
// langComboBox.setLang(user.getLang());
add(new SeparatorToolItem());
Button adminButton = new Button(myMessages.administration());
adminButton.setIconStyle("icon-admin");
if(userCurrent.getPermission().getAdmin() == true){
adminButton.addListener(Events.Select,new Listener<ButtonEvent>() {
@Override public void handleEvent(ButtonEvent be) {
dispatcher.dispatch(AdminEvents.AdminUser);
}
});
}else{
adminButton.disable();
}
add(adminButton);
add(new SeparatorToolItem());
Button logoutButton = new Button(myMessages.logout());
logoutButton.setIconStyle("icon-logout");
logoutButton.addListener(Events.Select,new Listener<ButtonEvent>() {
@Override public void handleEvent(ButtonEvent be) {
Window.Location.assign(GWT.getHostPageBaseURL().toString() +"j_spring_security_logout");
}
});
add(logoutButton);
add(new SeparatorToolItem());
}
}