Java tutorial
/* * Copyright (c) 2011-2015 Marat Gubaidullin. * * This file is part of HYBRIDBPM. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package com.hybridbpm.ui.component.bpm; import com.hybridbpm.core.data.bpm.Case; import com.hybridbpm.ui.HybridbpmUI; import com.hybridbpm.ui.util.Translate; import com.vaadin.server.FontAwesome; import com.vaadin.server.Responsive; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.TabSheet; import com.vaadin.ui.UI; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.themes.ValoTheme; import org.vaadin.dialogs.ConfirmDialog; /** * * @author Marat Gubaidullin */ @SuppressWarnings("serial") public class CaseLayout extends VerticalLayout implements Button.ClickListener { private final String caseId; private Case hCase; private final TabSheet tabSheet = new TabSheet(); private final Button btnTerminate = new Button("Terminate", this); private final Button btnDelete = new Button("Delete", this); private final HorizontalLayout buttonBar = new HorizontalLayout(btnDelete, btnTerminate); private final CaseFormHeader caseFormHeader = new CaseFormHeader(); private CaseTaskListLayout caseTaskListLayout; private CaseVariablesLayout caseVariablesLayout; private TaskCommentsLayout taskCommentsLayout; public CaseLayout(String caseId) { this.caseId = caseId; Responsive.makeResponsive(this); btnDelete.setIcon(FontAwesome.TIMES); btnTerminate.setIcon(FontAwesome.STOP); btnTerminate.setStyleName(ValoTheme.BUTTON_PRIMARY); buttonBar.setWidth(100, Unit.PERCENTAGE); buttonBar.setSpacing(true); buttonBar.addStyleName("toolbar"); buttonBar.setExpandRatio(btnDelete, 1f); buttonBar.setComponentAlignment(btnDelete, Alignment.MIDDLE_RIGHT); buttonBar.setComponentAlignment(btnTerminate, Alignment.MIDDLE_RIGHT); tabSheet.setStyleName(ValoTheme.TABSHEET_FRAMED); tabSheet.setSizeFull(); setSizeFull(); setSpacing(true); addComponent(caseFormHeader); addComponent(tabSheet); addComponent(buttonBar); setExpandRatio(tabSheet, 1f); loadForm(); } private void loadForm() { prepareData(); prepareHeader(); createCaseTaskListLayout(); createDiscussionTab(); configureButtons(); } private void prepareData() { hCase = HybridbpmUI.getBpmAPI().getCaseById(caseId); } private void prepareHeader() { caseFormHeader.setData(hCase); } private void createCaseTaskListLayout() { caseTaskListLayout = new CaseTaskListLayout(caseId); caseTaskListLayout.refreshTable(); tabSheet.addTab(caseTaskListLayout, "Tasks"); if (HybridbpmUI.getAccessAPI().isAdministrator()) { caseVariablesLayout = new CaseVariablesLayout(caseId); caseVariablesLayout.refreshTable(); tabSheet.addTab(caseVariablesLayout, "Variables"); } } private void createDiscussionTab() { taskCommentsLayout = new TaskCommentsLayout(caseId, null); taskCommentsLayout.initUI(); tabSheet.addTab(taskCommentsLayout, "Comments"); } private void configureButtons() { if (hCase.getStatus().equals(Case.STATUS.STARTED)) { btnTerminate.setEnabled(true); btnDelete.setEnabled(false); } else if (hCase.getStatus().equals(Case.STATUS.ERROR)) { btnTerminate.setEnabled(true); btnDelete.setEnabled(false); } else if (hCase.getStatus().equals(Case.STATUS.FINISHED)) { btnTerminate.setEnabled(false); btnDelete.setEnabled(true); } else if (hCase.getStatus().equals(Case.STATUS.TERMINATED)) { btnTerminate.setEnabled(false); btnDelete.setEnabled(true); } if (!HybridbpmUI.getAccessAPI().isAdministrator()) { buttonBar.setVisible(false); } } @Override public void buttonClick(Button.ClickEvent event) { if (event.getButton().equals(btnDelete)) { ConfirmDialog.show(UI.getCurrent(), Translate.getMessage("windowTitleConfirm"), "Delete case and all data?", Translate.getMessage("btnOK"), Translate.getMessage("btnCancel"), new ConfirmDialog.Listener() { @Override public void onClose(ConfirmDialog dialog) { if (dialog.isConfirmed()) { HybridbpmUI.getBpmAPI().deleteCase(caseId); close(); } } }); } else if (event.getButton().equals(btnTerminate)) { ConfirmDialog.show(UI.getCurrent(), Translate.getMessage("windowTitleConfirm"), "Terminate case and all tasks?", Translate.getMessage("btnOK"), Translate.getMessage("btnCancel"), new ConfirmDialog.Listener() { @Override public void onClose(ConfirmDialog dialog) { if (dialog.isConfirmed()) { HybridbpmUI.getBpmAPI().terminateCase(caseId); loadForm(); } } }); } } private void close() { if (getParent() instanceof TabSheet) { TabSheet parent = (TabSheet) getParent(); parent.removeTab(parent.getTab(this)); parent.setSelectedTab(2); } } }