Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / enhanced / ui / EnhancedListener.java @ 19361

History | View | Annotate | Download (7.35 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.canvas.layers.MinMaxLines;
29
import org.gvsig.raster.beans.previewbase.PreviewBasePanel;
30
import org.gvsig.raster.beans.previewbase.PreviewFiltering;
31
import org.gvsig.raster.dataset.Params;
32
import org.gvsig.raster.grid.filter.enhancement.LinearStretchEnhancementFilter;
33
import org.gvsig.rastertools.enhanced.graphics.HistogramGraphicBase;
34

    
35
/**
36
 * Gestor de eventos de los paneles de gr?ficas y controles.
37
 * 
38
 * 21/02/2008
39
 * @author Nacho Brodin nachobrodin@gmail.com
40
 */
41
public class EnhancedListener implements ActionListener, IGCanvasListener {
42
        private SelectorsPanel            selector            = null;
43
        private GraphicsPanel             graphic             = null;
44
        private PreviewBasePanel          enhancedPanel       = null;
45
        private EnhancedDialog            enhancedDialog      = null;
46
        private PreviewFiltering          filteredPreview     = null;
47
        
48
        /**
49
         * Constructor
50
         * @param selectors Panel con los selectores de opciones
51
         * @param graphic Panel con los gr?ficos
52
         * @param enhancedPanel Panel base con la previsualizaci?n
53
         * @param enhandedDialog Dialogo general
54
         * @param filteredPreview Preprocesado para la preview
55
         */
56
        public EnhancedListener(SelectorsPanel selector, 
57
                                                        GraphicsPanel graphic, 
58
                                                        PreviewBasePanel enhancedPanel, 
59
                                                        EnhancedDialog enhancedDialog, 
60
                                                        PreviewFiltering filteredPreview) {
61
                this.selector = selector;
62
                this.graphic = graphic;
63
                this.enhancedPanel = enhancedPanel;
64
                this.enhancedDialog = enhancedDialog;
65
                this.filteredPreview = filteredPreview;
66
                
67
                selector.getHistogramType().addActionListener(this);
68
                selector.getDrawType().addActionListener(this);
69
                selector.getBand(null).addActionListener(this);
70
                selector.getEnhancedType().addActionListener(this);
71
        }
72
        
73
        /*
74
         * (non-Javadoc)
75
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
76
         */
77
        public void actionPerformed(ActionEvent e) {
78
                //Cambio del tipo de de dibujado del histograma
79
                if(e.getSource() == selector.getDrawType()) {
80
                        if(((String)selector.getDrawType().getSelectedItem()).equals("Fill")) {
81
                                graphic.getInputHistogram().setType(GraphicHistogram.TYPE_FILL);
82
                                graphic.getOutputHistogram().setType(GraphicHistogram.TYPE_FILL);
83
                        }
84
                        if(((String)selector.getDrawType().getSelectedItem()).equals("Line")) {
85
                                graphic.getInputHistogram().setType(GraphicHistogram.TYPE_LINE);
86
                                graphic.getOutputHistogram().setType(GraphicHistogram.TYPE_LINE);
87
                        }
88
                        graphic.getInputHistogram().getCanvas().repaint();
89
                        graphic.getOutputHistogram().getCanvas().repaint();
90
                }
91
                
92
                //Cambio de banda
93
                if(e.getSource() == selector.getBand(null)) {
94
                        if(((String)selector.getBand(null).getSelectedItem()).equals("Red")) {
95
                                graphic.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.RED);
96
                        }
97
                        if(((String)selector.getBand(null).getSelectedItem()).equals("Green")) {
98
                                graphic.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.GREEN);
99
                        }
100
                        if(((String)selector.getBand(null).getSelectedItem()).equals("Blue")) {
101
                                graphic.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE);
102
                        }
103
                }
104
                
105
                //Cambio de operaci?n
