Package org.jbpm.ui.orgfunctions

Source Code of org.jbpm.ui.orgfunctions.SwimlaneRelationsElement

package org.jbpm.ui.orgfunctions;

import java.util.List;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.events.HyperlinkAdapter;
import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.widgets.Hyperlink;
import org.jbpm.ui.DesignerLogger;
import org.jbpm.ui.dialog.ChooseItemDialog;
import org.jbpm.ui.resource.Messages;
import org.jbpm.ui.sync.SyncUIHelper;

public class SwimlaneRelationsElement extends SwimlaneElement {
  private Hyperlink chooseLink;
  private Text relationNameText;
  private Combo combo;
 
  public SwimlaneRelationsElement() {
    setOrgFunctionDefinitionName("ExecutorByCodeFunction");
  }

    @Override
    public void createGUI(Composite parent) {
        Composite clientArea = createSection(parent, 1);
        SyncUIHelper.createHeader(clientArea, RunaWFERelationsImporter.getInstance());

        Composite content1 = new Composite(clientArea, SWT.NONE);
        content1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        content1.setLayout(new GridLayout(2, false));
        relationNameText = new Text(content1, SWT.READ_ONLY | SWT.BORDER);
        relationNameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        chooseLink = createLink(content1, Messages.getString("button.choose"));
        chooseLink.addHyperlinkListener(new HyperlinkAdapter() {

            @Override
            public void linkActivated(HyperlinkEvent e) {
                try {
                    ChooseItemDialog dialog = new ChooseItemDialog(Messages.getString("RelationsDialog.Text"), null, true);
                    List<String> relations = (List<String>) RunaWFERelationsImporter.getInstance().loadCachedData();
                    dialog.setItems(relations);
                    dialog.setLabelProvider(new LabelProvider());
                    if (dialog.open() == IDialogConstants.OK_ID) {
                        relationNameText.setText((String) dialog.getSelectedItem());
                        updateSwimlane();
                    }
                } catch (Exception ex) {
                    DesignerLogger.logError("Unable load relations", ex);
                }
            }
        });
       
        Composite content2 = new Composite(clientArea, SWT.NONE);
        content2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        content2.setLayout(new GridLayout(2, false));
        Label label = new Label(content2, SWT.NONE);
        label.setText(Messages.getString("OrgFunction.ActorCode"));
        combo = new Combo(content2, SWT.READ_ONLY);
        for (String variableName : OrgFunctionsRegistry.getVariableNames(processDefinition, "string")) {
            combo.add(variableName);
        }
        combo.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent e) {
                updateSwimlane();
            }
        });
    }
   
    private void updateSwimlane() {
        if (currentDefinition == null) {
            currentDefinition = createNew();
        }
        boolean fireEvent = true;
        if (relationNameText.getText().length() > 0) {
            currentDefinition.setRelationName(relationNameText.getText());
        } else {
            fireEvent = false;
        }
        if (combo.getText().length() > 0) {
            currentDefinition.getParameters().get(0).setVariableValue(combo.getText());
        } else {
            fireEvent = false;
        }
        if (fireEvent) {
            fireCompletedEvent(currentDefinition);
        }
    }

    @Override
  public void open(String path, String swimlaneName, OrgFunctionDefinition definition) {
    super.open(path, swimlaneName, definition);
    if (currentDefinition != null) {
            String relationName = currentDefinition.getRelationName();
            if (relationName != null) {
                relationNameText.setText(relationName);
            }
        String value = "";
        if (currentDefinition != null && currentDefinition.getParameters().size() > 0) {
          value = currentDefinition.getParameters().get(0).getVariableName();
        }
        combo.setText(value);
    }
  }

}
TOP

Related Classes of org.jbpm.ui.orgfunctions.SwimlaneRelationsElement

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.