package org.jbpm.gd.jpdl.properties;
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.Task;
public class AssignmentSwimlaneInfoComposite extends AssignmentTypeComposite implements FocusListener {
private Label nameLabel;
private Text nameText;
protected void hookListeners() {
nameText.addFocusListener(this);
}
protected void unhookListeners() {
nameText.removeFocusListener(this);
}
protected void clearControls() {
nameText.setText("");
}
protected void updateControls() {
if (!(assignable instanceof Task)) return;
String swimlane = ((Task)assignable).getSwimlane();
nameText.setText(swimlane == null ? "" : swimlane);
}
protected void setActive(boolean active) {
if (!(assignable instanceof Task)) return;
if (active) {
if (assignable.getAssignment() != null) {
assignable.setAssignment(null);
}
((Task)assignable).setSwimlane(nameText.getText());
} else {
((Task)assignable).setSwimlane(null);
}
}
protected void create() {
Composite composite = widgetFactory.createComposite(parent);
composite.setLayout(new FormLayout());
nameLabel = widgetFactory.createLabel(composite, "Swimlane Name");
nameText = widgetFactory.createText(composite, "");
composite.setLayoutData(createCompositeLayoutData());
nameLabel.setLayoutData(createNameLabelLayoutData());
nameText.setLayoutData(createNameTextLayoutData());
}
private FormData createCompositeLayoutData() {
FormData result = new FormData();
result.top = new FormAttachment(0, 0);
result.left = new FormAttachment(0, 0);
result.right = new FormAttachment(100, 0);
return result;
}
private FormData createNameLabelLayoutData() {
FormData result = new FormData();
result.top = new FormAttachment(0, 5);
result.left = new FormAttachment(0, 5);
result.bottom = new FormAttachment(100, -5);
return result;
}
private FormData createNameTextLayoutData() {
FormData result = new FormData();
result.top = new FormAttachment(0, 5);
result.left = new FormAttachment(nameLabel, 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 instanceof Task)) return;
if (e.widget == nameText) {
((Task)assignable).setSwimlane(nameText.getText());
}
}
}