Statistics
| Revision:

root / trunk / extensions / extCAD / src / com / iver / cit / gvsig / layers / VectorialLayerEdited.java @ 4445

History | View | Annotate | Download (3.01 KB)

1
package com.iver.cit.gvsig.layers;
2

    
3
import java.awt.geom.Point2D;
4
import java.io.IOException;
5
import java.util.ArrayList;
6

    
7
import com.iver.cit.gvsig.CADExtension;
8
import com.iver.cit.gvsig.fmap.core.DefaultFeature;
9
import com.iver.cit.gvsig.fmap.core.Handler;
10
import com.iver.cit.gvsig.fmap.core.IFeature;
11
import com.iver.cit.gvsig.fmap.core.IGeometry;
12
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
13
import com.iver.cit.gvsig.fmap.layers.FBitSet;
14
import com.iver.cit.gvsig.fmap.layers.FLayer;
15
import com.iver.cit.gvsig.gui.cad.CADToolAdapter;
16
import com.iver.cit.gvsig.gui.cad.tools.SelectionCADTool;
17

    
18
public class VectorialLayerEdited extends DefaultLayerEdited {
19
        private ArrayList selectedHandler = new ArrayList();
20
        private ArrayList selectedRow = new ArrayList();
21
        // private ArrayList selectedRowIndex = new ArrayList();
22

    
23
        public VectorialLayerEdited(FLayer lyr)
24
        {
25
                super(lyr);
26
        }
27

    
28
        public ArrayList getSelectedHandler() {
29
                return selectedHandler;
30
        }
31

    
32
        public ArrayList getSelectedRow() {
33
                return selectedRow;
34
        }
35

    
36
        /* public ArrayList getSelectedRowIndex() {
37
                return selectedRowIndex;
38
        } */
39

    
40
        public void clearSelection() {
41
                selectedHandler.clear();
42
                selectedRow.clear();
43
                // selectedRowIndex.clear();
44
        }
45
        /**
46
         * @return Returns the selectedRow.
47
         */
48
        public IFeature[] getSelectedRowsCache() {
49
                return (IFeature[]) selectedRow.toArray(new IFeature[0]);
50
        }
51
        public void refreshSelectionCache(Point2D firstPoint,CADToolAdapter cta){
52

    
53
                FBitSet selection = cta.getVectorialAdapter()
54
                .getSelection();
55
                double min = Double.MAX_VALUE;
56
//                 Cogemos las entidades seleccionadas
57
                for (int i = selection.nextSetBit(0); i >= 0; i = selection
58
                                .nextSetBit(i + 1)) {
59
                        Handler[] handlers = null;
60

    
61
                        DefaultFeature fea = null;
62
                        try {
63
                                fea = (DefaultFeature) cta
64
                                                .getVectorialAdapter().getRow(i).getLinkedRow();
65
                                /* clonedGeometry = fea.getGeometry().cloneGeometry();
66
                                handlers = clonedGeometry
67
                                                .getHandlers(IGeometry.SELECTHANDLER);
68
                                selectedRow.add(new DefaultFeature(clonedGeometry, fea
69
                                                .getAttributes())); */
70
                                handlers = fea.getGeometry().getHandlers(IGeometry.SELECTHANDLER);
71
                                selectedRow.add(fea);
72
                                // selectedRowIndex.add(new Integer(i));
73
                                // y miramos los handlers de cada entidad seleccionada
74
                                min = cta.getMapControl().getViewPort()
75
                                                .toMapDistance(SelectionCADTool.tolerance);
76
                                // int hSel = -1;
77
                                for (int j = 0; j < handlers.length; j++) {
78
                                        Point2D handlerPoint = handlers[j].getPoint();
79
                                        double distance = firstPoint.distance(handlerPoint);
80
                                        if (distance <= min) {
81
                                                min = distance;
82
                                                //hSel = j;
83
                                                selectedHandler.add(handlers[j]);
84
                                        }
85
                                }
86
                                // Se a?ade un solo handler por
87
                                // cada geometr?a seleccionada
88
                                // if (hSel != -1) {
89
                                //         selectedHandler.add(handlers[hSel]);
90
                                //         System.out.println("Handler seleccionado: " + hSel);
91
                                // }
92

    
93
                        } catch (DriverIOException e) {
94
                                // TODO Auto-generated catch block
95
                                e.printStackTrace();
96
                        } catch (IOException e) {
97
                                // TODO Auto-generated catch block
98
                                e.printStackTrace();
99
                        }
100
                }
101
        }
102
}