svn-gvsig-desktop / branches / v2_0_0_prep / extensions / extRasterTools-SE / src / org / gvsig / rastertools / roi / ui / listener / DrawMouseViewListener.java @ 30133
History | View | Annotate | Download (6.68 KB)
1 |
package org.gvsig.rastertools.roi.ui.listener; |
---|---|
2 |
|
3 |
import java.awt.Color; |
4 |
import java.awt.Image; |
5 |
import java.awt.geom.Point2D; |
6 |
|
7 |
import org.gvsig.fmap.dal.exception.DataException; |
8 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
9 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
10 |
import org.gvsig.fmap.geom.Geometry; |
11 |
import org.gvsig.fmap.geom.GeometryLocator; |
12 |
import org.gvsig.fmap.geom.GeometryManager; |
13 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
14 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
15 |
import org.gvsig.fmap.geom.primitive.GeneralPathX; |
16 |
import org.gvsig.fmap.mapcontext.MapContextLocator; |
17 |
import org.gvsig.fmap.mapcontext.MapContextManager; |
18 |
import org.gvsig.fmap.mapcontext.layers.vectorial.GraphicLayer; |
19 |
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; |
20 |
import org.gvsig.fmap.mapcontrol.tools.BehaviorException; |
21 |
import org.gvsig.fmap.mapcontrol.tools.Events.MeasureEvent; |
22 |
import org.gvsig.fmap.mapcontrol.tools.Events.PointEvent; |
23 |
import org.gvsig.fmap.mapcontrol.tools.Listeners.PointListener; |
24 |
import org.gvsig.fmap.mapcontrol.tools.Listeners.PolylineListener; |
25 |
import org.gvsig.fmap.raster.grid.roi.VectorialROI; |
26 |
import org.gvsig.gui.beans.table.exceptions.NotInitializeException; |
27 |
import org.gvsig.raster.grid.GridException; |
28 |
import org.gvsig.raster.util.RasterToolsUtil; |
29 |
import org.gvsig.rastertools.roi.ui.ROIsTablePanel; |
30 |
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.fill.IFillSymbol; |
31 |
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.line.ILineSymbol; |
32 |
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.IMarkerSymbol; |
33 |
import org.gvsig.symbology.fmap.mapcontext.rendering.symbol.marker.impl.SimpleMarkerSymbol; |
34 |
import org.slf4j.Logger; |
35 |
import org.slf4j.LoggerFactory; |
36 |
|
37 |
public class DrawMouseViewListener implements PolylineListener,PointListener { |
38 |
private static final GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
39 |
private static final Logger logger = LoggerFactory.getLogger(DrawMouseViewListener.class); |
40 |
private ROIsTablePanel tablePanel = null; |
41 |
private VectorialROI roi = null; |
42 |
|
43 |
private MapContextManager mapContextManager = MapContextLocator
|
44 |
.getMapContextManager(); |
45 |
|
46 |
public DrawMouseViewListener(ROIsTablePanel roiManagerPanel) {
|
47 |
this.tablePanel = roiManagerPanel;
|
48 |
} |
49 |
|
50 |
public void pointFixed(MeasureEvent event) throws BehaviorException { |
51 |
|
52 |
} |
53 |
|
54 |
public void points(MeasureEvent event) throws BehaviorException { |
55 |
|
56 |
} |
57 |
|
58 |
public void polylineFinished(MeasureEvent event) throws BehaviorException { |
59 |
GeneralPathX gp = event.getGP(); |
60 |
Geometry geometry = null;
|
61 |
try{
|
62 |
if (tablePanel.getMapControl().getCurrentTool().equals("drawPolygonROI")) |
63 |
geometry = geomManager.createSurface(gp, SUBTYPES.GEOM2D); |
64 |
else
|
65 |
geometry = geomManager.createSurface(gp, SUBTYPES.GEOM2D); |
66 |
}catch(CreateGeometryException e){
|
67 |
logger.error("Error creating the envelope", e);
|
68 |
} |
69 |
String roiName = ""; |
70 |
|
71 |
int selectedRow;
|
72 |
try {
|
73 |
selectedRow = tablePanel.getTable().getSelectedRow(); |
74 |
roiName = (String)tablePanel.getTable().getModel().getValueAt(selectedRow,0); |
75 |
roi = (VectorialROI)tablePanel.getROI(roiName); |
76 |
roi.addGeometry(geometry); |
77 |
int numGeometries;
|
78 |
|
79 |
ISymbol sym = null;
|
80 |
Color geometryColor = (Color)tablePanel.getTable().getModel().getValueAt(selectedRow, 4); |
81 |
|
82 |
if(tablePanel.getPolygonToolButton().isSelected()){
|
83 |
numGeometries = ((Integer)tablePanel.getTable().getModel().getValueAt(selectedRow,1)).intValue(); |
84 |
tablePanel.getTable().getModel().setValueAt(new Integer(numGeometries+1), selectedRow, 1); |
85 |
sym = mapContextManager.createSymbol(IFillSymbol.SYMBOL_NAME, |
86 |
geometryColor); |
87 |
} |
88 |
else{
|
89 |
numGeometries = ((Integer)tablePanel.getTable().getModel().getValueAt(selectedRow,2)).intValue(); |
90 |
tablePanel.getTable().getModel().setValueAt(new Integer(numGeometries+1), selectedRow, 2); |
91 |
sym = mapContextManager.createSymbol(ILineSymbol.SYMBOL_NAME, |
92 |
geometryColor); |
93 |
} |
94 |
|
95 |
GraphicLayer graphicLayer = tablePanel.getGraphicLayer(); |
96 |
|
97 |
FeatureStore store = graphicLayer.getFeatureStore(); |
98 |
store.edit(); |
99 |
EditableFeature feature = tablePanel.getRoiFeatureManager() |
100 |
.addROIFeature(roi, graphicLayer, geometry, sym); |
101 |
store.insert(feature); |
102 |
|
103 |
// FGraphic fGraphic = new FGraphic(geometry,graphicLayer.addSymbol(sym));
|
104 |
// graphicLayer.addGraphic(fGraphic);
|
105 |
// tablePanel.getRoiGraphics(roiName).add(fGraphic);
|
106 |
tablePanel.getMapControl().drawGraphics(); |
107 |
} catch (NotInitializeException e) {
|
108 |
RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
109 |
} catch (DataException e) {
|
110 |
RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
111 |
} |
112 |
|
113 |
} |
114 |
|
115 |
public boolean cancelDrawing() { |
116 |
return true; |
117 |
} |
118 |
|
119 |
public Image getImageCursor() { |
120 |
return tablePanel.getToolImage();
|
121 |
} |
122 |
|
123 |
public void point(PointEvent event) throws BehaviorException { |
124 |
Point2D point = event.getPoint();
|
125 |
Point2D p= tablePanel.getMapControl().getViewPort().toMapPoint(point);
|
126 |
Geometry geometry = null;
|
127 |
try {
|
128 |
geometry = geomManager.createPoint(p.getX(), p.getY(), SUBTYPES.GEOM2D); |
129 |
} catch (CreateGeometryException e1) {
|
130 |
logger.error("Error creating a point", e1);
|
131 |
} |
132 |
String roiName = ""; |
133 |
int selectedRow;
|
134 |
try {
|
135 |
selectedRow = tablePanel.getTable().getSelectedRow(); |
136 |
roiName = (String)tablePanel.getTable().getModel().getValueAt(selectedRow,0); |
137 |
roi = (VectorialROI)tablePanel.getROI(roiName); |
138 |
roi.addGeometry(geometry); |
139 |
int numPoints = ((Integer)tablePanel.getTable().getModel().getValueAt(selectedRow,3)).intValue(); |
140 |
tablePanel.getTable().getModel().setValueAt(new Integer(numPoints+1), selectedRow, 3); |
141 |
//tablePanel.getTable().getModel().setValueAt(new Integer(roi.getValues()), selectedRow, 5);
|
142 |
|
143 |
Color geometryColor = (Color)tablePanel.getTable().getModel().getValueAt(selectedRow, 4); |
144 |
ISymbol sym = mapContextManager.createSymbol( |
145 |
IMarkerSymbol.SYMBOL_NAME, geometryColor); |
146 |
((SimpleMarkerSymbol)sym).setStyle(SimpleMarkerSymbol.CIRCLE_STYLE); |
147 |
|
148 |
GraphicLayer graphicLayer = tablePanel.getGraphicLayer(); |
149 |
|
150 |
FeatureStore store = graphicLayer.getFeatureStore(); |
151 |
store.edit(); |
152 |
EditableFeature feature = tablePanel.getRoiFeatureManager() |
153 |
.addROIFeature(roi, graphicLayer, geometry, sym); |
154 |
store.insert(feature); |
155 |
|
156 |
// FGraphic fGraphic = new FGraphic(geometry,graphicLayer.addSymbol(sym));
|
157 |
// tablePanel.getMapControl().getMapContext().getGraphicsLayer().addGraphic(fGraphic);
|
158 |
// tablePanel.getRoiGraphics(roiName).add(fGraphic);
|
159 |
tablePanel.getMapControl().drawGraphics(); |
160 |
} catch (NotInitializeException e) {
|
161 |
RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
162 |
} catch (DataException e) {
|
163 |
RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
164 |
} |
165 |
} |
166 |
|
167 |
public void pointDoubleClick(PointEvent event) throws BehaviorException { |
168 |
} |
169 |
|
170 |
} |