Package org.activiti.designer.property

Source Code of org.activiti.designer.property.PropertyMailTaskSection

package org.activiti.designer.property;

import org.activiti.bpmn.model.ServiceTask;
import org.activiti.designer.util.eclipse.ActivitiUiUtil;
import org.activiti.designer.util.property.ActivitiPropertySection;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.ui.editor.DiagramEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.FocusListener;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.views.properties.tabbed.ITabbedPropertyConstants;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;

public class PropertyMailTaskSection extends ActivitiPropertySection implements ITabbedPropertyConstants {

  private Text toText;
  private Text fromText;
  private Text subjectText;
  private Text ccText;
  private Text bccText;
  private Text charsetText;
  private Text htmlText;
  private Text nonHtmlText;

  @Override
  public void createControls(Composite parent, TabbedPropertySheetPage tabbedPropertySheetPage) {
    super.createControls(parent, tabbedPropertySheetPage);

    TabbedPropertySheetWidgetFactory factory = getWidgetFactory();
    Composite composite = factory.createFlatFormComposite(parent);
   
    toText = createControl(composite, null, false);
    createLabel(composite, "To:", toText); //$NON-NLS-1$
    fromText = createControl(composite, toText, false);
    createLabel(composite, "From:", fromText); //$NON-NLS-1$
    subjectText = createControl(composite, fromText, false);
    createLabel(composite, "Subject:", subjectText); //$NON-NLS-1$
    ccText = createControl(composite, subjectText, false);
    createLabel(composite, "Cc:", ccText); //$NON-NLS-1$
    bccText = createControl(composite, ccText, false);
    createLabel(composite, "Bcc:", bccText); //$NON-NLS-1$
    charsetText = createControl(composite, bccText, false);
    createLabel(composite, "Charset:", charsetText); //$NON-NLS-1$
    htmlText = createControl(composite, charsetText, true);
    createLabel(composite, "Html text:", htmlText); //$NON-NLS-1$
    nonHtmlText = createControl(composite, htmlText, true);
    createLabel(composite, "Non-Html text:", nonHtmlText); //$NON-NLS-1$

  }
 
  private Text createControl(Composite composite, Text otherTextControl, boolean multi) {
    Text textControl = null;
    FormData data = null;
    if(multi == true) {
      textControl = getWidgetFactory().createText(composite, "", SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
      data = new FormData(SWT.DEFAULT, 100);
    } else {
      textControl = getWidgetFactory().createText(composite, "", SWT.NONE);
      data = new FormData();
    }
    data.left = new FormAttachment(0, 120);
    data.right = new FormAttachment(100, 0);
    if(otherTextControl == null) {
      data.top = new FormAttachment(0, VSPACE);
    } else {
      data.top = new FormAttachment(otherTextControl, VSPACE);
    }
    textControl.setLayoutData(data);
    textControl.addFocusListener(listener);
    return textControl;
  }
 
  private CLabel createLabel(Composite composite, String labelName, Text textControl) {
    CLabel labelControl = getWidgetFactory().createCLabel(composite, labelName); //$NON-NLS-1$
    FormData data = new FormData();
    data.left = new FormAttachment(0, 0);
    data.right = new FormAttachment(textControl, -HSPACE);
    data.top = new FormAttachment(textControl, 0, SWT.CENTER);
    labelControl.setLayoutData(data);
    return labelControl;
  }

  @Override
  public void refresh() {
    PictogramElement pe = getSelectedPictogramElement();
    if (pe != null) {
      toText.removeFocusListener(listener);
      fromText.removeFocusListener(listener);
      subjectText.removeFocusListener(listener);
      ccText.removeFocusListener(listener);
      bccText.removeFocusListener(listener);
      charsetText.removeFocusListener(listener);
      htmlText.removeFocusListener(listener);
      nonHtmlText.removeFocusListener(listener);
      Object bo = getBusinessObject(pe);
      // the filter assured, that it is a EClass
      if (bo == null)
        return;

      ServiceTask mailTask = (ServiceTaskbo;
     
      toText.setText(getFieldString("to", mailTask));
      fromText.setText(getFieldString("from", mailTask));
      subjectText.setText(getFieldString("subject", mailTask));
      ccText.setText(getFieldString("cc", mailTask));
      bccText.setText(getFieldString("bcc", mailTask));
      charsetText.setText(getFieldString("charset", mailTask));
      htmlText.setText(getFieldString("html", mailTask));
      nonHtmlText.setText(getFieldString("text", mailTask));
     
      toText.addFocusListener(listener);
      fromText.addFocusListener(listener);
      subjectText.addFocusListener(listener);
      ccText.addFocusListener(listener);
      bccText.addFocusListener(listener);
      charsetText.addFocusListener(listener);
      htmlText.addFocusListener(listener);
      nonHtmlText.addFocusListener(listener);
    }
  }

  private FocusListener listener = new FocusListener() {

    public void focusGained(final FocusEvent e) {
    }

    public void focusLost(final FocusEvent e) {
      PictogramElement pe = getSelectedPictogramElement();
      if (pe != null) {
        final Object bo = getBusinessObject(pe);
        if (bo instanceof ServiceTask) {
          DiagramEditor diagramEditor = (DiagramEditor) getDiagramEditor();
          TransactionalEditingDomain editingDomain = diagramEditor.getEditingDomain();
          ActivitiUiUtil.runModelChange(new Runnable() {
            public void run() {
              ServiceTask mailTask = (ServiceTask) bo;
              setFieldString("to", toText.getText(), mailTask);
              setFieldString("from", fromText.getText(), mailTask);
              setFieldString("subject", subjectText.getText(), mailTask);
              setFieldString("cc", ccText.getText(), mailTask);
              setFieldString("bcc", bccText.getText(), mailTask);
              setFieldString("charset", charsetText.getText(), mailTask);
              setFieldString("html", htmlText.getText(), mailTask);
              setFieldString("text", nonHtmlText.getText(), mailTask);
            }
          }, editingDomain, "Model Update");
        }

      }
    }
  };
}
TOP

Related Classes of org.activiti.designer.property.PropertyMailTaskSection

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.