Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / vectorizacion / MainListener.java @ 22827

History | View | Annotate | Download (8.53 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.vectorizacion;
20

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

    
24
import javax.swing.event.ChangeEvent;
25
import javax.swing.event.ChangeListener;
26

    
27
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
28
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
29
import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
30
import org.gvsig.raster.IProcessActions;
31
import org.gvsig.raster.beans.previewbase.IPreviewRenderProcess;
32
import org.gvsig.raster.util.RasterNotLoadException;
33
import org.gvsig.raster.util.RasterToolsUtil;
34
import org.gvsig.rastertools.vectorizacion.clip.ClipListener;
35
import org.gvsig.rastertools.vectorizacion.clip.ClipProcess;
36
import org.gvsig.rastertools.vectorizacion.filter.GrayConversionListener;
37
import org.gvsig.rastertools.vectorizacion.filter.GrayConversionProcess;
38
import org.gvsig.rastertools.vectorizacion.filter.ui.GrayConversionPanel;
39
import org.gvsig.rastertools.vectorizacion.stretch.StretchListener;
40
import org.gvsig.rastertools.vectorizacion.stretch.ui.StretchPanel;
41
import org.gvsig.rastertools.vectorizacion.vector.VectorListener;
42
import org.gvsig.rastertools.vectorizacion.vector.VectorProcess;
43

    
44
import com.iver.cit.gvsig.fmap.layers.FLayer;
45

    
46
/**
47
 * Clase para la gesti?n de eventos de los componentes gr?ficos del panel de preproceso
48
 * de vectorizaci?n.
49
 * 
50
 * 12/06/2008
51
 * @author Nacho Brodin nachobrodin@gmail.com
52
 */
53
public class MainListener implements ActionListener, ChangeListener, IProcessActions  {
54
        private MainPanel                        panel                    = null;
55
        private FLyrRasterSE                     lyr                      = null;
56
        
57
        private GrayConversionListener           grayConvList             = null;
58
        private ClipListener                     clipList                 = null;
59
        private VectorListener                   vectList                 = null;
60
        private StretchListener                  stretchList              = null;
61
        
62
        private int                              tabIndexSelected         = 0;
63
        private IPreviewRenderProcess            prevRender               = null;
64
        
65
        private FLyrRasterSE                     clip                     = null;
66
        private FLyrRasterSE                     gray                     = null;
67
        //private FLyrVect                         vector                   = null;
68
        
69
        /**
70
         * Constructor. Asigna los listeners a los componentes
71
         * @param prepPanel
72
         */
73
        public MainListener(FLyrRasterSE lyr, MainPanel prepPanel, GrayConversionListener grayConvList, 
74
                        ClipListener clipList, VectorListener vectList, StretchListener stretchList) {
75
                this.lyr = lyr;
76
                setDataView(prepPanel);
77
                this.grayConvList = grayConvList;
78
                this.clipList = clipList;
79
                this.vectList = vectList;
80
                this.stretchList = stretchList;
81
                this.grayConvList.setProcessActions(this);
82
                this.clipList.setProcessActions(this);
83
                this.vectList.setProcessActions(this);
84
                this.stretchList.setProcessActions(this);
85
                
86
        }
87
        
88
        /**
89
         * Asigna la vista de datos. En este caso es el panel de preprocesado de la vectorizaci?n
90
         * @param prepPanel
91
         */
92
        private void setDataView(MainPanel prepPanel) {
93
                this.panel = prepPanel;
94
                panel.getNextPrevPanel().getNext().addActionListener(this);
95
                panel.getNextPrevPanel().getPrev().addActionListener(this);
96
                panel.getPreviewBasePanel().getTabbedPane().addChangeListener(this);
97
                panel.getPreviewBasePanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY).addActionListener(this);
98
                panel.getPreviewBasePanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT).addActionListener(this);
99
                panel.getPreviewBasePanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL).addActionListener(this);
100
        }
101
                
102
        /**
103
         * Asigna el render de la preview
104
         * @param prevRender
105
         */
106
        public void setPreviewRender(IPreviewRenderProcess prevRender) {
107
                this.prevRender = prevRender;
108
        }
109
        
110
        /*
111
         * (non-Javadoc)
112
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
113
         */
114
        public void actionPerformed(ActionEvent e) {
115
                if(!panel.isEnableValueChangedEvent())
116
                        return;
117
                
118
                tabIndexSelected = panel.getPreviewBasePanel().getTabbedPane().getSelectedIndex();
119
                
120
                //Bot?n de pantalla siguiente
121
                if(e.getSource() == panel.getNextPrevPanel().getNext()) {
122
                        panel.getPreviewBasePanel().getTabbedPane().setSelectedIndex(++tabIndexSelected);
123
                }
124
                
125
                //Bot?n de pantalla anterior                
126
                if(e.getSource() == panel.getNextPrevPanel().getPrev()) {
127
                        panel.getPreviewBasePanel().getTabbedPane().setSelectedIndex(--tabIndexSelected);
128
                }
129
                
130
                //Aplicar
131
                if(e.getSource() == panel.getPreviewBasePanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_APPLY)) {
132
                        vectList.setProcessSource(gray);
133
                        vectList.apply();
134
                }
