/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gses.webui;
import com.vaadin.ui.CustomComponent;
import com.vaadin.ui.TabSheet;
import com.vaadin.ui.themes.Reindeer;
import ru.codeinside.adm.database.Role;
import ru.codeinside.gses.webui.components.TabChanger;
import ru.codeinside.gses.webui.components.UserInfoPanel;
import ru.codeinside.gses.webui.declarant.DeclarantFactory;
import ru.codeinside.gses.webui.executor.ArchiveFactory;
import ru.codeinside.gses.webui.executor.ExecutorFactory;
import ru.codeinside.gses.webui.manager.ManagerWorkplace;
import ru.codeinside.gses.webui.supervisor.SupervisorWorkplace;
import ru.codeinside.gses.webui.supervisor.TaskManager;
import java.util.Set;
final public class Workplace extends CustomComponent {
public Workplace(String login, Set<Role> roles, boolean production) {
TabSheet tabSheet = new TabSheet();
tabSheet.setSizeFull();
tabSheet.setStyleName(Reindeer.TABSHEET_BORDERLESS);
tabSheet.setCloseHandler(new DelegateCloseHandler());
if (!production) {
new MemoryUsage(tabSheet);
}
UserInfoPanel.addClosableToTabSheet(tabSheet, login);
if (roles.contains(Role.Executor)) {
TabChanger archiveChanger = new TabChanger(tabSheet);
archiveChanger.set(ArchiveFactory.create(), "Архив");
TabChanger executorChanger = new TabChanger(tabSheet);
executorChanger.set(ExecutorFactory.create(executorChanger, tabSheet), "Исполнение");
}
if (roles.contains(Role.Declarant)) {
new TabChanger(tabSheet).set(DeclarantFactory.create(), "Подача заявки");
}
if (roles.contains(Role.Supervisor) || roles.contains(Role.SuperSupervisor)) {
new TabChanger(tabSheet).set(new SupervisorWorkplace(), "Контроль исполнения");
}
if (roles.contains(Role.SuperSupervisor)) {
new TabChanger(tabSheet).set(new TaskManager(), "Состояние исполнения");
}
if (roles.contains(Role.Manager)) {
new TabChanger(tabSheet).set(new ManagerWorkplace(), "Управление процедурами");
}
if (roles.contains(Role.Executor) || roles.contains(Role.Declarant) || roles.contains(Role.Supervisor) || roles.contains(Role.SuperSupervisor)) {
SmevTasksPanel smevTasksPanel = new SmevTasksPanel();
tabSheet.addTab(smevTasksPanel, "Управление вызовами СМЭВ");
tabSheet.addListener(smevTasksPanel);
}
setCompositionRoot(tabSheet);
setSizeFull();
}
}