1 27 28 package org.nightlabs.editor2d.edit; 29 30 import java.beans.PropertyChangeEvent ; 31 import java.util.List ; 32 33 import org.apache.log4j.Logger; 34 import org.eclipse.draw2d.FreeformLayout; 35 import org.eclipse.draw2d.IFigure; 36 import org.eclipse.draw2d.XYLayout; 37 import org.eclipse.gef.EditPolicy; 38 import org.eclipse.gef.editpolicies.SnapFeedbackPolicy; 39 40 import org.nightlabs.editor2d.DrawComponentContainer; 41 import org.nightlabs.editor2d.editpolicy.DrawComponentContainerEditPolicy; 42 import org.nightlabs.editor2d.editpolicy.DrawComponentContainerXYLayoutPolicy; 43 import org.nightlabs.editor2d.editpolicy.DrawComponentEditPolicy; 44 import org.nightlabs.editor2d.figures.ContainerDrawComponentFigure; 45 46 47 public abstract class AbstractDrawComponentContainerEditPart 48 extends AbstractDrawComponentEditPart 49 { 50 public static final Logger LOGGER = Logger.getLogger(AbstractDrawComponentContainerEditPart.class); 51 52 55 public AbstractDrawComponentContainerEditPart(DrawComponentContainer drawComponentContainer) { 56 super(drawComponentContainer); 57 } 58 59 protected IFigure createFigure() 61 { 62 ContainerDrawComponentFigure figure = new ContainerDrawComponentFigure(); 63 figure.setLayoutManager(new FreeformLayout()); 64 figure.setDrawComponent(getDrawComponent()); 65 addRenderer(figure); 66 addZoomListener(figure); 67 return figure; 68 } 69 70 79 82 protected void createEditPolicies() 83 { 84 installEditPolicy(EditPolicy.COMPONENT_ROLE, new DrawComponentEditPolicy()); 85 installEditPolicy(EditPolicy.CONTAINER_ROLE, new DrawComponentContainerEditPolicy()); 86 XYLayout layout = (XYLayout) getContentPane().getLayoutManager(); 87 installEditPolicy(EditPolicy.LAYOUT_ROLE, new DrawComponentContainerXYLayoutPolicy(layout)); 88 installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null); 89 installEditPolicy("Snap Feedback", new SnapFeedbackPolicy()); } 91 92 protected void propertyChanged(PropertyChangeEvent evt) 93 { 94 super.propertyChanged(evt); 95 String propertyName = evt.getPropertyName(); 96 if (propertyName.equals(DrawComponentContainer.CHILD_ADDED)) { 97 LOGGER.debug(propertyName); 98 refreshChildren(); 99 } 101 else if (propertyName.equals(DrawComponentContainer.CHILD_REMOVED)) { 102 LOGGER.debug(propertyName); 103 refreshChildren(); 104 } 106 } 107 108 protected List getModelChildren() 109 { 110 return ((DrawComponentContainer)getModel()).getDrawComponents(); 111 } 112 } 113 | Popular Tags |