Package pl.net.bluesoft.rnd.processtool.ui.newprocess

Source Code of pl.net.bluesoft.rnd.processtool.ui.newprocess.NewProcessPane

package pl.net.bluesoft.rnd.processtool.ui.newprocess;

import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.ui.*;
import pl.net.bluesoft.rnd.processtool.ProcessToolContext;
import pl.net.bluesoft.rnd.processtool.bpm.ProcessToolBpmSession;
import pl.net.bluesoft.rnd.processtool.model.BpmTask;
import pl.net.bluesoft.rnd.processtool.model.ProcessInstance;
import pl.net.bluesoft.rnd.processtool.model.config.ProcessDefinitionConfig;
import pl.net.bluesoft.rnd.processtool.ui.activity.ActivityMainPane;
import pl.net.bluesoft.rnd.processtool.ui.process.ProcessDataPane;
import pl.net.bluesoft.rnd.processtool.ui.process.WindowProcessDataDisplayContext;
import pl.net.bluesoft.rnd.util.i18n.I18NSource;

import java.util.List;

import static org.aperteworkflow.util.vaadin.VaadinExceptionHandler.Util.withErrorHandling;

/**
* @author tlipski@bluesoft.net.pl
*/
public class NewProcessPane extends VerticalLayout {
    private ProcessToolBpmSession session;
    private I18NSource i18NSource;
    private ActivityMainPane activityMainPane;

    public NewProcessPane(final ProcessToolBpmSession session, final I18NSource i18NSource, final ActivityMainPane activityMainPane) {
        this.activityMainPane = activityMainPane;
        this.session = session;
        this.i18NSource = i18NSource;

        BeanItemContainer<ProcessDefinitionConfig> bic = new BeanItemContainer<ProcessDefinitionConfig>(ProcessDefinitionConfig.class);
        final ComboBox l = new ComboBox(getMessage("tasks.processType"), bic);
        ProcessToolContext ctx = ProcessToolContext.Util.getThreadProcessToolContext();

        for (ProcessDefinitionConfig cfg : session.getAvailableConfigurations(ctx)) {
            bic.addItem(cfg);
            l.setItemCaption(cfg, getMessage(cfg.getDescription()));
        }
        if (bic.size() != 0) {
            l.setValue(bic.firstItemId());
        }
        l.setNullSelectionAllowed(false);
        l.setNewItemsAllowed(false);
        l.setFilteringMode(ComboBox.FILTERINGMODE_OFF);

        l.setCaption(null);//getMessage("newProcess.caption"));
        Button b = new Button(getMessage("newProcess.start"));
        b.addStyleName("small default");
        b.addListener(new Button.ClickListener() {
            @Override
            public void buttonClick(Button.ClickEvent event) {
                if (l.getValue() == null) {
                    return;
                }
                withErrorHandling(getApplication(), new Runnable() {
                    public void run() {
                        ProcessToolContext ctx = ProcessToolContext.Util.getThreadProcessToolContext();
                        ProcessDefinitionConfig cfg = (ProcessDefinitionConfig) l.getValue();
                        cfg = ctx.getProcessDefinitionDAO().getActiveConfigurationByKey(cfg.getBpmDefinitionKey());
                        ProcessInstance instance = session.createProcessInstance(cfg, null, ctx, null, null, "portlet", null);
                        getWindow().showNotification(getMessage("newProcess.started"), 2000);
                        getWindow().executeJavaScript("Liferay.trigger('processtool.bpm.newProcess', '" + instance.getInternalId() + "');");
                        getWindow().executeJavaScript("vaadin.forceSync();");

                        List<BpmTask> tasks = session.findUserTasks(instance, ctx);
                        if (!tasks.isEmpty()) {
                            BpmTask task = tasks.get(0);
                            if (activityMainPane != null) {
                                activityMainPane.displayProcessData(task, session);
                            }
                            else {
                                Window w = new Window(instance.getInternalId());
                                w.setContent(new ProcessDataPane(getApplication(), session, i18NSource, task, new WindowProcessDataDisplayContext(w)));
                                w.center();
                                getWindow().addWindow(w);
                                w.focus();
                            }
                        }
                        else if (activityMainPane != null) {
                            activityMainPane.reloadCurrentViewData();
                        }
                    }
                });

            }
        });
        HorizontalLayout hl = new HorizontalLayout();
        hl.addComponent(l);
        hl.addComponent(b);
        hl.setSpacing(true);
        setSpacing(true);

        addComponent(new Label(getMessage("newProcess.caption")));
        addComponent(hl);
        setMargin(new MarginInfo(true, false, false, false));
    }

    private String getMessage(String s) {
        return i18NSource.getMessage(s);
    }
}
TOP

Related Classes of pl.net.bluesoft.rnd.processtool.ui.newprocess.NewProcessPane

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.