Statistics
| Revision:

root / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / enhanced / ui / EnhancedListener.java @ 19535

History | View | Annotate | Download (9.51 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 IVER T.I. 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
package org.gvsig.rastertools.enhanced.ui;
20

    
21
import java.awt.event.ActionEvent;
22
import java.awt.event.ActionListener;
23

    
24
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
25
import org.gvsig.raster.beans.canvas.GCanvasEvent;
26
import org.gvsig.raster.beans.canvas.IGCanvasListener;
27
import org.gvsig.raster.beans.canvas.layers.GraphicHistogram;
28
import org.gvsig.raster.beans.previewbase.PreviewBasePanel;
29
import org.gvsig.raster.beans.previewbase.PreviewFiltering;
30
import org.gvsig.raster.dataset.Params;
31
import org.gvsig.raster.grid.filter.enhancement.EcualizationFilter;
32
import org.gvsig.rastertools.enhanced.graphics.HistogramGraphicBase;
33
/**
34
 * Gestor de eventos de los paneles de gr?ficas y controles.
35
 * 
36
 * 21/02/2008
37
 * @author Nacho Brodin nachobrodin@gmail.com
38
 */
39
public class EnhancedListener implements ActionListener, IGCanvasListener {
40
        private SelectorsPanel   selectorsPanel  = null;
41
        private GraphicsPanel    graphicsPanel   = null;
42
        private PreviewBasePanel enhancedPanel   = null;
43
        private EnhancedDialog   enhancedDialog  = null;
44
        private PreviewFiltering filteredPreview = null;
45
        private EnhancedHistogramController  enhancedManager = null;
46
        
47
        /**
48
         * Constructor
49
         * @param selectorsPanel Panel con los selectores de opciones
50
         * @param graphicsPanel Panel con los gr?ficos
51
         * @param enhancedPanel Panel base con la previsualizaci?n
52
         * @param enhancedDialog Dialogo general
53
         * @param filteredPreview Preprocesado para la preview
54
         */
55
        public EnhancedListener(SelectorsPanel selectorsPanel, 
56
                                                        GraphicsPanel graphicsPanel, 
57
                                                        PreviewBasePanel enhancedPanel, 
58
                                                        EnhancedDialog enhancedDialog, 
59
                                                        PreviewFiltering filteredPreview) {
60
                this.selectorsPanel = selectorsPanel;
61
                this.graphicsPanel = graphicsPanel;
62
                this.enhancedPanel = enhancedPanel;
63
                this.enhancedDialog = enhancedDialog;
64
                this.filteredPreview = filteredPreview;
65
                
66
                
67
                enhancedManager = new EnhancedHistogramController(graphicsPanel.getInputHistogram(), graphicsPanel.getOutputHistogram(), enhancedDialog);
68
                
69
                selectorsPanel.getHistogramType().addActionListener(this);
70
                selectorsPanel.getDrawType().addActionListener(this);
71
                selectorsPanel.getBand(null).addActionListener(this);
72
                selectorsPanel.getEnhancedType().addActionListener(this);
73
        }
74
        
75
        /*
76
         * (non-Javadoc)
77
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
78
         */
79
        public void actionPerformed(ActionEvent e) {
80
                //Cambio del tipo de de dibujado del histograma
81
                if(e.getSource() == selectorsPanel.getDrawType()) {
82
                        if(((String)selectorsPanel.getDrawType().getSelectedItem()).equals("Fill")) {
83
                                graphicsPanel.getInputHistogram().setType(GraphicHistogram.TYPE_FILL);
84
                                graphicsPanel.getOutputHistogram().setType(GraphicHistogram.TYPE_FILL);
85
                        }
86
                        if(((String)selectorsPanel.getDrawType().getSelectedItem()).equals("Line")) {
87
                                graphicsPanel.getInputHistogram().setType(GraphicHistogram.TYPE_LINE);
88
                                graphicsPanel.getOutputHistogram().setType(GraphicHistogram.TYPE_LINE);
89
                        }
90
                        graphicsPanel.getInputHistogram().getCanvas().repaint();
91
                        graphicsPanel.getOutputHistogram().getCanvas().repaint();
92
                }
93

    
94
                // Cambio el tipo de visualizacion del histograma
95
                if (e.getSource() == selectorsPanel.getHistogramType()) {
96
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals("Standard")) {
97
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_LINEAL);
98
                        }
99
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals("Cumulative")) {
100
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_ACUMMULATED);
101
                        }
102
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals("Logarithmic")) {
103
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_LOGARITHMIC);
104
                        }
105
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals("Cumulative Logarithmic")) {
106
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_ACUMMULATEDLOG);
107
                        }
108
                        graphicsPanel.getOutputHistogram().getCanvas().repaint();
109
                }
110
                
111
                //Cambio de banda
112
                if(e.getSource() == selectorsPanel.getBand(null)) {
113
                        if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals("Red")) {
114
                                graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.RED);
115
                                graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.RED);
116
                        }
