package com.windowtester.examples.gef.uml.parts;
import java.beans.PropertyChangeEvent;
import java.util.List;
import org.eclipse.draw2d.IFigure;
import org.eclipse.gef.EditPolicy;
import com.windowtester.examples.gef.uml.figures.ClassDiagramFigure;
import com.windowtester.examples.gef.uml.model.ClassDiagram;
import com.windowtester.examples.gef.uml.model.ClassElement;
import com.windowtester.examples.gef.uml.policies.ClassDiagramXYLayoutPolicy;
/**
* <p>
* Copyright (c) 2007, Instantiations, Inc.<br>
* All Rights Reserved
*
* @author Phil Quitslund
*
*/
public class ClassDiagramEditPart extends AbstractDiagramNodePart {
public ClassDiagramEditPart(ClassDiagram model) {
setModel(model);
}
protected ClassDiagram getDiagram() {
return (ClassDiagram) getModel();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
*/
@Override
protected IFigure createFigure() {
return new ClassDiagramFigure();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.AbstractEditPart#createEditPolicies()
*/
@Override
protected void createEditPolicies() {
installEditPolicy(EditPolicy.CONTAINER_ROLE, new ClassDiagramXYLayoutPolicy());
installEditPolicy(EditPolicy.LAYOUT_ROLE, null);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.AbstractEditPart#getModelChildren()
*/
@Override
protected List<ClassElement> getModelChildren() {
return getDiagram().getElements();
}
/* (non-Javadoc)
* @see java.beans.PropertyChangeListener#propertyChange(PropertyChangeEvent)
*/
public void propertyChange(PropertyChangeEvent evt) {
String prop = evt.getPropertyName();
if (ClassDiagram.CHILD_ADDED_PROP.equals(prop)
|| ClassDiagram.CHILD_REMOVED_PROP.equals(prop)) {
refreshChildren();
}
}
}