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 | 13339 | dguerrero | package org.gvsig.rastertools.roi.ui.listener; |
---|---|---|---|
2 | |||
3 | 14102 | gsdiego | import java.awt.Color; |
4 | 26807 | vcaballero | import java.awt.Image; |
5 | 13938 | dguerrero | import java.awt.geom.Point2D; |
6 | 13339 | dguerrero | |
7 | 26807 | vcaballero | import org.gvsig.fmap.geom.Geometry; |
8 | 27401 | jpiera | 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 | 26368 | nbrodin | import org.gvsig.fmap.geom.primitive.GeneralPathX; |
13 | 27091 | jmvivo | import org.gvsig.fmap.geom.util.UtilFunctions; |
14 | 26368 | nbrodin | 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 | 13918 | dguerrero | import org.gvsig.fmap.raster.grid.roi.VectorialROI; |
28 | import org.gvsig.gui.beans.table.exceptions.NotInitializeException; |
||
29 | 16591 | nbrodin | import org.gvsig.raster.grid.GridException; |
30 | 25988 | dguerrero | import org.gvsig.raster.util.RasterToolsUtil; |
31 | 27401 | jpiera | import org.gvsig.rastertools.rasterresolution.ZoomPixelCursorListener; |
32 | 14357 | gsdiego | import org.gvsig.rastertools.roi.ui.ROIsTablePanel; |
33 | 27401 | jpiera | import org.slf4j.Logger; |
34 | import org.slf4j.LoggerFactory; |
||
35 | 13918 | dguerrero | |
36 | 14875 | amunoz | public class DrawMouseViewListener implements PolylineListener,PointListener { |
37 | 27401 | jpiera | 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 | 26807 | vcaballero | |
42 | 14357 | gsdiego | public DrawMouseViewListener(ROIsTablePanel roiManagerPanel) {
|
43 | this.tablePanel = roiManagerPanel;
|
||
44 | 13918 | dguerrero | } |
45 | |||
46 | 13339 | dguerrero | public void pointFixed(MeasureEvent event) throws BehaviorException { |
47 | 14102 | gsdiego | |
48 | 13339 | dguerrero | } |
49 | |||
50 | public void points(MeasureEvent event) throws BehaviorException { |
||
51 | |||
52 | } |
||
53 | |||
54 | public void polylineFinished(MeasureEvent event) throws BehaviorException { |
||
55 | 13918 | dguerrero | GeneralPathX gp = event.getGP(); |
56 | 27401 | jpiera | 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 | 13938 | dguerrero | String roiName = ""; |
66 | 14102 | gsdiego | |
67 | int selectedRow;
|
||
68 | 13918 | dguerrero | try {
|
69 | 14357 | gsdiego | selectedRow = tablePanel.getTable().getSelectedRow(); |
70 | roiName = (String)tablePanel.getTable().getModel().getValueAt(selectedRow,0); |
||
71 | roi = (VectorialROI)tablePanel.getROI(roiName); |
||
72 | 13938 | dguerrero | roi.addGeometry(geometry); |
73 | int numGeometries;
|
||
74 | 26807 | vcaballero | |
75 | 14120 | gsdiego | ISymbol sym = null;
|
76 | 14357 | gsdiego | Color geometryColor = (Color)tablePanel.getTable().getModel().getValueAt(selectedRow, 4); |
77 | 26807 | vcaballero | |
78 | 14357 | gsdiego | 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 | 14120 | gsdiego | sym =SymbologyFactory.createDefaultFillSymbol(); |
82 | ((IFillSymbol)sym).setFillColor(geometryColor); |
||
83 | 13938 | dguerrero | } |
84 | else{
|
||
85 | 14357 | gsdiego | numGeometries = ((Integer)tablePanel.getTable().getModel().getValueAt(selectedRow,2)).intValue(); |
86 | tablePanel.getTable().getModel().setValueAt(new Integer(numGeometries+1), selectedRow, 2); |
||
87 | 14120 | gsdiego | sym =SymbologyFactory.createDefaultLineSymbol(); |
88 | ((ILineSymbol)sym).setLineColor(geometryColor); |
||
89 | 13938 | dguerrero | } |
90 | 26807 | vcaballero | |
91 | 14357 | gsdiego | GraphicLayer graphicLayer = tablePanel.getMapControl().getMapContext().getGraphicsLayer(); |
92 | 26807 | vcaballero | |
93 | FGraphic fGraphic = new FGraphic(geometry,graphicLayer.addSymbol(sym));
|
||
94 | 14357 | gsdiego | tablePanel.getMapControl().getMapContext().getGraphicsLayer().addGraphic(fGraphic); |
95 | tablePanel.getRoiGraphics(roiName).add(fGraphic); |
||
96 | tablePanel.getMapControl().drawGraphics(); |
||
97 | 13918 | dguerrero | } catch (NotInitializeException e) {
|
98 | 25988 | dguerrero | RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
99 | 13918 | dguerrero | } |
100 | 26807 | vcaballero | |
101 | 13339 | dguerrero | } |
102 | |||
103 | public boolean cancelDrawing() { |
||
104 | 14526 | gsdiego | return true; |
105 | 13339 | dguerrero | } |
106 | |||
107 | 26807 | vcaballero | public Image getImageCursor() { |
108 | return tablePanel.getToolImage();
|
||
109 | 13339 | dguerrero | } |
110 | |||
111 | 13938 | dguerrero | public void point(PointEvent event) throws BehaviorException { |
112 | Point2D point = event.getPoint();
|
||
113 | 14875 | amunoz | Point2D p= tablePanel.getMapControl().getViewPort().toMapPoint(point);
|
114 | 27401 | jpiera | 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 | 14781 | gsdiego | String roiName = ""; |
121 | 14102 | gsdiego | int selectedRow;
|
122 | 13938 | dguerrero | try {
|
123 | 14357 | gsdiego | selectedRow = tablePanel.getTable().getSelectedRow(); |
124 | 14781 | gsdiego | roiName = (String)tablePanel.getTable().getModel().getValueAt(selectedRow,0); |
125 | roi = (VectorialROI)tablePanel.getROI(roiName); |
||
126 | 13938 | dguerrero | roi.addGeometry(geometry); |
127 | 14357 | gsdiego | int numPoints = ((Integer)tablePanel.getTable().getModel().getValueAt(selectedRow,3)).intValue(); |
128 | tablePanel.getTable().getModel().setValueAt(new Integer(numPoints+1), selectedRow, 3); |
||
129 | 15941 | gsdiego | tablePanel.getTable().getModel().setValueAt(new Integer(roi.getValues()), selectedRow, 5); |
130 | 26807 | vcaballero | |
131 | 14357 | gsdiego | GraphicLayer graphicLayer = tablePanel.getMapControl().getMapContext().getGraphicsLayer(); |
132 | Color geometryColor = (Color)tablePanel.getTable().getModel().getValueAt(selectedRow, 4); |
||
133 | 14120 | gsdiego | ISymbol sym = SymbologyFactory.createDefaultMarkerSymbol(); |
134 | ((IMarkerSymbol)sym).setColor(geometryColor); |
||
135 | 14781 | gsdiego | ((SimpleMarkerSymbol)sym).setStyle(SimpleMarkerSymbol.CIRCLE_STYLE); |
136 | 26807 | vcaballero | |
137 | FGraphic fGraphic = new FGraphic(geometry,graphicLayer.addSymbol(sym));
|
||
138 | 14357 | gsdiego | tablePanel.getMapControl().getMapContext().getGraphicsLayer().addGraphic(fGraphic); |
139 | 14781 | gsdiego | tablePanel.getRoiGraphics(roiName).add(fGraphic); |
140 | 14357 | gsdiego | tablePanel.getMapControl().drawGraphics(); |
141 | 13938 | dguerrero | } catch (NotInitializeException e) {
|
142 | 25988 | dguerrero | RasterToolsUtil.messageBoxError("error_tabla_rois", tablePanel, e);
|
143 | 16591 | nbrodin | } catch (GridException e) {
|
144 | e.printStackTrace(); |
||
145 | 13938 | dguerrero | } |
146 | } |
||
147 | |||
148 | 26807 | vcaballero | public void pointDoubleClick(PointEvent event) throws BehaviorException { |
149 | 13938 | dguerrero | } |
150 | 14102 | gsdiego | |
151 | } |