1 27 28 package org.nightlabs.editor2d.edit; 29 30 import java.util.ArrayList ; 31 import java.util.List ; 32 33 import org.apache.log4j.Logger; 34 import org.eclipse.draw2d.Figure; 35 import org.eclipse.draw2d.FreeformLayer; 36 import org.eclipse.draw2d.FreeformLayout; 37 import org.eclipse.draw2d.IFigure; 38 import org.eclipse.draw2d.UpdateManager; 39 import org.eclipse.draw2d.XYLayout; 40 import org.eclipse.gef.CompoundSnapToHelper; 41 import org.eclipse.gef.EditPolicy; 42 import org.eclipse.gef.SnapToGeometry; 43 import org.eclipse.gef.SnapToGrid; 44 import org.eclipse.gef.SnapToGuides; 45 import org.eclipse.gef.SnapToHelper; 46 import org.eclipse.gef.editpolicies.RootComponentEditPolicy; 47 import org.eclipse.gef.editpolicies.SnapFeedbackPolicy; 48 import org.eclipse.gef.rulers.RulerProvider; 49 import org.eclipse.ui.views.properties.IPropertySource; 50 import org.nightlabs.config.Config; 51 import org.nightlabs.config.ConfigException; 52 import org.nightlabs.editor2d.MultiLayerDrawComponent; 53 import org.nightlabs.editor2d.config.PreferencesConfigModule; 54 import org.nightlabs.editor2d.editpolicy.MultiLayerDrawComponentXYLayoutPolicy; 55 import org.nightlabs.editor2d.figures.BufferedFreeformLayer; 56 import org.nightlabs.editor2d.figures.OversizedBufferFreeformLayer; 57 import org.nightlabs.editor2d.model.MultiLayerDrawComponentPropertySource; 58 import org.nightlabs.editor2d.viewer.descriptor.DescriptorManager; 59 60 public class MultiLayerDrawComponentEditPart 61 extends AbstractDrawComponentContainerEditPart 62 { 63 public static final Logger LOGGER = Logger.getLogger(MultiLayerDrawComponentEditPart.class); 64 65 public MultiLayerDrawComponentEditPart(MultiLayerDrawComponent mldc) 66 { 67 super(mldc); 68 setModel(mldc); 69 initConfigModule(); 70 } 71 72 protected DescriptorManager descriptorManager = new DescriptorManager(); 73 public DescriptorManager getDescriptorManager() { 74 return descriptorManager; 75 } 76 public void setDescriptorManager(DescriptorManager descriptorManager) { 77 this.descriptorManager = descriptorManager; 78 } 79 80 protected void initConfigModule() 81 { 82 try { 83 prefConfMod = (PreferencesConfigModule) Config.sharedInstance().createConfigModule(PreferencesConfigModule.class); 84 } catch (ConfigException ce) { 85 throw new RuntimeException (ce); 86 } 87 } 88 89 protected PreferencesConfigModule prefConfMod = null; 90 public PreferencesConfigModule getPreferencesConfigModule() { 91 return prefConfMod; 92 } 93 94 98 protected IFigure createFigure() 99 { 100 110 Figure f = new OversizedBufferFreeformLayer(); 111 ((BufferedFreeformLayer)f).init(this); 112 113 115 f.setLayoutManager(new FreeformLayout()); 116 return f; 117 } 118 119 public BufferedFreeformLayer getBufferedFreeformLayer() 120 { 121 if (getFigure() instanceof BufferedFreeformLayer) 122 return (BufferedFreeformLayer) getFigure(); 123 124 return null; 125 } 126 127 130 protected void createEditPolicies() 131 { 132 installEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy()); 134 XYLayout layout = (XYLayout) getContentPane().getLayoutManager(); 137 installEditPolicy(EditPolicy.LAYOUT_ROLE, new MultiLayerDrawComponentXYLayoutPolicy(layout)); 138 installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null); 140 installEditPolicy("Snap Feedback", new SnapFeedbackPolicy()); } 142 143 public MultiLayerDrawComponent getMultiLayerDrawComponent() { 144 return (MultiLayerDrawComponent) getModel(); 145 } 146 147 150 protected List getModelChildren() 151 { 152 return getMultiLayerDrawComponent().getDrawComponents(); 153 } 154 155 171 174 public Object getAdapter(Class adapter) 175 { 176 if (adapter == SnapToHelper.class) { 177 List snapStrategies = new ArrayList (); 178 Boolean val = (Boolean )getViewer().getProperty(RulerProvider.PROPERTY_RULER_VISIBILITY); 179 if (val != null && val.booleanValue()) 180 snapStrategies.add(new SnapToGuides(this)); 181 val = (Boolean )getViewer().getProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED); 182 if (val != null && val.booleanValue()) 183 snapStrategies.add(new SnapToGeometry(this)); 184 val = (Boolean )getViewer().getProperty(SnapToGrid.PROPERTY_GRID_ENABLED); 185 if (val != null && val.booleanValue()) 186 snapStrategies.add(new SnapToGrid(this)); 187 188 if (snapStrategies.size() == 0) 189 return null; 190 if (snapStrategies.size() == 1) 191 return (SnapToHelper)snapStrategies.get(0); 192 193 SnapToHelper ss[] = new SnapToHelper[snapStrategies.size()]; 194 for (int i = 0; i < snapStrategies.size(); i++) 195 ss[i] = (SnapToHelper)snapStrategies.get(i); 196 return new CompoundSnapToHelper(ss); 197 } 198 return super.getAdapter(adapter); 199 } 200 201 204 protected IPropertySource getPropertySource() 205 { 206 if (propertySource == null) 207 { 208 propertySource = 209 new MultiLayerDrawComponentPropertySource(getMultiLayerDrawComponent()); 210 } 211 return propertySource; 212 } 213 214 } 221 | Popular Tags |