117
                        if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals("Green")) {
118
                                graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.GREEN);
119
                                graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.GREEN);
120
                        }
121
                        if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals("Blue")) {
122
                                graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE);
123
                                graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE);
124
                        }
125
                }
126
                
127
                //Cambio de operaci?n
128
                if(e.getSource() == selectorsPanel.getEnhancedType()) {
129
                        graphicsPanel.setClipPercentEnabled(false);
130
                        graphicsPanel.setLevelsEnabled(false);
131
                        
132
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Lineal")) {
133
                                graphicsPanel.setClipPercentEnabled(true);
134
                        }
135
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Gaussian")) {
136

    
137
                        }
138
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Logaritmic")) {
139

    
140
                        }
141
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Exponential")) {
142

    
143
                        }
144
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Equalization")) {
145
                                int[] renderBands = enhancedDialog.getLayer().getRender().getRenderBands();
146
                                String values = "";
147
                                for (int i = 0; i < renderBands.length; i++) 
148
                                        values += renderBands[i] + " ";
149
                                values = values.trim();
150
                                Params params = new Params();
151
                                params.setParam("Histogram", graphicsPanel.getHistogram(), -1, null);
152
                                params.setParam("RenderBands", values, -1, null);
153
                                params.setParam("EcualizedBands", new int[]{0, 1, 2}, -1, null);
154
                                filteredPreview.addNewParam("ecualization", params, EcualizationFilter.class);
155
                        }
156
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Square-root")) {
157

    
158
                        }
159
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Level-slice")) {
160
                                graphicsPanel.setLevelsEnabled(true);
161
                        }
162
                }
163
                
164
                //Cambio de tipo (estandar/acumulado)
165
                if(e.getSource() == selectorsPanel.getHistogramType()) {
166
                        if(((String)selectorsPanel.getHistogramType().getSelectedItem()).equals("Standard")) {
167
                                
168
                        }
169
                        if(((String)selectorsPanel.getHistogramType().getSelectedItem()).equals("Cumulative")) {
170
                                
171
                        }
172
                }
173
                
174
                manageMainButtons(e);
175
        }
176
        
177
        /**
178
         * Gestiona los eventos de los botones principales (Aceptar, Aplicar, Cancelar)
179
         * @param e
180
         */
181
        private void manageMainButtons(ActionEvent e) {
182
                if(e.getSource() == enhancedPanel.getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT)) {
183
                        /*Params params = new Params();
184
                        params.setParam("TailTrim",
185
                                        new Double(Math.round(0 * 100.0)),
186
                                        Params.SLIDER,
187
                                        new String[]{ "0", "100", "0", "1", "25" });
188
                        params.setParam("Stretch",
189
                                        new Double[][] {{new Double(0), new Double(1269)}, {new Double(0), new Double(1525)}, {new Double(0), new Double(888)}},
190
                                        Params.CHOICE,
191
                                        null);
192
                        params.setParam("StretchRGB",
193
                                        new Integer[] {new Integer(255)},
194
                                        Params.CHOICE,
195
                                        null);
196
                        filteredPreview.addNewParam("param1", params, LinearStretchEnhancementFilter.class);*/
197
                }
198
                if(e.getSource() == enhancedPanel.getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY)) {
199
                        
200
                }
201
                if(e.getSource() == enhancedPanel.getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL)) {
202
                        enhancedDialog.close();
203
                }
204
        }
205

    
206
        /**
207
         * Coge los datos que hay en los histogramas y los aplica a la vista previa
208
         */
209
        private void updatePreview() {
210
                enhancedManager.updatePreview();
211
                enhancedManager.updateHistogramOut();
212
        }
213

    
214
        /**
215
         * Coge los datos que hay en los histogramas y los aplica en el histograma de salida
216
         */
217
        private void updateHistogramOut() {
218
                enhancedManager.updatePreview();
219
                enhancedManager.updateHistogramOut();
220
        }
221
        
222
        /*
223
         * (non-Javadoc)
224
         * @see org.gvsig.raster.beans.canvas.IGCanvasListener#actionDataChanged(org.gvsig.raster.beans.canvas.GCanvasEvent)
225
         */
226
        public void actionDataChanged(GCanvasEvent e) {
227
                if (e.getKey().equals("minmax")) {
228
                        updatePreview();
229
                        return;
230
                }
231
                if (e.getKey().equals("line")) {
232
                        updatePreview();
233
                        return;
234
                }
235
        }
236

    
237
        /*
238
         * (non-Javadoc)
239
         * @see org.gvsig.raster.beans.canvas.IGCanvasListener#actionDataDragged(org.gvsig.raster.beans.canvas.GCanvasEvent)
240
         */
241
        public void actionDataDragged(GCanvasEvent e) {
242
                if (e.getKey().equals("minmax")) {
243
                        updateHistogramOut();
244
                        return;
245
                }
246
                if (e.getKey().equals("line")) {
247
                        updateHistogramOut();
248
                        return;
249
                }
250
        }
251
}