Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extCAD / src / com / iver / cit / gvsig / layers / VectorialLayerEdited.java @ 4522

History | View | Annotate | Download (3.07 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.fmap.core.DefaultFeature;
8
import com.iver.cit.gvsig.fmap.core.Handler;
9
import com.iver.cit.gvsig.fmap.core.IFeature;
10
import com.iver.cit.gvsig.fmap.core.IGeometry;
11
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
12
import com.iver.cit.gvsig.fmap.edition.DefaultRowEdited;
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
                clearSelection();
58
                for (int i = selection.nextSetBit(0); i >= 0; i = selection
59
                                .nextSetBit(i + 1)) {
60
                        Handler[] handlers = null;
61

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

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