private Set<PortableParameterDefinition> convertWorkItemParameters(
     final Set<ParameterDefinition> parameters) {
   final Set<PortableParameterDefinition> pps = new HashSet<PortableParameterDefinition>();
   for (ParameterDefinition pd : parameters) {
     final DataType pdt = pd.getType();
     PortableParameterDefinition ppd = null;
     if (pdt instanceof BooleanDataType) {
       ppd = new PortableBooleanParameterDefinition();
     } else if (pdt instanceof FloatDataType) {
       ppd = new PortableFloatParameterDefinition();
     } else if (pdt instanceof IntegerDataType) {
       ppd = new PortableIntegerParameterDefinition();
     } else if (pdt instanceof ObjectDataType) {
       ppd = new PortableObjectParameterDefinition();
       final PortableObjectParameterDefinition oppd = (PortableObjectParameterDefinition) ppd;
       final ObjectDataType odt = (ObjectDataType) pdt;
       oppd.setClassName(odt.getClassName());
     } else if (pd.getType() instanceof StringDataType) {
       ppd = new PortableStringParameterDefinition();
     }
     if (ppd != null) {
       ppd.setName(pd.getName());
       pps.add(ppd);
     }
   }
   return pps;
 }
  protected Control createDialogArea(Composite parent) {
    Composite composite = (Composite) super.createDialogArea(parent);
    GridLayout gridLayout = new GridLayout();
    gridLayout.numColumns = 2;
    composite.setLayout(gridLayout);

    Work work = (Work) getValue();

    Label nameLabel = new Label(composite, SWT.NONE);
    nameLabel.setText("Name: ");
    Text nameText = new Text(composite, SWT.NONE);
    nameText.setEditable(false);
    GridData gridData = new GridData();
    gridData.grabExcessHorizontalSpace = true;
    gridData.horizontalAlignment = GridData.FILL;
    nameText.setLayoutData(gridData);
    String name = work.getName();
    nameText.setText(name == null ? "" : name);

    Set<ParameterDefinition> parameters = workDefinition.getParameters();
    for (ParameterDefinition param : parameters) {
      Label label = new Label(composite, SWT.NONE);
      label.setText(param.getName() + ": ");
      Text text = new Text(composite, SWT.NONE);
      gridData = new GridData();
      gridData.grabExcessHorizontalSpace = true;
      gridData.horizontalAlignment = GridData.FILL;
      text.setLayoutData(gridData);
      texts.put(param.getName(), text);
      Object value = work.getParameter(param.getName());
      text.setText(value == null ? "" : value.toString());
    }

    return composite;
  }
 public Work getWork() {
   if (work == null) {
     work = new WorkImpl();
     Work sourceWork = getDefinition().getWork();
     work.setName(sourceWork.getName());
     for (ParameterDefinition pd : sourceWork.getParameterDefinitions()) {
       work.addParameterDefinition(new ParameterDefinitionImpl(pd.getName(), pd.getType()));
     }
     for (Entry<String, Object> entry : sourceWork.getParameters().entrySet()) {
       work.setParameter(entry.getKey(), entry.getValue());
     }
     work.setParameter("NodeName", getName());
     work.setParameter(
         PeopleAssignmentHelper.BUSINESSADMINISTRATOR_ID, TableItem.getPlannerRoles(this));
   }
   return work;
 }