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.adaptive; import com.hybridbpm.core.data.bpm.Case; import com.hybridbpm.core.data.bpm.StartProcess; import com.hybridbpm.ui.HybridbpmUI; import com.hybridbpm.ui.component.TextComplete; import com.hybridbpm.ui.component.bpm.TaskLayout; import com.hybridbpm.ui.component.dashboard.tab.DashboardTab; import com.vaadin.annotations.DesignRoot; import com.vaadin.event.FieldEvents; import com.vaadin.server.FontAwesome; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; import com.vaadin.ui.CssLayout; import com.vaadin.ui.Layout; import com.vaadin.ui.TextArea; import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.declarative.Design; import com.vaadin.ui.themes.ValoTheme; import java.util.Arrays; /** * * @author Marat Gubaidullin */ @DesignRoot public class AdaptiveTaskEditor extends CssLayout implements Button.ClickListener { protected DashboardTab panelView; protected Layout taskLayout = new VerticalLayout(); protected Button btnBack = new Button("Back"); private Case case1; private TextArea taskTitle; private Button btnSend; private Button btnProcess; private VerticalLayout card; private VerticalLayout templateLayout; private VerticalLayout topLayout; private VerticalLayout adaptiveLayout; public AdaptiveTaskEditor(DashboardTab panelView, Case case1) { this.panelView = panelView; this.case1 = case1; Design.read(this); btnSend.setIcon(FontAwesome.SEND); btnSend.addClickListener(this); btnProcess.addClickListener(this); TextComplete textComplete = new TextComplete(); textComplete.extend(taskTitle, HybridbpmUI.getAccessAPI().findUserNamesByName(null), Arrays.asList(new String[] { "loan", "creditcard" })); taskTitle.addTextChangeListener(new FieldEvents.TextChangeListener() { @Override public void textChange(FieldEvents.TextChangeEvent event) { String text = event.getText(); String[] lines = text.split(System.getProperty("line.separator")); if (lines != null && (lines.length > 1)) { taskTitle.setRows(lines.length + 2); } } }); btnBack.addClickListener(this); btnBack.setStyleName(ValoTheme.BUTTON_LINK); btnBack.addStyleName(ValoTheme.BUTTON_SMALL); btnBack.setIcon(FontAwesome.ARROW_LEFT); } @Override public void buttonClick(Button.ClickEvent event) { if (event.getButton().equals(btnSend)) { } else if (event.getButton().equals(btnProcess)) { adaptiveLayout.setVisible(false); templateLayout.removeAllComponents(); templateLayout.setVisible(true); for (StartProcess startProcess : HybridbpmUI.getBpmAPI().getMyProcessToStart()) { String startTaskTitle = startProcess.getProcessModel() .getTaskModelByName(startProcess.getTaskName()).getTitle(); String processTitle = startProcess.getProcessModel().getTitle() .getValue(HybridbpmUI.getCurrent().getLocale()); Button button = new Button(processTitle + " (" + startTaskTitle + ")"); button.setData(startProcess); button.addClickListener(this); button.setStyleName(ValoTheme.BUTTON_LINK); button.addStyleName(ValoTheme.BUTTON_SMALL); button.setIcon(FontAwesome.valueOf(startProcess.getIcon())); templateLayout.addComponent(button); } templateLayout.addComponent(btnBack); templateLayout.setComponentAlignment(btnBack, Alignment.BOTTOM_RIGHT); } else if (event.getButton().getData() instanceof StartProcess) { StartProcess spd = (StartProcess) event.getButton().getData(); if (taskLayout != null && card.getComponentIndex(taskLayout) > -1) { card.removeComponent(taskLayout); } taskLayout = new TaskLayout(null, spd.getProcessModel().getName(), spd.getTaskName(), true); card.addComponents(taskLayout); card.setExpandRatio(taskLayout, 1f); card.setSizeFull(); topLayout.setVisible(false); // panelView.toggleMaximized(this, true); } else if (event.getButton().equals(btnBack)) { adaptiveLayout.setVisible(true); templateLayout.setVisible(false); } } public void close() { if (taskLayout != null && card.getComponentIndex(taskLayout) > -1) { card.removeComponent(taskLayout); } topLayout.setVisible(true); adaptiveLayout.setVisible(true); // panelView.toggleMaximized(this, false); panelView.refresh(); } }