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 |
} |