Statistics
| Revision:

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

History | View | Annotate | Download (6.42 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
                                
97
                        }else if (e.getSource() == tablePanel.getDeleteButton()){
98
                                try {
99
                                        if (tablePanel.getTable().getSelectedRows().length>0){
100
                                                String className = (String)tablePanel.getTable().getModel().getValueAt(tablePanel.getTable().getSelectedRow(),0);
101
                                                tablePanel.removeROI(className);
102
                                                // Borrado de la roi de la tabla
103
                                                ((DefaultTableModel)tablePanel.getTable().getModel()).removeRow(tablePanel.getTable().getSelectedRow());
104
                                                String roiName= tablePanel.getDiagram().getActiveRoiChart().getName();
105
                                                // Borrado de la roi de la lista de rois 
106
                                                tablePanel.getDiagram().getROIChartList().deleteROI(roiName);
107
                                                
108
                                                if(tablePanel.getTable().getRowCount()>0){
109
                                                        int selectedRow = 0;
110
                                                        roiSelectedName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(selectedRow,0);
111
                                                        // Se establece la roi activa.
112
                                                        tablePanel.getDiagram().setActiveRoi((ROIChart)tablePanel.getDiagram().getROIChartList().getListRois().get(roiSelectedName));
113
                                                        tablePanel.getDiagram().updateUI();
114
                                                }
115
                                                
116
                                                else{
117
                                                        // Se crea una nueva ROiChar que sera la activa
118
                                                        tablePanel.getDiagram().newRoiChart();        
119
                                                }
120
                                        }
121
                                
122
                                } catch (NotInitializeException e1) {
123
                                                        e1.printStackTrace();
124
                                }
125
                                
126
                        } else if (e.getSource() == tablePanel.getNewRoiButtom()){
127
                                tablePanel.getDiagram().newRoiChart();
128
                                tablePanel.updateTable();
129
                                tablePanel.updateUI();
130
                        }
131
                }
132

    
133
                public void valueChanged(ListSelectionEvent e) {
134
                        try {
135
                                if (tablePanel.getTable().getSelectedRows().length<=0){
136
                                        tablePanel.setPreviousTool();
137
                                }
138
                                else{
139
                                        // Cambio en la seleccion de la tabla
140
                                        tablePanel.selectDrawRoiTool();
141
                                        int selectedRow = tablePanel.getTable().getSelectedRow();
142
                                        roiSelectedName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(selectedRow,0);
143
                                        tablePanel.getDiagram().setActiveRoi((ROIChart)tablePanel.getDiagram().getROIChartList().getListRois().get(roiSelectedName));
144
                                        tablePanel.getDiagram().updateUI();
145
                                //        tablePanel.getDiagram().setActiveRoi()
146
                                        }
147
                        } catch (NotInitializeException e1) {
148
                                // TODO Auto-generated catch block
149
                                e1.printStackTrace();
150
                        }        
151
                }
152

    
153
                public void tableChanged(TableModelEvent e) {
154
                        /*
155
                         * Cambio de color en una ROI:
156
                         */
157
                        if(e.getColumn()==4){
158
                                String roiName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(e.getFirstRow(),0);
159
                                Color color = (Color)tablePanel.getTable().getTable().getJTable().getValueAt(e.getFirstRow(),4);
160
                                tablePanel.changeRoiColor(roiName,color);
161
                                tablePanel.updateUI();
162
                                        
163
                        }else if(e.getColumn()==0){
164
                                String newName = (String)tablePanel.getTable().getTable().getJTable().getValueAt(e.getFirstRow(),0);
165
                                tablePanel.changeRoiName(roiSelectedName,newName);
166
                                roiSelectedName = newName;
167
                        }
168
        
169
                }
170
                
171
        
172
        public void actionButtonPressed(ButtonsPanelEvent e) {
173
                // TODO Auto-generated method stub
174
                
175
        }
176

    
177

    
178
        public void interrupted() {        }
179

    
180

    
181
        public void end(Object param) {
182
                lastDefinedRoi = (ROI)param;        
183
                ArrayList rois= ((FLyrRasterSE)tablePanel.getFLayer()).getRois();
184
                if(rois!= null){
185
                        rois.add(lastDefinedRoi);
186
                        ((FLyrRasterSE)tablePanel.getFLayer()).setRois(rois);
187
                }
188
                else{
189
                        rois= new ArrayList();
190
                        rois.add(lastDefinedRoi);
191
                        ((FLyrRasterSE)tablePanel.getFLayer()).setRois(rois);
192
                }
193

    
194
        }
195
                
196
                                
197
        
198
}