package org.jbpm.gd.common.part;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.editparts.AbstractTreeEditPart;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IActionFilter;
import org.jbpm.gd.common.model.SemanticElement;
import org.jbpm.gd.common.util.SharedImages;
public abstract class OutlineEditPart extends AbstractTreeEditPart implements
PropertyChangeListener, IActionFilter{
public OutlineEditPart(SemanticElement model) {
setModel(model);
}
protected Image getImage() {
return SharedImages.INSTANCE.getImage(((SemanticElement)getModel()).getIconDescriptor());
}
protected String getText() {
String result = ((SemanticElement)getModel()).getLabel();
return result == null ? super.getText() : ((SemanticElement)getModel()).getElementId();
}
private SemanticElement getJpdlElement() {
return (SemanticElement)getModel();
}
public void activate() {
if (!isActive()) {
getJpdlElement().addPropertyChangeListener(this);
super.activate();
}
}
public void deactivate() {
if (isActive()) {
getJpdlElement().removePropertyChangeListener(this);
super.deactivate();
}
}
protected void handleChildAdd(Object newValue) {
refreshChildren();
List children = getChildren();
for (int i = 0; i < children.size(); i++) {
EditPart part = (EditPart)children.get(i);
if (part.getModel() == newValue) {
part.getViewer().select(part);
}
}
}
public void propertyChange(PropertyChangeEvent evt) {
String eventName = evt.getPropertyName();
if (eventName.equals("name")) {
refreshVisuals();
}
this.getText();
}
public boolean testAttribute(Object target, String name, String value) {
return false;
}
}