Statistics
| Revision:

root / trunk / extensions / extRemoteSensing / src / org / gvsig / remotesensing / scatterplot / listener / ManagerROIChartPanelListener.java @ 17617

History | View | Annotate | Download (6.94 KB)

1
package org.gvsig.remotesensing.scatterplot.listener;
2

    
3
import java.awt.Color;
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.util.ArrayList;
7
import java.util.Iterator;
8

    
9
import javax.swing.event.ListSelectionEvent;
10
import javax.swing.event.ListSelectionListener;
11
import javax.swing.event.TableModelEvent;
12
import javax.swing.event.TableModelListener;
13
import javax.swing.table.DefaultTableModel;
14

    
15
import org.gvsig.fmap.raster.grid.roi.VectorialROI;
16
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
17
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
18
import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
19
import org.gvsig.raster.buffer.RasterBuffer;
20
import org.gvsig.raster.dataset.IBuffer;
21
import org.gvsig.raster.grid.Grid;
22
import org.gvsig.remotesensing.scatterplot.chart.ROIChart;
23
import org.gvsig.remotesensing.scatterplot.gui.ManagerROIChartPanel;
24
import org.jfree.data.Range;
25

    
26
import com.iver.andami.PluginServices;
27
import com.iver.cit.gvsig.fmap.MapControl;
28
import com.iver.cit.gvsig.fmap.core.FShape;
29
import com.iver.cit.gvsig.fmap.core.IGeometry;
30
import com.iver.cit.gvsig.fmap.core.ShapeFactory;
31
import com.iver.cit.gvsig.fmap.core.SymbologyFactory;
32
import com.iver.cit.gvsig.fmap.core.symbols.IMarkerSymbol;
33
import com.iver.cit.gvsig.fmap.core.symbols.ISymbol;
34
import com.iver.cit.gvsig.fmap.layers.FLayer;
35
import com.iver.cit.gvsig.fmap.layers.GraphicLayer;
36
import com.iver.cit.gvsig.fmap.rendering.FGraphic;
37
import com.iver.cit.gvsig.project.documents.view.gui.View;
38

    
39

    
40
/**
41
 * Listener para el gestor de rois sobre el grafico
42
 * 
43
 * @author Alejandro Mu?oz Sanchez (alejandro.munoz@uclm.es)  
44
 * @version 11/12/2007
45
 */
