package org.jbpm.gd.pf.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.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
import org.jbpm.gd.pf.model.NodeElement;
public class ViewIdConfigurationComposite implements FocusListener {
public static ViewIdConfigurationComposite create(TabbedPropertySheetWidgetFactory widgetFactory, Composite parent) {
ViewIdConfigurationComposite result = new ViewIdConfigurationComposite();
result.widgetFactory = widgetFactory;
result.parent = parent;
result.create();
return result;
}
private TabbedPropertySheetWidgetFactory widgetFactory;
private Composite parent;
private Label viewIdLabel;
private Text viewIdText;
private NodeElement nodeElement;
private ViewIdConfigurationComposite() {}
public void setNodeElement(NodeElement nodeElement) {
if (this.nodeElement == nodeElement) return;
unhookSelectionListener();
clearControls();
this.nodeElement = nodeElement;
if (nodeElement != null) {
updateControls();
hookSelectionListener();
}
}
private void hookSelectionListener() {
viewIdText.addFocusListener(this);
}
private void unhookSelectionListener() {
viewIdText.removeFocusListener(this);
}
private void clearControls() {
viewIdText.setText("");
}
private void updateControls() {
String viewId = nodeElement.getViewId();
viewIdText.setText(viewId == null ? "" : viewId);
}
private void create() {
viewIdLabel = widgetFactory.createLabel(parent, "View Id");
viewIdText = widgetFactory.createText(parent, "");
viewIdLabel.setLayoutData(createViewIdLabelLayoutData());
viewIdText.setLayoutData(createViewIdTextLayoutData());
}
private FormData createViewIdTextLayoutData() {
FormData data = new FormData();
data.left = new FormAttachment(0, 85);
data.top = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
return data;
}
private FormData createViewIdLabelLayoutData() {
FormData data = new FormData();
data.left = new FormAttachment(0, 0);
data.top = new FormAttachment(0, 2);
return data;
}
private String getViewIdText() {
String text = viewIdText.getText();
if ("".equals(text)) {
text = null;
}
return text;
}
public void focusGained(FocusEvent e) {
}
public void focusLost(FocusEvent e) {
if (e.widget == viewIdText) {
nodeElement.setViewId(getViewIdText());
}
}
}