| 1 8 package com.nightlabs.editor2d.edit; 9 10 import java.util.ArrayList ; 11 import java.util.List ; 12 13 import org.apache.log4j.Logger; 14 import org.eclipse.draw2d.Figure; 15 import org.eclipse.draw2d.FreeformLayer; 16 import org.eclipse.draw2d.FreeformLayout; 17 import org.eclipse.draw2d.IFigure; 18 import org.eclipse.draw2d.UpdateManager; 19 import org.eclipse.draw2d.XYLayout; 20 import org.eclipse.gef.CompoundSnapToHelper; 21 import org.eclipse.gef.EditPolicy; 22 import org.eclipse.gef.SnapToGeometry; 23 import org.eclipse.gef.SnapToGrid; 24 import org.eclipse.gef.SnapToGuides; 25 import org.eclipse.gef.SnapToHelper; 26 import org.eclipse.gef.editpolicies.RootComponentEditPolicy; 27 import org.eclipse.gef.editpolicies.SnapFeedbackPolicy; 28 import org.eclipse.gef.rulers.RulerProvider; 29 import org.eclipse.ui.views.properties.IPropertySource; 30 31 import com.nightlabs.editor2d.MultiLayerDrawComponent; 32 import com.nightlabs.editor2d.editpolicy.MultiLayerDrawComponentXYLayoutPolicy; 33 import com.nightlabs.editor2d.model.LayerPropertySource; 34 import com.nightlabs.editor2d.model.MultiLayerDrawComponentPropertySource; 35 36 public class MultiLayerDrawComponentEditPart 37 extends AbstractDrawComponentContainerEditPart 38 { 39 public static final Logger LOGGER = Logger.getLogger(MultiLayerDrawComponentEditPart.class); 40 41 public static UpdateManager updateManager = null; 42 43 public MultiLayerDrawComponentEditPart(MultiLayerDrawComponent mldc) { 44 super(mldc); 45 setModel(mldc); 46 } 47 48 51 protected IFigure createFigure() 52 { 53 Figure f = new FreeformLayer(); 65 f.setLayoutManager(new FreeformLayout()); 67 return f; 68 } 69 70 73 protected void createEditPolicies() 74 { 75 installEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy()); 77 XYLayout layout = (XYLayout) getContentPane().getLayoutManager(); 80 installEditPolicy(EditPolicy.LAYOUT_ROLE, new MultiLayerDrawComponentXYLayoutPolicy(layout)); 81 installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null); 83 installEditPolicy("Snap Feedback", new SnapFeedbackPolicy()); } 85 86 public MultiLayerDrawComponent getMultiLayerDrawComponent() { 87 return (MultiLayerDrawComponent) getModel(); 88 } 89 90 93 protected List getModelChildren() 94 { 95 return getMultiLayerDrawComponent().getDrawComponents(); 96 } 97 98 114 117 public Object getAdapter(Class adapter) 118 { 119 if (adapter == SnapToHelper.class) { 120 List snapStrategies = new ArrayList (); 121 Boolean val = (Boolean )getViewer().getProperty(RulerProvider.PROPERTY_RULER_VISIBILITY); 122 if (val != null && val.booleanValue()) 123 snapStrategies.add(new SnapToGuides(this)); 124 val = (Boolean )getViewer().getProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED); 125 if (val != null && val.booleanValue()) 126 snapStrategies.add(new SnapToGeometry(this)); 127 val = (Boolean )getViewer().getProperty(SnapToGrid.PROPERTY_GRID_ENABLED); 128 if (val != null && val.booleanValue()) 129 snapStrategies.add(new SnapToGrid(this)); 130 131 if (snapStrategies.size() == 0) 132 return null; 133 if (snapStrategies.size() == 1) 134 return (SnapToHelper)snapStrategies.get(0); 135 136 SnapToHelper ss[] = new SnapToHelper[snapStrategies.size()]; 137 for (int i = 0; i < snapStrategies.size(); i++) 138 ss[i] = (SnapToHelper)snapStrategies.get(i); 139 return new CompoundSnapToHelper(ss); 140 } 141 return super.getAdapter(adapter); 142 } 143 144 147 protected IPropertySource getPropertySource() 148 { 149 if (propertySource == null) 150 { 151 propertySource = 152 new MultiLayerDrawComponentPropertySource(getMultiLayerDrawComponent()); 153 } 154 return propertySource; 155 } 156 157 } 164 | Popular Tags |