package org.jbpm.gd.jpdl.properties;
import org.eclipse.swt.SWT;
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.layout.FormLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.jbpm.gd.jpdl.model.Assignment;
public class AssignmentExpressionInfoComposite extends AssignmentTypeComposite implements FocusListener {
private Label expressionLabel;
private Text expressionText;
protected void hookListeners() {
expressionText.addFocusListener(this);
}
protected void unhookListeners() {
expressionText.removeFocusListener(this);
}
protected void clearControls() {
expressionText.setText("");
}
protected void updateControls() {
if (assignable.getAssignment() != null && assignable.getAssignment().getExpression() != null) {
expressionText.setText(assignable.getAssignment().getExpression());
}
}
protected void setActive(boolean active) {
Assignment assignment = getAssignment();
if (active) {
assignment.setExpression(expressionText.getText());
} else {
assignment.setExpression(null);
}
}
protected void create() {
Composite composite = widgetFactory.createComposite(parent);
composite.setLayout(new FormLayout());
expressionLabel = widgetFactory.createLabel(composite, "Expression");
expressionText = widgetFactory.createText(composite, "", SWT.MULTI | SWT.V_SCROLL);
composite.setLayoutData(createGroupLayoutData());
expressionLabel.setLayoutData(createExpressionLabelLayoutData());
expressionText.setLayoutData(createExpressionTextLayoutData());
}
private FormData createGroupLayoutData() {
FormData result = new FormData();
result.top = new FormAttachment(0, 0);
result.left = new FormAttachment(0, 0);
result.right = new FormAttachment(100, 0);
result.bottom = new FormAttachment(100, 0);
return result;
}
private FormData createExpressionLabelLayoutData() {
FormData result = new FormData();
result.top = new FormAttachment(0, 5);
result.left = new FormAttachment(0, 5);
return result;
}
private FormData createExpressionTextLayoutData() {
FormData result = new FormData();
result.top = new FormAttachment(0, 5);
result.left = new FormAttachment(expressionLabel, 5);
result.right = new FormAttachment(100, -5);
result.bottom = new FormAttachment(100, -5);
return result;
}
public void focusGained(FocusEvent e) {
}
public void focusLost(FocusEvent e) {
if (assignable.getAssignment() == null) return;
assignable.getAssignment().setExpression(expressionText.getText());
}
}