KickJava   Java API By Example, From Geeks To Geeks.

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


1 /* *****************************************************************************
2  * NightLabs Editor2D - Graphical editor framework *
3  * Copyright (C) 2004-2005 NightLabs - http://NightLabs.org *
4  * Project author: Daniel Mazurek <Daniel.Mazurek [at] nightlabs [dot] org> *
5  * *
6  * This library is free software; you can redistribute it and/or *
7  * modify it under the terms of the GNU Lesser General Public *
8  * License as published by the Free Software Foundation; either *
9  * version 2.1 of the License, or (at your option) any later version. *
10  * *
11  * This library is distributed in the hope that it will be useful, *
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
14  * Lesser General Public License for more details. *
15  * *
16  * You should have received a copy of the GNU Lesser General Public *
17  * License along with this library; if not, write to the *
18  * Free Software Foundation, Inc., *
19  * 51 Franklin St, Fifth Floor, *
20  * Boston, MA 02110-1301 USA *
21  * *
22  * Or get it online : *
23  * http://www.gnu.org/copyleft/lesser.html *
24  * *
25  * *
26  ******************************************************************************/

27
28 package org.nightlabs.editor2d.edit;
29
30 import java.util.ArrayList JavaDoc;
31 import java.util.List JavaDoc;
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 JavaDoc(ce);
86     }
87   }
88     
89   protected PreferencesConfigModule prefConfMod = null;
90   public PreferencesConfigModule getPreferencesConfigModule() {
91     return prefConfMod;
92   }
93   
94     // public static UpdateManager updateManager = null;
95
/*
96      * @see org.eclipse.gef.editparts.AbstractGraphicalEditPart#createFigure()
97      */

98     protected IFigure createFigure()
99     {
100 // SmartUpdateFreeformLayer f = new SmartUpdateFreeformLayer(this);
101
// f.setMldcEditPart(this);
102
// EditPartViewer viewer = getRoot().getViewer();
103
// if (viewer instanceof J2DScrollingGraphicalViewer) {
104
// J2DScrollingGraphicalViewer j2DViewer = (J2DScrollingGraphicalViewer) viewer;
105
// FigureCanvas figureCanvas = (FigureCanvas)j2DViewer.getControl();
106
// updateManager = figureCanvas.getLightweightSystem().getUpdateManager();
107
// f.registerOnDeferredUpdateManager(updateManager);
108
// }
109

110       Figure f = new OversizedBufferFreeformLayer();
111       ((BufferedFreeformLayer)f).init(this);
112       
113 // Figure f = new FreeformLayer();
114

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     /*
128      * @see org.eclipse.gef.editparts.AbstractEditPart#createEditPolicies()
129      */

130     protected void createEditPolicies()
131     {
132         // disallows the removal of this edit part from its parent
133
installEditPolicy(EditPolicy.COMPONENT_ROLE, new RootComponentEditPolicy());
134         // handles constraint changes (e.g. moving and/or resizing) of model elements
135
// and creation of new model elements
136
XYLayout layout = (XYLayout) getContentPane().getLayoutManager();
137         installEditPolicy(EditPolicy.LAYOUT_ROLE, new MultiLayerDrawComponentXYLayoutPolicy(layout));
138         // disable selection feedback for this edit part
139
installEditPolicy(EditPolicy.SELECTION_FEEDBACK_ROLE, null);
140         installEditPolicy("Snap Feedback", new SnapFeedbackPolicy()); //$NON-NLS-1$
141
}
142
143     public MultiLayerDrawComponent getMultiLayerDrawComponent() {
144         return (MultiLayerDrawComponent) getModel();
145     }
146         
147   /**
148    * @return a List of all Layers
149    */

150   protected List JavaDoc getModelChildren()
151   {
152     return getMultiLayerDrawComponent().getDrawComponents();
153   }
154
155 // protected List getModelChildren()
156
// {
157
// List allDrawComponents = new ArrayList();
158
// for (Iterator itLayers = getMultiLayerDrawComponent().getDrawComponents().iterator(); itLayers.hasNext(); ) {
159
// Layer l = (Layer) itLayers.next();
160
// l.eAdapters().add(this);
161
// if (l.isVisible()) {
162
// for (Iterator itDrawOrder = l.getDrawComponents().iterator(); itDrawOrder.hasNext(); ) {
163
// DrawComponent dc = (DrawComponent) itDrawOrder.next();
164
// allDrawComponents.add(dc);
165
// }
166
// }
167
// }
168
// return allDrawComponents;
169
// }
170

171   /**
172    * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
173    */

174   public Object JavaDoc getAdapter(Class JavaDoc adapter)
175   {
176     if (adapter == SnapToHelper.class) {
177         List JavaDoc snapStrategies = new ArrayList JavaDoc();
178         Boolean JavaDoc val = (Boolean JavaDoc)getViewer().getProperty(RulerProvider.PROPERTY_RULER_VISIBILITY);
179         if (val != null && val.booleanValue())
180             snapStrategies.add(new SnapToGuides(this));
181         val = (Boolean JavaDoc)getViewer().getProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED);
182         if (val != null && val.booleanValue())
183             snapStrategies.add(new SnapToGeometry(this));
184         val = (Boolean JavaDoc)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   /* (non-Javadoc)
202    * @see com.ibm.itso.sal330r.gefdemo.edit.WorkflowElementEditPart#getPropertySource()
203    */

204   protected IPropertySource getPropertySource()
205   {
206     if (propertySource == null)
207     {
208       propertySource =
209         new MultiLayerDrawComponentPropertySource(getMultiLayerDrawComponent());
210     }
211     return propertySource;
212   }
213   
214 // public DragTracker getDragTracker(Request req){
215
// if (req instanceof SelectionRequest
216
// && ((SelectionRequest)req).getLastButtonPressed() == 3)
217
// return new DeselectAllTracker(this);
218
// return new MarqueeDragTracker();
219
// }
220
}
221
Popular Tags