46

    
47
public class ManagerROIChartPanelListener implements ButtonsPanelListener, ActionListener, ListSelectionListener, TableModelListener{
48
                
49
                private ManagerROIChartPanel tablePanel = null;
50
                private String                    roiSelectedName = "";
51
                private ROIChart activeRoi = null;
52
                private FLayer layer= null;
53
        
54
                public ManagerROIChartPanelListener(ManagerROIChartPanel tablePanel) {
55
                        this.tablePanel = tablePanel;
56
                        activeRoi = tablePanel.getDiagram().getActiveRoiChart();
57
                        layer= tablePanel.getFLayer();
58
                }
59
                
60

    
61
                public void actionPerformed(ActionEvent e) {
62
                        
63
                        if (e.getSource() == tablePanel.getExportButton()){
64
                                
65
                                
66
                                // EXTRAER DE AQUI. PROVISIONAL
67
                                
68
                                // ACCIONES PARA EXPORTAR LA ROI ACTIVA DEL GRAFICO A LA VISTA
69
                                ROIChart roiToExport=  tablePanel.getDiagram().getActiveRoiChart();
70
                                //ArrayList rangos=roiToExport.getRanges();
71
                                
72
                                RoiFromChartProcess toRoi= new RoiFromChartProcess(roiToExport,tablePanel.getScatterPlotPanel().getGrid());
73
                                toRoi.createVectorialRoi();
74
                        
75
                
76
                                
77
                                
78

    
79
                                        
80
                                        
81
                        }else if (e.getSource() == tablePanel.getDeleteButton()){
82
                                try {
83
                                        if (tablePanel.getTable().getSelectedRows().length>0){
84
                                                String className = (String)tablePanel.getTable().getModel().getValueAt(tablePanel.getTable().getSelectedRow(),0);
85
                                                tablePanel.removeROI(className);
86
                                                // Borrado de la roi de la tabla
87
                                                ((DefaultTableModel)tablePanel.getTable().getModel()).removeRow(tablePanel.getTable().getSelectedRow());
88
                                                String roiName= tablePanel.getDiagram().getActiveRoiChart().getName();
89
                                                // Borrado de la roi de la lista de rois 
90
                                                tablePanel.getDiagram().getROIChartList().deleteROI(roiName);
91

    
92
                                                
93
                                                // Se establece la roi activa.
94
                                                tablePanel.getDiagram().setActiveRoi(null);
95
                                                
96
                                                tablePanel.loadROIs();
97
                                                tablePanel.updateTable();
98
                                                
99
                                        }
100
                                } catch (NotInitializeException e1) {
101
                                                        e1.printStackTrace();
102
                                }
103
                                
104
                        } else if (e.getSource() == tablePanel.getNewRoiButtom()){
105
                                tablePanel.getDiagram().newRoiChart();
106
                                tablePanel.updateTable();
107
                                tablePanel.updateUI();
108
                        }
109
                }
110

    
111
                public void valueChanged(ListSelectionEvent e) {
112
                        try {
113
                                if (tablePanel.getTable().getSelectedRows().length<=0){
114
                                        tablePanel.setPreviousTool();
115
                                }
116
                                else{
117
                                        // Cambio en la seleccion de la tabla
118
                                        tablePanel.selectDrawRoiTool();
119
                                        int selectedRow = tablePanel.getTable().getSelectedRow();
120
                                        ROIChart  activeClone= tablePanel.getDiagram().getActiveRoiChart();
121
                                        roiSelectedName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(selectedRow,0);
122
                                        tablePanel.getDiagram().setActiveRoi((ROIChart)tablePanel.getDiagram().getROIChartList().getListRois().get(roiSelectedName));
123
                                        tablePanel.getDiagram().updateUI();
124
                                //        tablePanel.getDiagram().setActiveRoi()
125
                                        }
126
                        } catch (NotInitializeException e1) {
127
                                // TODO Auto-generated catch block
128
                                e1.printStackTrace();
129
                        }        
130
                }
131

    
132
                public void tableChanged(TableModelEvent e) {
133
                        /*
134
                         * Cambio de color en una ROI:
135
                         */
136
                        if(e.getColumn()==4){
137
                                String roiName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(e.getFirstRow(),0);
138
                                ArrayList graphics = tablePanel.getRoiGraphics(roiName);
139
                                if(tablePanel.getMapControl()!=null){
140
                                        GraphicLayer graphicLayer = tablePanel.getMapControl().getMapContext().getGraphicsLayer();
141
                                        ISymbol symbol = null;
142
                                        Color color = (Color)tablePanel.getTable().getTable().getJTable().getValueAt(e.getFirstRow(),4);
143
                                        for (int i = 0; i< graphics.size(); i++){
144
                                                symbol = SymbologyFactory.createDefaultSymbolByShapeType(((FGraphic)graphics.get(i)).getGeom().getGeometryType(), color);
145
                                                ((FGraphic)graphics.get(i)).setIdSymbol(graphicLayer.addSymbol(symbol));
146
                                        }
147
                                        tablePanel.getROI(roiName).setColor(color);
148
                                        tablePanel.getMapControl().drawGraphics();
149
                                }
150
                        }else if(e.getColumn()==0){
151
                                String newName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(e.getFirstRow(),0);
152
                                tablePanel.changeRoiName(roiSelectedName,newName);
153
                                roiSelectedName = newName;
154
                        }
155
        
156
                }
157
                
158
                
159
                // Metodo que pinta la roi en la vista
160
                
161
        /**
162
         * Dibujado de la ro
163
         * */        
164
        void drawRoi(VectorialROI roi){
165
                
166
                VectorialROI vectorialROI = (VectorialROI) roi;
167
                ISymbol symbol = null;
168
                FGraphic fGraphic = null;
169
                View view = (View) PluginServices.getMDIManager().getActiveWindow();
170
                MapControl mapControl = view.getMapControl();
171
                GraphicLayer graphicLayer =mapControl.getMapContext().getGraphicsLayer();
172
        
173
                for (Iterator iterator = vectorialROI.getGeometries()
174
                                .iterator(); iterator.hasNext();) {
175
                        IGeometry geometry = (IGeometry) iterator.next();
176
                        switch (geometry.getGeometryType()) {
177
                        case FShape.POINT:
178
                                symbol = SymbologyFactory.createDefaultMarkerSymbol();
179
                                ((IMarkerSymbol) symbol).setColor(roi.getColor());
180
                                break;
181
                        }
182
                        fGraphic = new FGraphic(geometry, graphicLayer.addSymbol(symbol));
183
                        graphicLayer.addGraphic(fGraphic);
184
                        //tablePanel.getRoiGraphics(roi.getName()).add(fGraphic);
185
                        mapControl.drawGraphics();
186
                
187
                }
188
        
189
        }
190
        
191
        
192
        public boolean isInside(double valor, Range rango){
193
        
194
                double minValue= rango.getLowerBound();
195
                double maxValue= rango.getUpperBound();
196
                if( ( minValue< valor) && (maxValue>valor)) 
197
                        return true;
198
                else
199
                        return false;
200
                
201
        }
202

    
203

    
204
        public void actionButtonPressed(ButtonsPanelEvent e) {
205
                // TODO Auto-generated method stub
206
                
207
        }
208
                
209
                                
210
        
211
}