135
                
136
                //Aceptar
137
                if(e.getSource() == panel.getPreviewBasePanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_ACCEPT)) {
138
                        
139
                }
140
                
141
                //Cancelar
142
                if(e.getSource() == panel.getPreviewBasePanel().getButtonsPanel().getButton(ButtonsPanel.BUTTON_CANCEL)) {
143
                        
144
                }
145
        }
146
        
147
        /**
148
         * Acciones realizadas cuando se varia la selecci?n de Tab
149
         */
150
        private void changeTabActions() {
151
                //Mostrar u ocultar botones
152
                tabIndexSelected = panel.getPreviewBasePanel().getTabbedPane().getSelectedIndex();
153
                if(tabIndexSelected >= (panel.getPreviewBasePanel().getTabbedPane().getTabCount() - 1))
154
                        panel.getNextPrevPanel().getNext().setEnabled(false);
155
                if(tabIndexSelected < (panel.getPreviewBasePanel().getTabbedPane().getTabCount() - 1))
156
                        panel.getNextPrevPanel().getNext().setEnabled(true);
157
                if(tabIndexSelected <= 0)
158
                        panel.getNextPrevPanel().getPrev().setEnabled(false);
159
                if(tabIndexSelected > 0)
160
                        panel.getNextPrevPanel().getPrev().setEnabled(true);
161
                
162
                //Mostrar u ocultar preview
163
                if(tabIndexSelected == 0)
164
                        prevRender.setShowPreview(false);
165
                else
166
                        prevRender.setShowPreview(true);
167
                
168
                //Generaci?n de recorte
169
                if(tabIndexSelected == 1) {
170
                        if(clip != null) 
171
                                if(!RasterToolsUtil.messageBoxYesOrNot("clip_raster_again", this)) {
172
                                        panel.getPreviewBasePanel().refreshPreview();
173
                                        return;
174
                                }
175

    
176
                        clipList.setProcessSource(lyr);
177
                        clipList.apply();
178
                }
179
                
180
                //Generaci?n de raster preprocesado con escala de grises y posterizaci?n
181
                if(tabIndexSelected == 2 && panel.getPreviewBasePanel().getUserPanels().get(1) instanceof GrayConversionPanel) {
182
                        if(gray != null) 
183
                                if(!RasterToolsUtil.messageBoxYesOrNot("filter_raster_again", this)) {
184
                                        panel.getPreviewBasePanel().refreshPreview();
185
                                        return;
186
                                }
187
                        grayConvList.setProcessSource(clip);
188
                        grayConvList.apply();
189
                }
190
                
191
                //Generaci?n de tramos
192
                if(tabIndexSelected == 2 && panel.getPreviewBasePanel().getUserPanels().get(1) instanceof StretchPanel) {
193
                }
194
                                
195
                panel.getPreviewBasePanel().refreshPreview();
196
        }
197
                        
198
        /*
199
         * (non-Javadoc)
200
         * @see org.gvsig.gui.beans.slidertext.listeners.SliderListener#actionValueDragged(org.gvsig.gui.beans.slidertext.listeners.SliderEvent)
201
         */
202
        public void actionValueDragged(SliderEvent e) {
203
        }
204

    
205
        /*
206
         * (non-Javadoc)
207
         * @see org.gvsig.raster.IProcessActions#interrupted()
208
         */
209
        public void interrupted() {
210
        }
211

    
212
        /*
213
         * (non-Javadoc)
214
         * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
215
         */
216
        public void stateChanged(ChangeEvent e) {
217
                changeTabActions();
218
        }
219

    
220
        public void end(Object param) {
221
                if(param instanceof Object[] && ((Object[])param).length == 2) {
222
                        if(((Object[])param)[0] instanceof ClipProcess) {
223
                                clip = (FLyrRasterSE)((Object[])param)[1]; 
224
                        }
225
                        if(((Object[])param)[0] instanceof GrayConversionProcess) {
226
                                gray = (FLyrRasterSE)((Object[])param)[1]; 
227
                        }
228
                        if(((Object[])param)[0] instanceof VectorProcess) {
229
                                if (RasterToolsUtil.messageBoxYesOrNot("cargar_toc", this)) {
230
                                        try {
231
                                                RasterToolsUtil.loadLayer(null, (FLayer)((Object[])param)[1]);
232
                                        } catch (RasterNotLoadException e) {
233
                                                RasterToolsUtil.messageBoxError("error_loading_layer", null, e);
234
                                        }
235
                                }
236
                        }
237
                }
238
        }
239

    
240
}