org.activiti.kickstart.ui.panel.SelectWorkflowPanel.java Source code

Java tutorial

Introduction

Here is the source code for org.activiti.kickstart.ui.panel.SelectWorkflowPanel.java

Source

/* 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 org.activiti.kickstart.ui.panel;

import java.io.InputStream;
import java.util.Date;
import java.util.List;

import org.activiti.kickstart.KickstartApplication;
import org.activiti.kickstart.dto.KickstartWorkflowInfo;
import org.activiti.kickstart.service.KickstartService;
import org.activiti.kickstart.ui.listener.EditExistingKickstartWorkflowClickListener;
import org.activiti.kickstart.ui.popup.ProcessImagePopupWindow;

import com.vaadin.data.Item;
import com.vaadin.terminal.StreamResource;
import com.vaadin.terminal.StreamResource.StreamSource;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.Link;
import com.vaadin.ui.Panel;
import com.vaadin.ui.Table;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.themes.Reindeer;

/**
 * @author Joram Barrez
 */
public class SelectWorkflowPanel extends Panel {

    protected static final long serialVersionUID = 3103964043105524411L;

    protected static final String TITLE = "Select existing adhoc workflow";

    protected Label titleLabel;
    protected Table workflowTable;
    //  protected Resource editImage;
    //  protected Resource xmlImage;

    protected VerticalLayout layout;
    protected KickstartService kickstartService;

    public SelectWorkflowPanel() {
        this.kickstartService = KickstartApplication.get().getKickstartService();
        //    this.editImage = new ClassResource("images/edit.png", viewManager.getApplication());
        //    this.xmlImage = new ClassResource("images/xml.png", viewManager.getApplication());

        setStyleName(Reindeer.PANEL_LIGHT);

        layout = new VerticalLayout();
        layout.setMargin(true);
        layout.setSpacing(true);
        layout.setSizeFull();
        setContent(layout);

        initTitle();
        initWorkflowTable();
        initWorkflowTableContents();
    }

    private void initTitle() {
        titleLabel = new Label(TITLE);
        titleLabel.setStyleName(Reindeer.LABEL_H1);
        addComponent(titleLabel);

        // add some empty space
        Label emptyLabel = new Label("");
        emptyLabel.setHeight("1.5em");
        layout.addComponent(emptyLabel);
    }

    protected void initWorkflowTable() {
        workflowTable = new Table();

        workflowTable.setSelectable(true);
        workflowTable.setMultiSelect(false);
        workflowTable.setPageLength(workflowTable.size());
        workflowTable.setSizeFull();

        workflowTable.addContainerProperty("name", Button.class, null);
        workflowTable.addContainerProperty("key", String.class, null);
        workflowTable.addContainerProperty("version", Integer.class, null);
        workflowTable.addContainerProperty("createTime", Date.class, null);
        workflowTable.addContainerProperty("nrOfRunningInstance", Integer.class, null);
        workflowTable.addContainerProperty("nrOfHistoricInstances", Integer.class, null);
        workflowTable.addContainerProperty("actions", HorizontalLayout.class, null);

        workflowTable.setColumnHeader("name", "Name");
        workflowTable.setColumnHeader("key", "Key");
        workflowTable.setColumnHeader("version", "Version");
        workflowTable.setColumnHeader("nrOfRunningInstance", "# running instances");
        workflowTable.setColumnHeader("nrOfHistoricInstances", "# historic instances");
        workflowTable.setColumnHeader("actions", "Actions");

        workflowTable.setColumnAlignment("version", Table.ALIGN_CENTER);
        workflowTable.setColumnAlignment("nrOfRunningInstance", Table.ALIGN_CENTER);
        workflowTable.setColumnAlignment("nrOfHistoricInstances", Table.ALIGN_CENTER);

        layout.addComponent(workflowTable);
    }

    protected void initWorkflowTableContents() {
        List<KickstartWorkflowInfo> processDefinitions = kickstartService.findWorkflowInformation(true);
        for (final KickstartWorkflowInfo infoDto : processDefinitions) {
            Item workflowItem = workflowTable.getItem(workflowTable.addItem());
            Button nameButton = new Button(infoDto.getName());
            nameButton.setStyleName("link");
            nameButton.addListener(new Button.ClickListener() {

                private static final long serialVersionUID = 5671158538486627690L;

                public void buttonClick(ClickEvent event) {
                    KickstartApplication.get().getViewManager()
                            .showPopupWindow(new ProcessImagePopupWindow(infoDto.getId()));
                }

            });
            workflowItem.getItemProperty("name").setValue(nameButton);
            workflowItem.getItemProperty("key").setValue(infoDto.getKey());
            workflowItem.getItemProperty("version").setValue(infoDto.getVersion());
            workflowItem.getItemProperty("createTime").setValue(infoDto.getCreateTime());
            workflowItem.getItemProperty("nrOfRunningInstance").setValue(infoDto.getNrOfRuntimeInstances());
            workflowItem.getItemProperty("nrOfHistoricInstances").setValue(infoDto.getNrOfHistoricInstances());

            HorizontalLayout actions = new HorizontalLayout();
            actions.setSpacing(true);

            Button editButton = new Button("edit");
            editButton.setStyleName("link");
            //      editButton.setIcon(editImage);
            editButton.setData(infoDto.getId());
            editButton.addListener(new EditExistingKickstartWorkflowClickListener(kickstartService));
            actions.addComponent(editButton);

            StreamResource.StreamSource streamSource = new StreamSource() {

                private static final long serialVersionUID = -8875067466181823014L;

                public InputStream getStream() {
                    return KickstartApplication.get().getKickstartService().getBpmnXml(infoDto.getId());
                }
            };
            Link bpmnXmlLink = new Link("get xml",
                    new StreamResource(streamSource, infoDto.getKey() + ".bpmn20.xml", KickstartApplication.get()));
            //      bpmnXmlLink.setIcon(xmlImage);
            actions.addComponent(bpmnXmlLink);

            workflowItem.getItemProperty("actions").setValue(actions);
        }
        workflowTable.setPageLength(workflowTable.size());
    }

}