svn-gvsig-desktop / branches / v2_0_0_prep / extensions / extRasterTools-SE / src / org / gvsig / rastertools / roi / ui / listener / DrawMouseViewListener.java @ 30346
History | View | Annotate | Download (6.87 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 |
if(roi == null) { |
77 |
RasterToolsUtil.messageBoxError("error_roi_not_selected", tablePanel, new NullPointerException("ROI no seleccionada DrawMouseViewListener L 61")); |
78 |
return;
|
79 |
} |
80 |
roi.addGeometry(geometry); |
81 |
int numGeometries;
|
82 |
|
83 |
ISymbol sym = null;
|
84 |
Color geometryColor = (Color)tablePanel.getTable().getModel().getValueAt(selectedRow, 4); |
85 |
|
86 |
if(tablePanel.getPolygonToolButton().isSelected()){
|
87 |
numGeometries = ((Integer)tablePanel.getTable().getModel().getValueAt(selectedRow,1)).intValue(); |
88 |
tablePanel.getTable().getModel().setValueAt(new Integer(numGeometries+1), selectedRow, 1); |
89 |
sym = mapContextManager.createSymbol(IFillSymbol.SYMBOL_NAME, |
90 |
geometryColor); |
91 |
} |
92 |
else{
|
93 |
numGeometries = ((Integer)tablePanel.getTable().getModel().getValueAt(selectedRow,2)).intValue(); |
94 |
tablePanel.getTable().getModel().setValueAt(new Integer(numGeometries+1), selectedRow, 2); |
95 |
sym = mapContextManager.createSymbol(ILineSymbol.SYMBOL_NAME, |
96 |
geometryColor); |
97 |
} |
98 |
|
99 |
GraphicLayer graphicLayer = tablePanel.getGraphicLayer(); |
100 |
|
101 |
FeatureStore store = graphicLayer.getFeatureStore(); |
102 |
store.edit(); |
103 |
EditableFeature feature = tablePanel.getRoiFeatureManager() |
104 |
.addROIFeature(roi, graphicLayer, geometry, sym); |
105 |
store.insert(feature); |
106 |
|
107 |
// FGraphic fGraphic = new FGraphic(geometry,graphicLayer.addSymbol(sym));
|
108 |
// graphicLayer.addGraphic(fGraphic);
|
109 |
// tablePanel.getRoiGraphics(roiName).add(fGraphic);
|
110 |
tablePanel.getMapControl().drawGraphics(); |
111 |
} catch (NotInitializeException e) {
|
112 |
RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
113 |
} catch (DataException e) {
|
114 |
RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
115 |
} |
116 |
|
117 |
} |
118 |
|
119 |
public boolean cancelDrawing() { |
120 |
return true; |
121 |
} |
122 |
|
123 |
public Image getImageCursor() { |
124 |
return tablePanel.getToolImage();
|
125 |
} |
126 |
|
127 |
public void point(PointEvent event) throws BehaviorException { |
128 |
Point2D point = event.getPoint();
|
129 |
Point2D p= tablePanel.getMapControl().getViewPort().toMapPoint(point);
|
130 |
Geometry geometry = null;
|
131 |
try {
|
132 |
geometry = geomManager.createPoint(p.getX(), p.getY(), SUBTYPES.GEOM2D); |
133 |
} catch (CreateGeometryException e1) {
|
134 |
logger.error("Error creating a point", e1);
|
135 |
} |
136 |
String roiName = ""; |
137 |
int selectedRow;
|
138 |
try {
|
139 |
selectedRow = tablePanel.getTable().getSelectedRow(); |
140 |
roiName = (String)tablePanel.getTable().getModel().getValueAt(selectedRow,0); |
141 |
roi = (VectorialROI)tablePanel.getROI(roiName); |
142 |
roi.addGeometry(geometry); |
143 |
int numPoints = ((Integer)tablePanel.getTable().getModel().getValueAt(selectedRow,3)).intValue(); |
144 |
tablePanel.getTable().getModel().setValueAt(new Integer(numPoints+1), selectedRow, 3); |
145 |
//tablePanel.getTable().getModel().setValueAt(new Integer(roi.getValues()), selectedRow, 5);
|
146 |
|
147 |
Color geometryColor = (Color)tablePanel.getTable().getModel().getValueAt(selectedRow, 4); |
148 |
ISymbol sym = mapContextManager.createSymbol( |
149 |
IMarkerSymbol.SYMBOL_NAME, geometryColor); |
150 |
((SimpleMarkerSymbol)sym).setStyle(SimpleMarkerSymbol.CIRCLE_STYLE); |
151 |
|
152 |
GraphicLayer graphicLayer = tablePanel.getGraphicLayer(); |
153 |
|
154 |
FeatureStore store = graphicLayer.getFeatureStore(); |
155 |
store.edit(); |
156 |
EditableFeature feature = tablePanel.getRoiFeatureManager() |
157 |
.addROIFeature(roi, graphicLayer, geometry, sym); |
158 |
store.insert(feature); |
159 |
|
160 |
// FGraphic fGraphic = new FGraphic(geometry,graphicLayer.addSymbol(sym));
|
161 |
// tablePanel.getMapControl().getMapContext().getGraphicsLayer().addGraphic(fGraphic);
|
162 |
// tablePanel.getRoiGraphics(roiName).add(fGraphic);
|
163 |
tablePanel.getMapControl().drawGraphics(); |
164 |
} catch (NotInitializeException e) {
|
165 |
RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
166 |
} catch (DataException e) {
|
167 |
RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
168 |
} |
169 |
} |
170 |
|
171 |
public void pointDoubleClick(PointEvent event) throws BehaviorException { |
172 |
} |
173 |
|
174 |
} |