106
                if(e.getSource() == selector.getEnhancedType()) {
107
                        graphic.setClipPercentEnabled(false);
108
                        graphic.setLevelsEnabled(false);
109
                        
110
                        if(((String)selector.getEnhancedType().getSelectedItem()).equals("Lineal")) {
111
                                graphic.setClipPercentEnabled(true);
112
                        }
113
                        if(((String)selector.getEnhancedType().getSelectedItem()).equals("Gaussian")) {
114

    
115
                        }
116
                        if(((String)selector.getEnhancedType().getSelectedItem()).equals("Logaritmic")) {
117

    
118
                        }
119
                        if(((String)selector.getEnhancedType().getSelectedItem()).equals("Exponential")) {
120

    
121
                        }
122
                        if(((String)selector.getEnhancedType().getSelectedItem()).equals("Equalization")) {
123

    
124
                        }
125
                        if(((String)selector.getEnhancedType().getSelectedItem()).equals("Square-root")) {
126

    
127
                        }
128
                        if(((String)selector.getEnhancedType().getSelectedItem()).equals("Level-slice")) {
129
                                graphic.setLevelsEnabled(true);
130
                        }
131
                }
132
                
133
                //Cambio de tipo (estandar/acumulado)
134
                if(e.getSource() == selector.getHistogramType()) {
135
                        if(((String)selector.getHistogramType().getSelectedItem()).equals("Standard")) {
136
                                
137
                        }
138
                        if(((String)selector.getHistogramType().getSelectedItem()).equals("Cumulative")) {
139
                                
140
                        }
141
                }
142
                
143
                manageMainButtons(e);
144
        }
145
        
146
        /**
147
         * Gestiona los eventos de los botones principales (Aceptar, Aplicar, Cancelar)
148
         * @param e
149
         */
150
        private void manageMainButtons(ActionEvent e) {
151
                if(e.getSource() == enhancedPanel.getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT)) {
152
                        Params params = new Params();
153
                        params.setParam("TailTrim",
154
                                        new Double(Math.round(0 * 100.0)),
155
                                        Params.SLIDER,
156
                                        new String[]{ "0", "100", "0", "1", "25" });
157
                        params.setParam("Stretch",
158
                                        new Double[][] {{new Double(0), new Double(1269)}, {new Double(0), new Double(1525)}, {new Double(0), new Double(888)}},
159
                                        Params.CHOICE,
160
                                        null);
161
                        params.setParam("StretchRGB",
162
                                        new Integer[] {new Integer(255)},
163
                                        Params.CHOICE,
164
                                        null);
165
                        filteredPreview.addNewParam("param1", params, LinearStretchEnhancementFilter.class);
166
                }
167
                if(e.getSource() == enhancedPanel.getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY)) {
168
                        
169
                }
170
                if(e.getSource() == enhancedPanel.getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL)) {
171
                        enhancedDialog.close();
172
                }
173
        }
174

    
175
        /*
176
         * (non-Javadoc)
177
         * @see org.gvsig.raster.beans.canvas.IGCanvasListener#actionDataChanged(org.gvsig.raster.beans.canvas.GCanvasEvent)
178
         */
179
        public void actionDataChanged(GCanvasEvent e) {
180
                if (e.getKey().equals("minmax")) {
181
                        MinMaxLines lines = (MinMaxLines) e.getValue();
182
                        System.out.println("Parado: " + lines.getMinDistance() + " " + lines.getMaxDistance());
183
                        return;
184
                }
185
                if (e.getKey().equals("line")) {
186
                        System.out.println("Linea parada");
187
                        return;
188
                }
189
        }
190

    
191
        /*
192
         * (non-Javadoc)
193
         * @see org.gvsig.raster.beans.canvas.IGCanvasListener#actionDataDragged(org.gvsig.raster.beans.canvas.GCanvasEvent)
194
         */
195
        public void actionDataDragged(GCanvasEvent e) {
196
                if (e.getKey().equals("minmax")) {
197
                        MinMaxLines lines = (MinMaxLines) e.getValue();
198
                        System.out.println("Moviendo: " + lines.getMinDistance() + " " + lines.getMaxDistance());
199
                        return;
200
                }
201
                if (e.getKey().equals("line")) {
202
                        System.out.println("Moviendo linea");
203
                        return;
204
                }
205
        }
206
}