Statistics
| Revision:

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
}