Statistics
| Revision:

svn-gvsig-desktop / tags / v1_0_2_Build_892 / extensions / extCAD / src / com / iver / cit / gvsig / layers / VectorialLayerEdited.java @ 10278

History | View | Annotate | Download (16.9 KB)

1 4144 fjp
package com.iver.cit.gvsig.layers;
2
3 4637 caballero
import java.awt.Graphics2D;
4
import java.awt.Image;
5 4366 caballero
import java.awt.geom.Point2D;
6 4637 caballero
import java.awt.geom.Rectangle2D;
7
import java.awt.image.BufferedImage;
8 4366 caballero
import java.io.IOException;
9
import java.util.ArrayList;
10 5018 caballero
import java.util.EmptyStackException;
11 4366 caballero
12 5018 caballero
import com.iver.andami.PluginServices;
13
import com.iver.cit.gvsig.CADExtension;
14 5208 caballero
import com.iver.cit.gvsig.StartEditing;
15 5084 caballero
import com.iver.cit.gvsig.ViewCommandStackExtension;
16 4637 caballero
import com.iver.cit.gvsig.fmap.DriverException;
17
import com.iver.cit.gvsig.fmap.ViewPort;
18 4366 caballero
import com.iver.cit.gvsig.fmap.core.DefaultFeature;
19
import com.iver.cit.gvsig.fmap.core.Handler;
20
import com.iver.cit.gvsig.fmap.core.IFeature;
21
import com.iver.cit.gvsig.fmap.core.IGeometry;
22 4637 caballero
import com.iver.cit.gvsig.fmap.core.v02.FGraphicUtilities;
23 4366 caballero
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
24 4522 caballero
import com.iver.cit.gvsig.fmap.edition.DefaultRowEdited;
25 5084 caballero
import com.iver.cit.gvsig.fmap.edition.IEditableSource;
26 4637 caballero
import com.iver.cit.gvsig.fmap.edition.IRowEdited;
27
import com.iver.cit.gvsig.fmap.edition.VectorialEditableAdapter;
28
import com.iver.cit.gvsig.fmap.layers.CancelationException;
29 4366 caballero
import com.iver.cit.gvsig.fmap.layers.FBitSet;
30 4144 fjp
import com.iver.cit.gvsig.fmap.layers.FLayer;
31 5182 caballero
import com.iver.cit.gvsig.fmap.layers.FLyrAnnotation;
32 4637 caballero
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
33 5227 caballero
import com.iver.cit.gvsig.fmap.layers.LayerCollectionEvent;
34
import com.iver.cit.gvsig.fmap.layers.LayerCollectionListener;
35 4637 caballero
import com.iver.cit.gvsig.fmap.layers.LayerDrawEvent;
36
import com.iver.cit.gvsig.fmap.layers.LayerDrawingListener;
37 5018 caballero
import com.iver.cit.gvsig.fmap.layers.LayerEvent;
38 5227 caballero
import com.iver.cit.gvsig.fmap.layers.LayerPositionEvent;
39 6312 caballero
import com.iver.cit.gvsig.fmap.rendering.Legend;
40 4637 caballero
import com.iver.cit.gvsig.gui.cad.CADTool;
41 4366 caballero
import com.iver.cit.gvsig.gui.cad.CADToolAdapter;
42 5261 fjp
import com.iver.cit.gvsig.gui.cad.snapping.ISnapper;
43 4366 caballero
import com.iver.cit.gvsig.gui.cad.tools.SelectionCADTool;
44 8765 jjdelcerro
import com.iver.cit.gvsig.project.documents.view.gui.View;
45 4717 caballero
import com.vividsolutions.jts.geom.Geometry;
46 4144 fjp
47 4637 caballero
public class VectorialLayerEdited extends DefaultLayerEdited implements LayerDrawingListener{
48 4366 caballero
        private ArrayList selectedHandler = new ArrayList();
49
        private ArrayList selectedRow = new ArrayList();
50 4708 caballero
        private Point2D lastPoint;
51
        private Point2D firstPoint;
52 5018 caballero
        private CADTool cadtool=null;
53 5906 caballero
54 5261 fjp
        private ArrayList snappers = new ArrayList();
55 5813 fjp
        private ArrayList layersToSnap = new ArrayList();
56 6312 caballero
        private Legend legend;
57 4366 caballero
58 4144 fjp
        public VectorialLayerEdited(FLayer lyr)
59
        {
60 4147 fjp
                super(lyr);
61 6881 cesar
                lyr.getMapContext().addLayerDrawingListener(this);
62 5813 fjp
                // Por defecto, siempre hacemos snapping sobre la capa en edici?n.
63
                layersToSnap.add(lyr);
64 4144 fjp
        }
65 4366 caballero
66
        public ArrayList getSelectedHandler() {
67
                return selectedHandler;
68
        }
69
70
        public ArrayList getSelectedRow() {
71
                return selectedRow;
72
        }
73
74
        public void clearSelection() {
75
                selectedHandler.clear();
76
                selectedRow.clear();
77 6824 fjp
                if (getVEA() != null)
78
                {
79
                        FBitSet selection=getVEA().getSelection();
80
                        selection.clear();
81
                }
82 4366 caballero
        }
83
        /**
84
         * @return Returns the selectedRow.
85
         */
86
        public IFeature[] getSelectedRowsCache() {
87
                return (IFeature[]) selectedRow.toArray(new IFeature[0]);
88
        }
89 5906 caballero
        public void selectWithPoint(double x, double y,boolean multipleSelection){
90 4637 caballero
                firstPoint = new Point2D.Double(x, y);
91
                VectorialEditableAdapter vea = getVEA();
92
                FBitSet selection = vea.getSelection();
93 5906 caballero
                if (!multipleSelection) {
94
                        clearSelection();
95
                }
96 4637 caballero
                // Se comprueba si se pincha en una gemometr?a
97 6881 cesar
                ViewPort vp=getLayer().getMapContext().getViewPort();
98 4637 caballero
                double tam =vp.toMapDistance(SelectionCADTool.tolerance);
99
                Rectangle2D rect = new Rectangle2D.Double(firstPoint.getX() - tam,
100
                                firstPoint.getY() - tam, tam * 2, tam * 2);
101
102
                String strEPSG = vp.getProjection().getAbrev().substring(5);
103
                IRowEdited[] feats;
104
105
                try {
106
                        feats = vea.getFeatures(rect, strEPSG);
107
                        selection.clear();
108
                        BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
109
                        Graphics2D gs = selectionImage.createGraphics();
110
                        BufferedImage handlersImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
111
                        Graphics2D gh = handlersImage.createGraphics();
112
                        for (int i = 0; i < feats.length; i++) {
113
                                IFeature feat = (IFeature) feats[i].getLinkedRow();
114
                                IGeometry geom = feat.getGeometry();
115
116
                                if (geom.intersects(rect)) { // , 0.1)){
117
                                        selection.set(feats[i].getIndex(), true);
118
                                        selectedRow.add(feats[i]);
119
                                        geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
120
                                        drawHandlers(geom.cloneGeometry(),gh,vp);
121
                                }
122
                        }
123
                        vea.setSelectionImage(selectionImage);
124
                        vea.setHandlersImage(handlersImage);
125
                } catch (DriverException e1) {
126
                        e1.printStackTrace();
127
                }
128
129
        }
130
        public void selectWithSecondPoint(double x, double y) {
131 4971 caballero
                VectorialEditableAdapter vea = getVEA();
132 4637 caballero
                FBitSet selection = vea.getSelection();
133
                lastPoint = new Point2D.Double(x, y);
134 6881 cesar
                ViewPort vp=getLayer().getMapContext().getViewPort();
135 4637 caballero
                selection.clear();
136
                selectedRow.clear();
137
138
                double x1;
139
                double y1;
140
                double w1;
141
                double h1;
142
143
                if (firstPoint.getX() < lastPoint.getX()) {
144
                        x1 = firstPoint.getX();
145
                        w1 = lastPoint.getX() - firstPoint.getX();
146
                } else {
147
                        x1 = lastPoint.getX();
148
                        w1 = firstPoint.getX() - lastPoint.getX();
149
                }
150
151
                if (firstPoint.getY() < lastPoint.getY()) {
152
                        y1 = firstPoint.getY();
153
                        h1 = lastPoint.getY() - firstPoint.getY();
154
                } else {
155
                        y1 = lastPoint.getY();
156
                        h1 = firstPoint.getY() - lastPoint.getY();
157
                }
158
159
                Rectangle2D rect = new Rectangle2D.Double(x1, y1, w1, h1);
160
161
                String strEPSG = vp.getProjection().getAbrev().substring(5);
162
                IRowEdited[] feats;
163
                try {
164
                        feats = vea.getFeatures(rect, strEPSG);
165
                        BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
166
                        Graphics2D gs = selectionImage.createGraphics();
167
                        BufferedImage handlersImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
168
                        Graphics2D gh = handlersImage.createGraphics();
169
                        for (int i = 0; i < feats.length; i++) {
170
                                IGeometry geom = ((IFeature) feats[i].getLinkedRow())
171
                                                .getGeometry();
172
173
                                if (firstPoint.getX() < lastPoint.getX()) {
174
                                        if (rect.contains(geom.getBounds2D())) {
175
                                                selectedRow.add(feats[i]);
176
                                                selection.set(feats[i].getIndex(), true);
177
                                                geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
178
                                                drawHandlers(geom.cloneGeometry(),gh,vp);
179
                                        }
180
                                } else {
181
                                        if (geom.intersects(rect)) { // , 0.1)){
182
                                                selectedRow.add(feats[i]);
183
                                                selection.set(feats[i].getIndex(), true);
184
                                                geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
185
                                                drawHandlers(geom.cloneGeometry(),gh,vp);
186
                                        }
187
                                }
188
                        }
189
                        vea.setSelectionImage(selectionImage);
190
                        vea.setHandlersImage(handlersImage);
191
                } catch (DriverException e) {
192
                        e.printStackTrace();
193
                }
194
195
        }
196 4708 caballero
        public void selectInsidePolygon(IGeometry polygon) {
197 4971 caballero
                VectorialEditableAdapter vea = getVEA();
198 4708 caballero
                FBitSet selection = vea.getSelection();
199 6881 cesar
                ViewPort vp=getLayer().getMapContext().getViewPort();
200 4708 caballero
                selection.clear();
201
                selectedRow.clear();
202
                Rectangle2D rect = polygon.getBounds2D();
203 4637 caballero
204 4708 caballero
                String strEPSG = vp.getProjection().getAbrev().substring(5);
205
                IRowEdited[] feats;
206
                try {
207
                        feats = vea.getFeatures(rect, strEPSG);
208
                        BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
209
                        Graphics2D gs = selectionImage.createGraphics();
210
                        BufferedImage handlersImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
211
                        Graphics2D gh = handlersImage.createGraphics();
212
                        for (int i = 0; i < feats.length; i++) {
213
                                IGeometry geom = ((IFeature) feats[i].getLinkedRow())
214
                                        .getGeometry();
215 4717 caballero
                                        if (contains(polygon,geom)) {
216 4708 caballero
                                                selectedRow.add(feats[i]);
217
                                                selection.set(feats[i].getIndex(), true);
218
                                                geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
219
                                                drawHandlers(geom.cloneGeometry(),gh,vp);
220
                                        }
221
                        }
222
                        vea.setSelectionImage(selectionImage);
223
                        vea.setHandlersImage(handlersImage);
224
                } catch (DriverException e) {
225
                        e.printStackTrace();
226
                }
227
        }
228
229
        public void selectCrossPolygon(IGeometry polygon) {
230 4971 caballero
                VectorialEditableAdapter vea = getVEA();
231 4708 caballero
                FBitSet selection = vea.getSelection();
232 6881 cesar
                ViewPort vp=getLayer().getMapContext().getViewPort();
233 4708 caballero
                selection.clear();
234
                selectedRow.clear();
235
                Rectangle2D rect = polygon.getBounds2D();
236
237
                String strEPSG = vp.getProjection().getAbrev().substring(5);
238
                IRowEdited[] feats;
239
                try {
240
                        feats = vea.getFeatures(rect, strEPSG);
241
                        BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
242
                        Graphics2D gs = selectionImage.createGraphics();
243
                        BufferedImage handlersImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
244
                        Graphics2D gh = handlersImage.createGraphics();
245
                        for (int i = 0; i < feats.length; i++) {
246
                                IGeometry geom = ((IFeature) feats[i].getLinkedRow())
247
                                        .getGeometry();
248 4717 caballero
                                        if (contains(polygon,geom) || intersects(polygon,geom)) {
249 4708 caballero
                                                selectedRow.add(feats[i]);
250
                                                selection.set(feats[i].getIndex(), true);
251
                                                geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
252
                                                drawHandlers(geom.cloneGeometry(),gh,vp);
253
                                        }
254
                        }
255
                        vea.setSelectionImage(selectionImage);
256
                        vea.setHandlersImage(handlersImage);
257
                } catch (DriverException e) {
258
                        e.printStackTrace();
259
                }
260
        }
261
262
        public void selectOutPolygon(IGeometry polygon) {
263 4971 caballero
                VectorialEditableAdapter vea = getVEA();
264 4708 caballero
                FBitSet selection = vea.getSelection();
265 6881 cesar
                ViewPort vp=getLayer().getMapContext().getViewPort();
266 4708 caballero
                selection.clear();
267
                selectedRow.clear();
268
269
                try {
270
                        BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
271
                        Graphics2D gs = selectionImage.createGraphics();
272
                        BufferedImage handlersImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
273
                        Graphics2D gh = handlersImage.createGraphics();
274
                        for (int i = 0; i < vea.getRowCount(); i++) {
275
                                IRowEdited rowEd=(IRowEdited)vea.getRow(i);
276
                                IGeometry geom = ((IFeature)rowEd.getLinkedRow())
277
                                                .getGeometry();
278 4717 caballero
                                        if (!contains(polygon,geom) && !intersects(polygon,geom)) {
279 4708 caballero
                                                selectedRow.add(rowEd);
280
                                                selection.set(rowEd.getIndex(), true);
281
                                                geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
282
                                                drawHandlers(geom.cloneGeometry(),gh,vp);
283
                                        }
284
                        }
285
                        vea.setSelectionImage(selectionImage);
286
                        vea.setHandlersImage(handlersImage);
287
                } catch (DriverIOException e) {
288
                        e.printStackTrace();
289
                } catch (IOException e) {
290
                        e.printStackTrace();
291
                }
292
        }
293
        public void selectAll() {
294 4971 caballero
                VectorialEditableAdapter vea = getVEA();
295 4708 caballero
                FBitSet selection = vea.getSelection();
296 6881 cesar
                ViewPort vp=getLayer().getMapContext().getViewPort();
297 4708 caballero
                selection.clear();
298
                selectedRow.clear();
299
                try {
300
                        BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
301
                        Graphics2D gs = selectionImage.createGraphics();
302
                        BufferedImage handlersImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
303
                        Graphics2D gh = handlersImage.createGraphics();
304
                        for (int i = 0; i < vea.getRowCount(); i++) {
305
                                IRowEdited rowEd=(IRowEdited)vea.getRow(i);
306
                                IGeometry geom = ((IFeature)rowEd.getLinkedRow())
307
                                                .getGeometry();
308
                                selectedRow.add(rowEd);
309
                                selection.set(rowEd.getIndex(), true);
310
                                geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
311
                                drawHandlers(geom.cloneGeometry(),gh,vp);
312
                        }
313
                        vea.setSelectionImage(selectionImage);
314
                        vea.setHandlersImage(handlersImage);
315
                } catch (DriverIOException e) {
316
                        e.printStackTrace();
317
                } catch (IOException e) {
318
                        e.printStackTrace();
319
                }
320
        }
321
322 4366 caballero
        public void refreshSelectionCache(Point2D firstPoint,CADToolAdapter cta){
323 4724 caballero
                VectorialEditableAdapter vea = getVEA();
324
                FBitSet selection = vea.getSelection();
325 4637 caballero
                double min = java.lang.Double.MAX_VALUE;
326 4366 caballero
//                 Cogemos las entidades seleccionadas
327 4522 caballero
                clearSelection();
328 6881 cesar
                ViewPort vp=getLayer().getMapContext().getViewPort();
329 4637 caballero
                BufferedImage selectionImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
330
                Graphics2D gs = selectionImage.createGraphics();
331
                BufferedImage handlersImage = new BufferedImage(vp.getImageWidth(), vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
332
                Graphics2D gh = handlersImage.createGraphics();
333 4366 caballero
                for (int i = selection.nextSetBit(0); i >= 0; i = selection
334
                                .nextSetBit(i + 1)) {
335
                        Handler[] handlers = null;
336
337 4522 caballero
                        DefaultRowEdited dre = null;
338 4366 caballero
                        try {
339 4724 caballero
                                dre = (DefaultRowEdited)(vea.getRow(i));
340 4637 caballero
                                IFeature feat=(DefaultFeature)dre.getLinkedRow();
341
                                IGeometry geom=feat.getGeometry();
342
                                handlers = geom.getHandlers(IGeometry.SELECTHANDLER);
343 4522 caballero
                                selectedRow.add(dre);
344 4724 caballero
                                geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
345 4637 caballero
                                drawHandlers(geom.cloneGeometry(),gh,vp);
346 4366 caballero
                                // y miramos los handlers de cada entidad seleccionada
347
                                min = cta.getMapControl().getViewPort()
348
                                                .toMapDistance(SelectionCADTool.tolerance);
349
                                for (int j = 0; j < handlers.length; j++) {
350
                                        Point2D handlerPoint = handlers[j].getPoint();
351
                                        double distance = firstPoint.distance(handlerPoint);
352
                                        if (distance <= min) {
353
                                                min = distance;
354
                                                selectedHandler.add(handlers[j]);
355
                                        }
356
                                }
357
                        } catch (DriverIOException e) {
358
                                e.printStackTrace();
359
                        } catch (IOException e) {
360
                                e.printStackTrace();
361
                        }
362
                }
363 4637 caballero
                vea.setSelectionImage(selectionImage);
364
                vea.setHandlersImage(handlersImage);
365 4366 caballero
        }
366 4637 caballero
367
        public void drawHandlers(IGeometry geom, Graphics2D gs, ViewPort vp) {
368 5182 caballero
                if (!(getLayer() instanceof FLyrAnnotation)){
369
                        Handler[] handlers = geom.getHandlers(IGeometry.SELECTHANDLER);
370
                        FGraphicUtilities.DrawHandlers(gs, vp.getAffineTransform(), handlers);
371
                }
372 4637 caballero
        }
373
        public Image getSelectionImage(){
374
                return getVEA().getSelectionImage();
375
        }
376
        public Image getHandlersImage() {
377
                return getVEA().getHandlersImage();
378
        }
379
        public VectorialEditableAdapter getVEA(){
380 5018 caballero
                if (((FLyrVect)getLayer()).getSource() instanceof VectorialEditableAdapter)
381
                        return (VectorialEditableAdapter)((FLyrVect)getLayer()).getSource();
382
                else
383
                        return null;
384 4637 caballero
        }
385
386
        public void beforeLayerDraw(LayerDrawEvent e) throws CancelationException {
387
                if (((FLyrVect) getLayer()).getSource() instanceof VectorialEditableAdapter) {
388
                        VectorialEditableAdapter vea = (VectorialEditableAdapter) ((FLyrVect) getLayer())
389
                                        .getSource();
390 6881 cesar
                        ViewPort vp = getLayer().getMapContext().getViewPort();
391 4637 caballero
                        BufferedImage selectionImage = new BufferedImage(
392
                                        vp.getImageWidth(), vp.getImageHeight(),
393
                                        BufferedImage.TYPE_INT_ARGB);
394
                        BufferedImage handlersImage = new BufferedImage(vp.getImageWidth(),
395
                                        vp.getImageHeight(), BufferedImage.TYPE_INT_ARGB);
396
                        Graphics2D gs = selectionImage.createGraphics();
397
                        Graphics2D gh = handlersImage.createGraphics();
398
                        for (int i = 0; i < selectedRow.size(); i++) {
399
                                IFeature feat = (IFeature) ((IRowEdited) selectedRow.get(i))
400
                                                .getLinkedRow();
401
                                IGeometry geom = feat.getGeometry();
402
                                geom.cloneGeometry().draw(gs, vp, CADTool.drawingSymbol);
403
                                drawHandlers(geom.cloneGeometry(), gh, vp);
404
                        }
405
                        vea.setSelectionImage(selectionImage);
406
                        vea.setHandlersImage(handlersImage);
407
                }
408
        }
409
410
        public void afterLayerDraw(LayerDrawEvent e) throws CancelationException {
411
        }
412
413
        public void beforeGraphicLayerDraw(LayerDrawEvent e) throws CancelationException {
414
        }
415
416
        public void afterLayerGraphicDraw(LayerDrawEvent e) throws CancelationException {
417
        }
418 4717 caballero
        private static boolean contains(IGeometry g1,IGeometry g2) {
419 4724 caballero
                Geometry geometry1=g1.toJTSGeometry();
420
                Geometry geometry2=g2.toJTSGeometry();
421
                if (geometry1==null || geometry2==null)return false;
422
                return geometry1.contains(geometry2);
423 4717 caballero
        }
424
        private static boolean intersects(IGeometry g1,IGeometry g2) {
425 4724 caballero
                Geometry geometry1=g1.toJTSGeometry();
426
                Geometry geometry2=g2.toJTSGeometry();
427
                if (geometry1==null || geometry2==null)return false;
428
                return geometry1.intersects(geometry2);
429 4717 caballero
        }
430 5018 caballero
431
        public void activationGained(LayerEvent e) {
432 5084 caballero
                if (ViewCommandStackExtension.csd!=null){
433 5227 caballero
                        ViewCommandStackExtension.csd.setModel(((IEditableSource) ((FLyrVect)getLayer()).getSource())
434
                                                        .getCommandRecord());
435 5084 caballero
                }
436
437 5018 caballero
                if (cadtool!=null){
438
                        CADExtension.getCADToolAdapter().setCadTool(cadtool);
439
                        PluginServices.getMainFrame().setSelectedTool(cadtool.toString());
440 5208 caballero
                        StartEditing.startCommandsApplicable(null,(FLyrVect)getLayer());
441 5257 caballero
                        CADExtension.initFocus();
442 5018 caballero
                }
443 5227 caballero
444 5018 caballero
        }
445
446
        public void activationLost(LayerEvent e) {
447
                try{
448
                        cadtool=CADExtension.getCADTool();
449
                }catch (EmptyStackException e1) {
450
                        cadtool=new SelectionCADTool();
451
                        cadtool.init();
452
                }
453
454
        }
455 5261 fjp
456
        public ArrayList getSnappers() {
457
                return snappers;
458
        }
459 5906 caballero
460 5813 fjp
        public ArrayList getLayersToSnap() {
461
                return layersToSnap;
462
        }
463
464
        public void setLayersToSnap(ArrayList layersToSnap) {
465
                this.layersToSnap = layersToSnap;
466 5906 caballero
467 5813 fjp
        }
468
469 5985 caballero
        public void setSelectionCache(ArrayList selectedRowAux) {
470
                clearSelection();
471
                VectorialEditableAdapter vea=getVEA();
472
                FBitSet selection=vea.getSelection();
473
                selectedRow.addAll(selectedRowAux);
474
                for (int i = 0;i < selectedRow.size(); i++) {
475
                          IRowEdited edRow = (IRowEdited) selectedRow.get(i);
476
                          selection.set(edRow.getIndex());
477
                }
478
        }
479
480 6312 caballero
        public void setLegend(Legend legend) {
481
                this.legend=legend;
482
        }
483
        public Legend getLegend() {
484
                return legend;
485
        }
486 4144 fjp
}