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