package com.freescale.deadlockpreventer.stateeditor.part;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.editparts.AbstractGraphicalEditPart;
import com.freescale.deadlockpreventer.stateeditor.editpolicies.StateEditLayoutPolicy;
import com.freescale.deadlockpreventer.stateeditor.figure.StateAbstractFigure;
import com.freescale.deadlockpreventer.stateeditor.model.Node;
public abstract class StateAbstractEditPart extends AbstractGraphicalEditPart implements
PropertyChangeListener {
public void activate() {
super.activate();
((Node) getModel()).addPropertyChangeListener(this);
}
@Override
protected void createEditPolicies() {
installEditPolicy(EditPolicy.LAYOUT_ROLE, new StateEditLayoutPolicy());
}
public void deactivate() {
super.deactivate();
((Node) getModel()).removePropertyChangeListener(this);
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals(Node.PROPERTY_LAYOUT))
refreshVisuals();
}
protected void refreshVisuals() {
StateAbstractFigure figure = (StateAbstractFigure) getFigure();
Node model = (Node) getModel();
figure.setName(model.getName());
figure.setLayout(model.getLayout());
}
public List<Node> getModelChildren() {
return ((Node)getModel()).getChildrenArray();
}
}