Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRemoteSensing / src / org / gvsig / remotesensing / scatterplot / listener / ManagerROIChartPanelListener.java @ 20173

History | View | Annotate | Download (6.44 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
*
3
* Copyright (C) 2007 Instituto de Desarrollo Regional and Generalitat Valenciana.
4
*
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public License
7
* as published by the Free Software Foundation; either version 2
8
* of the License, or (at your option) any later version.
9
*
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
* GNU General Public License for more details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
*
19
* For more information, contact:
20
*
21
*  Generalitat Valenciana
22
*   Conselleria d'Infraestructures i Transport
23
*   Av. Blasco Ib??ez, 50
24
*   46010 VALENCIA
25
*   SPAIN
26
*
27
*      +34 963862235
28
*   gvsig@gva.es
29
*      www.gvsig.gva.es
30
*
31
*    or
32
*
33
*   Instituto de Desarrollo Regional (Universidad de Castilla La-Mancha)
34
*   Campus Universitario s/n
35
*   02071 Alabacete
36
*   Spain
37
*
38
*   +34 967 599 200
39
*/
40

    
41
package org.gvsig.remotesensing.scatterplot.listener;
42

    
43
import java.awt.Color;
44
import java.awt.event.ActionEvent;
45
import java.awt.event.ActionListener;
46
import java.util.ArrayList;
47

    
48
import javax.swing.event.ListSelectionEvent;
49
import javax.swing.event.ListSelectionListener;
50
import javax.swing.event.TableModelEvent;
51
import javax.swing.event.TableModelListener;
52
import javax.swing.table.DefaultTableModel;
53

    
54
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
55
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
56
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
57
import org.gvsig.gui.beans.table.exceptions.NotInitializeException;
58
import org.gvsig.raster.IProcessActions;
59
import org.gvsig.raster.grid.roi.ROI;
60
import org.gvsig.remotesensing.scatterplot.chart.ROIChart;
61
import org.gvsig.remotesensing.scatterplot.gui.ManagerROIChartPanel;
62

    
63

    
64
/**
65
 * Listener para el gestor de rois sobre el grafico
66
 * 
67
 * @author Alejandro Mu?oz Sanchez (alejandro.munoz@uclm.es)  
68
 * @version 11/12/2007
69
 */
70

    
71
public class ManagerROIChartPanelListener implements ButtonsPanelListener, ActionListener, ListSelectionListener, TableModelListener, IProcessActions{
72
                
73
                private ManagerROIChartPanel tablePanel = null;
74
                private String                                    roiSelectedName = "";
75
                private ROI                                   lastDefinedRoi = null;
76
        
77
                /**
78
                 * Constructor
79
                 * */
80
                public ManagerROIChartPanelListener(ManagerROIChartPanel tablePanel) {
81
                        this.tablePanel = tablePanel;
82
                }
83
                
84

    
85
                public void actionPerformed(ActionEvent e) {
86
                        
87
                        if (e.getSource() == tablePanel.getExportButton()){
88
                                ROIChart roiToExport=  tablePanel.getDiagram().getActiveRoiChart();
89
                                RoiFromChartProcess process= new RoiFromChartProcess();
90
                                process.addParam("roi",roiToExport);
91
                                process.addParam("raster",(FLyrRasterSE)tablePanel.getScatterPlotPanel().getFLayer());
92
                                process.setActions(this);
93
                                // Mirar si es apropiado siempre mostrar la barra o solo en el caso layer grandes
94
                                process.start();
95
                                
96
                                ArrayList rois= ((FLyrRasterSE)tablePanel.getFLayer()).getRois();
97
                                if(rois!= null){
98
                                        rois.add(lastDefinedRoi);
99
                                        ((FLyrRasterSE)tablePanel.getFLayer()).setRois(rois);
100
                                }
101
                                else{
102
                                        rois= new ArrayList();
103
                                        rois.add(lastDefinedRoi);
104
                                        ((FLyrRasterSE)tablePanel.getFLayer()).setRois(rois);
105
                                }
106
        
107
                        }else if (e.getSource() == tablePanel.getDeleteButton()){
108
                                try {
109
                                        if (tablePanel.getTable().getSelectedRows().length>0){
110
                                                String className = (String)tablePanel.getTable().getModel().getValueAt(tablePanel.getTable().getSelectedRow(),0);
111
                                                tablePanel.removeROI(className);
112
                                                // Borrado de la roi de la tabla
113
                                                ((DefaultTableModel)tablePanel.getTable().getModel()).removeRow(tablePanel.getTable().getSelectedRow());
114
                                                String roiName= tablePanel.getDiagram().getActiveRoiChart().getName();
115
                                                // Borrado de la roi de la lista de rois 
116
                                                tablePanel.getDiagram().getROIChartList().deleteROI(roiName);
117
                                                
118
                                                if(tablePanel.getTable().getRowCount()>0){
119
                                                        int selectedRow = 0;
120
                                                        roiSelectedName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(selectedRow,0);
121
                                                        // Se establece la roi activa.
122
                                                        tablePanel.getDiagram().setActiveRoi((ROIChart)tablePanel.getDiagram().getROIChartList().getListRois().get(roiSelectedName));
123
                                                        tablePanel.getDiagram().updateUI();
124
                                                }
125
                                                
126
                                                else{
127
                                                        // Se crea una nueva ROiChar que sera la activa
128
                                                        tablePanel.getDiagram().newRoiChart();        
129
                                                }
130
                                        }
131
                                
132
                                } catch (NotInitializeException e1) {
133
                                                        e1.printStackTrace();
134
                                }
135
                                
136
                        } else if (e.getSource() == tablePanel.getNewRoiButtom()){
137
                                tablePanel.getDiagram().newRoiChart();
138
                                tablePanel.updateTable();
139
                                tablePanel.updateUI();
140
                        }
141
                }
142

    
143
                public void valueChanged(ListSelectionEvent e) {
144
                        try {
145
                                if (tablePanel.getTable().getSelectedRows().length<=0){
146
                                        tablePanel.setPreviousTool();
147
                                }
148
                                else{
149
                                        // Cambio en la seleccion de la tabla
150
                                        tablePanel.selectDrawRoiTool();
151
                                        int selectedRow = tablePanel.getTable().getSelectedRow();
152
                                        roiSelectedName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(selectedRow,0);
153
                                        tablePanel.getDiagram().setActiveRoi((ROIChart)tablePanel.getDiagram().getROIChartList().getListRois().get(roiSelectedName));
154
                                        tablePanel.getDiagram().updateUI();
155
                                //        tablePanel.getDiagram().setActiveRoi()
156
                                        }
157
                        } catch (NotInitializeException e1) {
158
                                // TODO Auto-generated catch block
159
                                e1.printStackTrace();
160
                        }        
161
                }
162

    
163
                public void tableChanged(TableModelEvent e) {
164
                        /*
165
                         * Cambio de color en una ROI:
166
                         */
167
                        if(e.getColumn()==4){
168
                                String roiName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(e.getFirstRow(),0);
169
                                Color color = (Color)tablePanel.getTable().getTable().getJTable().getValueAt(e.getFirstRow(),4);
170
                                tablePanel.changeRoiColor(roiName,color);
171
                                tablePanel.updateUI();
172
                                        
173
                        }else if(e.getColumn()==0){
174
                                String newName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(e.getFirstRow(),0);
175
                                tablePanel.changeRoiName(roiSelectedName,newName);
176
                                roiSelectedName = newName;
177
                        }
178
        
179
                }
180
                
181
        
182
        public void actionButtonPressed(ButtonsPanelEvent e) {
183
                // TODO Auto-generated method stub
184
                
185
        }
186

    
187

    
188
        public void interrupted() {        }
189

    
190

    
191
        public void end(Object param) {
192
                lastDefinedRoi = (ROI)param;        
193
        }
194
                
195
                                
196
        
197
}