Statistics
| Revision:

root / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / vectorizacion / MainListener.java @ 22733

History | View | Annotate | Download (8.01 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.util.RasterNotLoadException;
32
import org.gvsig.raster.util.RasterToolsUtil;
33
import org.gvsig.rastertools.vectorizacion.clip.ClipListener;
34
import org.gvsig.rastertools.vectorizacion.clip.ClipProcess;
35
import org.gvsig.rastertools.vectorizacion.filter.GrayConversionListener;
36
import org.gvsig.rastertools.vectorizacion.filter.GrayConversionPreviewRender;
37
import org.gvsig.rastertools.vectorizacion.filter.GrayConversionProcess;
38
import org.gvsig.rastertools.vectorizacion.vector.VectorListener;
39
import org.gvsig.rastertools.vectorizacion.vector.VectorProcess;
40

    
41
import com.iver.cit.gvsig.fmap.layers.FLayer;
42

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

    
168
                        clipList.setProcessSource(lyr);
169
                        clipList.apply();
170
                }
171
                
172
                //Generaci?n de raster preprocesado
173
                if(tabIndexSelected == 2) {
174
                        if(gray != null) 
175
                                if(!RasterToolsUtil.messageBoxYesOrNot("filter_raster_again", this)) {
176
                                        panel.getPreviewBasePanel().refreshPreview();
177
                                        return;
178
                                }
179
                        grayConvList.setProcessSource(clip);
180
                        grayConvList.apply();
181
                }
182
                                
183
                panel.getPreviewBasePanel().refreshPreview();
184
        }
185
                        
186
        /*
187
         * (non-Javadoc)
188
         * @see org.gvsig.gui.beans.slidertext.listeners.SliderListener#actionValueDragged(org.gvsig.gui.beans.slidertext.listeners.SliderEvent)
189
         */
190
        public void actionValueDragged(SliderEvent e) {
191
        }
192

    
193
        /*
194
         * (non-Javadoc)
195
         * @see org.gvsig.raster.IProcessActions#interrupted()
196
         */
197
        public void interrupted() {
198
        }
199

    
200
        /*
201
         * (non-Javadoc)
202
         * @see javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent)
203
         */
204
        public void stateChanged(ChangeEvent e) {
205
                changeTabActions();
206
        }
207

    
208
        public void end(Object param) {
209
                if(param instanceof Object[] && ((Object[])param).length == 2) {
210
                        if(((Object[])param)[0] instanceof ClipProcess) {
211
                                clip = (FLyrRasterSE)((Object[])param)[1]; 
212
                        }
213
                        if(((Object[])param)[0] instanceof GrayConversionProcess) {
214
                                gray = (FLyrRasterSE)((Object[])param)[1]; 
215
                        }
216
                        if(((Object[])param)[0] instanceof VectorProcess) {
217
                                if (RasterToolsUtil.messageBoxYesOrNot("cargar_toc", this)) {
218
                                        try {
219
                                                RasterToolsUtil.loadLayer(null, (FLayer)((Object[])param)[1]);
220
                                        } catch (RasterNotLoadException e) {
221
                                                RasterToolsUtil.messageBoxError("error_loading_layer", null, e);
222
                                        }
223
                                }
224
                        }
225
                }
226
        }
227

    
228
}