KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > nightlabs > editor2d > edit > MultiLayerDrawComponentEditPart


1 /**
2  * <p> Project: com.nightlabs.editor2d </p>
3  * <p> Copyright: Copyright (c) 2004 </p>
4  * <p> Company: NightLabs GmbH (Germany) </p>
5  * <p> Creation Date: 26.10.2004 </p>
6  * <p> Author: Daniel Mazurek </p>
7 **/

8 package com.nightlabs.editor2d.edit;
9
10 import java.util.ArrayList JavaDoc;
11 import java.util.List JavaDoc;
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     /*
49      * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
50      */

51     protected IFigure createFigure()
52     {
53 // SmartUpdateFreeformLayer f = new SmartUpdateFreeformLayer(this);
54
// f.setMldcEditPart(this);
55
// EditPartViewer viewer = getRoot().getViewer();
56
// if (viewer instanceof J2DScrollingGraphicalViewer) {
57
// J2DScrollingGraphicalViewer j2DViewer = (J2DScrollingGraphicalViewer) viewer;
58
// FigureCanvas figureCanvas = (FigureCanvas)j2DViewer.getControl();
59
// updateManager = figureCanvas.getLightweightSystem().getUpdateManager();
60
// f.registerOnDeferredUpdateManager(updateManager);
61
// }
62
// IFigure f = new MLDCFreeformLayer();
63
// Figure f = new OversizedBufferFreeformLayer(this);
64
Figure f = new FreeformLayer();
65 // RendererFigure f = new com.nightlabs.editor2d.figures.FreeformLayer();
66
f.setLayoutManager(new FreeformLayout());
67         return f;
68     }
69
70     /*
71      * @see org.eclipse.gef.editparts.AbstractEditPart#createEditPolicies()
72      */

73     protected void createEditPolicies()
74     {
75         // disallows the removal of this edit part from its parent
76
installEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy());
77         // handles constraint changes (e.g. moving and/or resizing) of model elements
78
// and creation of new model elements
79
XYLayout layout = (XYLayout) getContentPane().getLayoutManager();
80         installEditPolicy(EditPolicy.LAYOUT_ROLE, new MultiLayerDrawComponentXYLayoutPolicy(layout));
81         // disable selection feedback for this edit part
82
installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null);
83         installEditPolicy("Snap Feedback", new SnapFeedbackPolicy()); //$NON-NLS-1$
84
}
85
86     public MultiLayerDrawComponent getMultiLayerDrawComponent() {
87         return (MultiLayerDrawComponent) getModel();
88     }
89         
90   /**
91    * @return a List of all Layers
92    */

93   protected List JavaDoc getModelChildren()
94   {
95     return getMultiLayerDrawComponent().getDrawComponents();
96   }
97
98 // protected List getModelChildren()
99
// {
100
// List allDrawComponents = new ArrayList();
101
// for (Iterator itLayers = getMultiLayerDrawComponent().getDrawComponents().iterator(); itLayers.hasNext(); ) {
102
// Layer l = (Layer) itLayers.next();
103
// l.eAdapters().add(this);
104
// if (l.isVisible()) {
105
// for (Iterator itDrawOrder = l.getDrawComponents().iterator(); itDrawOrder.hasNext(); ) {
106
// DrawComponent dc = (DrawComponent) itDrawOrder.next();
107
// allDrawComponents.add(dc);
108
// }
109
// }
110
// }
111
// return allDrawComponents;
112
// }
113

114   /**
115    * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
116    */

117   public Object JavaDoc getAdapter(Class JavaDoc adapter)
118   {
119     if (adapter == SnapToHelper.class) {
120         List JavaDoc snapStrategies = new ArrayList JavaDoc();
121         Boolean JavaDoc val = (Boolean JavaDoc)getViewer().getProperty(RulerProvider.PROPERTY_RULER_VISIBILITY);
122         if (val != null && val.booleanValue())
123             snapStrategies.add(new SnapToGuides(this));
124         val = (Boolean JavaDoc)getViewer().getProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED);
125         if (val != null && val.booleanValue())
126             snapStrategies.add(new SnapToGeometry(this));
127         val = (Boolean JavaDoc)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   /* (non-Javadoc)
145    * @see com.ibm.itso.sal330r.gefdemo.edit.WorkflowElementEditPart#getPropertySource()
146    */

147   protected IPropertySource getPropertySource()
148   {
149     if (propertySource == null)
150     {
151       propertySource =
152         new MultiLayerDrawComponentPropertySource(getMultiLayerDrawComponent());
153     }
154     return propertySource;
155   }
156   
157 // public DragTracker getDragTracker(Request req){
158
// if (req instanceof SelectionRequest
159
// && ((SelectionRequest)req).getLastButtonPressed() == 3)
160
// return new DeselectAllTracker(this);
161
// return new MarqueeDragTracker();
162
// }
163
}
164
Popular Tags