Statistics
| Revision:

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

History | View | Annotate | Download (19.6 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
import java.io.File;
24
import java.util.ArrayList;
25

    
26
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
27
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
28
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
29
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
30
import org.gvsig.raster.IProcessActions;
31
import org.gvsig.raster.beans.canvas.GCanvasEvent;
32
import org.gvsig.raster.beans.canvas.IGCanvasListener;
33
import org.gvsig.raster.beans.canvas.layers.GraphicHistogram;
34
import org.gvsig.raster.beans.canvas.layers.functions.BaseFunction;
35
import org.gvsig.raster.beans.canvas.layers.functions.DensitySlicingLine;
36
import org.gvsig.raster.beans.canvas.layers.functions.LogaritmicExponentialLine;
37
import org.gvsig.raster.beans.canvas.layers.functions.SquareRootPowLine;
38
import org.gvsig.raster.beans.canvas.layers.functions.StraightLine;
39
import org.gvsig.raster.dataset.IRasterDataSource;
40
import org.gvsig.raster.dataset.Params;
41
import org.gvsig.raster.grid.filter.FilterTypeException;
42
import org.gvsig.raster.grid.filter.RasterFilterList;
43
import org.gvsig.raster.grid.filter.enhancement.EqualizationFilter;
44
import org.gvsig.raster.grid.filter.enhancement.LinearStretchEnhancementFilter;
45
import org.gvsig.raster.grid.filter.enhancement.LinearStretchParams;
46
import org.gvsig.raster.grid.filter.enhancement.LinearStretchParams.Stretch;
47
import org.gvsig.raster.hierarchy.IRasterRendering;
48
import org.gvsig.raster.util.LayerVisualStatusList;
49
import org.gvsig.raster.util.RasterNotLoadException;
50
import org.gvsig.raster.util.RasterToolsUtil;
51
import org.gvsig.raster.util.process.FilterProcess;
52
import org.gvsig.rastertools.enhanced.graphics.HistogramGraphicBase;
53
import org.gvsig.rastertools.enhanced.graphics.HistogramGraphicBase.HistogramStatus;
54

    
55
import com.iver.andami.PluginServices;
56
/**
57
 * Gestor de eventos de los paneles de gr?ficas y controles.
58
 * 
59
 * 21/02/2008
60
 * @author Nacho Brodin nachobrodin@gmail.com
61
 */
62
public class EnhancedListener implements ActionListener, IGCanvasListener, ButtonsPanelListener, IProcessActions {
63
        private SelectorsPanel               selectorsPanel  = null;
64
        private GraphicsPanel                graphicsPanel   = null;
65
        private EnhancedDialog               enhancedDialog  = null;
66
        private PreviewFiltering             filteredPreview = null;
67
        private EnhancedHistogramController  enhancedManager = null;
68
        private LayerVisualStatusList        status          = new LayerVisualStatusList();
69
        
70
        /**
71
         * Constructor
72
         * @param selectorsPanel Panel con los selectores de opciones
73
         * @param graphicsPanel Panel con los gr?ficos
74
         * @param enhancedPanel Panel base con la previsualizaci?n
75
         * @param enhancedDialog Dialogo general
76
         * @param filteredPreview Preprocesado para la preview
77
         */
78
        public EnhancedListener(SelectorsPanel selectorsPanel, 
79
                                                        GraphicsPanel graphicsPanel, 
80
                                                        EnhancedDialog enhancedDialog, 
81
                                                        PreviewFiltering filteredPreview) {
82
                this.selectorsPanel = selectorsPanel;
83
                this.graphicsPanel = graphicsPanel;
84
                this.enhancedDialog = enhancedDialog;
85
                this.filteredPreview = filteredPreview;
86
                status.getVisualStatus(((FLyrRasterSE) enhancedDialog.getLayer()));
87
                
88
                
89
                enhancedManager = new EnhancedHistogramController(graphicsPanel.getInputHistogram(), graphicsPanel.getOutputHistogram(), enhancedDialog);
90
                
91
                selectorsPanel.getHistogramType().addActionListener(this);
92
                selectorsPanel.getDrawType().addActionListener(this);
93
                selectorsPanel.getBand(null).addActionListener(this);
94
                selectorsPanel.getEnhancedType().addActionListener(this);
95
                graphicsPanel.getLevels().addActionListener(this);
96
                graphicsPanel.getRGB().addActionListener(this);
97
        }
98
        
99
        /*
100
         * (non-Javadoc)
101
         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
102
         */
103
        public void actionPerformed(ActionEvent e) {
104
                //Cambio del tipo de de dibujado del histograma
105
                if(e.getSource() == selectorsPanel.getDrawType()) {
106
                        if(((String)selectorsPanel.getDrawType().getSelectedItem()).equals("Fill")) {
107
                                graphicsPanel.getInputHistogram().setType(GraphicHistogram.TYPE_FILL);
108
                                graphicsPanel.getOutputHistogram().setType(GraphicHistogram.TYPE_FILL);
109
                        }
110
                        
111
                        if(((String)selectorsPanel.getDrawType().getSelectedItem()).equals("Line")) {
112
                                graphicsPanel.getInputHistogram().setType(GraphicHistogram.TYPE_LINE);
113
                                graphicsPanel.getOutputHistogram().setType(GraphicHistogram.TYPE_LINE);
114
                        }
115
                        graphicsPanel.getInputHistogram().getCanvas().repaint();
116
                        graphicsPanel.getOutputHistogram().getCanvas().repaint();
117
                }
118

    
119
                // Cambio el tipo de visualizacion del histograma
120
                if (e.getSource() == selectorsPanel.getHistogramType()) {
121
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals("Standard")) {
122
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_LINEAL);
123
                        }
124
                        
125
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals("Cumulative")) {
126
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_ACUMMULATED);
127
                        }
128
                        
129
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals("Logarithmic")) {
130
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_LOGARITHMIC);
131
                        }
132
                        
133
                        if (((String) selectorsPanel.getHistogramType().getSelectedItem()).equals("Cumulative Logarithmic")) {
134
                                graphicsPanel.getOutputHistogram().setHistogramType(GraphicHistogram.VIEW_ACUMMULATEDLOG);
135
                        }
136
                        graphicsPanel.getOutputHistogram().getCanvas().repaint();
137
                }
138

    
139
                // Seleccion de modo RGB o normal
140
                if (e.getSource() == graphicsPanel.getRGB()) {
141
                        graphicsPanel.updateHistogram();
142
                        updatePreview();
143
                }
144
                
145
                //Cambio de banda
146
                if(e.getSource() == selectorsPanel.getBand(null)) {
147
                        if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals("Red")) {
148
                                graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.RED);
149
                                graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.RED);
150
                        }
151
                        
152
                        if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals("Green")) {
153
                                graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.GREEN);
154
                                graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.GREEN);
155
                        }
156
                        
157
                        if(((String)selectorsPanel.getBand(null).getSelectedItem()).equals("Blue")) {
158
                                graphicsPanel.getInputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE);
159
                                graphicsPanel.getOutputHistogram().setHistogramDrawed(HistogramGraphicBase.BLUE);
160
                        }
161

    
162
                        updateTypeSelected();
163
                        
164
                        HistogramStatus status = graphicsPanel.getOutputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
165

    
166
                        switch (status.getGraphicHistogram().getType()) {
167
                                case GraphicHistogram.TYPE_FILL:
168
                                        selectorsPanel.getDrawType().setSelectedItem("Fill");
169
                                        break;
170
                                default:
171
                                        selectorsPanel.getDrawType().setSelectedItem("Line");
172
                                        break;
173
                        }
174

    
175
                        switch (status.getGraphicHistogram().getTypeViewed()) {
176
                                case GraphicHistogram.VIEW_ACUMMULATED:
177
                                        selectorsPanel.getHistogramType().setSelectedItem("Cumulative");
178
                                        break;
179
                                case GraphicHistogram.VIEW_LOGARITHMIC:
180
                                        selectorsPanel.getHistogramType().setSelectedItem("Logarithmic");
181
                                        break;
182
                                case GraphicHistogram.VIEW_ACUMMULATEDLOG:
183
                                        selectorsPanel.getHistogramType().setSelectedItem("Cumulative Logarithmic");
184
                                        break;
185
                                default:
186
                                        selectorsPanel.getHistogramType().setSelectedItem("Standard");
187
                                        break;
188
                        }
189
                }
190
                
191
                //Cambio de operaci?n
192
                if(e.getSource() == selectorsPanel.getEnhancedType()) {
193
                        graphicsPanel.setLevelsEnabled(false);
194
                        
195
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Lineal")) {
196
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_LINEAL);
197
                                updatePreview();
198
                        }
199
                        
200
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Gaussian")) {
201

    
202
                        }
203
                        
204
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Logaritmic")) {
205
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_LOGARIT);
206
                                updatePreview();
207
                        }
208
                        
209
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Exponential")) {
210
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_EXPONENT);
211
                                updatePreview();
212
                        }
213
                        
214
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Equalization")) {
215
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_NONE);
216
                                int[] renderBands = enhancedDialog.getLayer().getRender().getRenderBands();
217
                                String values = "";
218
                                for (int i = 0; i < renderBands.length; i++) 
219
                                        values += renderBands[i] + " ";
220
                                values = values.trim();
221
                                Params params = new Params();
222
                                params.setParam("Histogram", graphicsPanel.getHistogram(), -1, null);
223
                                params.setParam("RenderBands", values, -1, null);
224
                                params.setParam("EcualizedBands", new int[]{0, 1, 2}, -1, null);
225
                                                                
226
                                filteredPreview.addNewParam("equalization", params, EqualizationFilter.class);                                
227
                                updatePreview();
228
                        }
229
                        
230
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Square-root")) {
231
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_SQUARE_ROOT);
232
                                updatePreview();
233
                        }
234
                        
235
                        if(((String)selectorsPanel.getEnhancedType().getSelectedItem()).equals("Level-slice")) {
236
                                graphicsPanel.setLevelsEnabled(true);
237
                                graphicsPanel.getInputHistogram().setFunction(GraphicHistogram.FUNCTION_DENSITY);
238

    
239
                                // Establece el numero de niveles en el cuadro de texto
240
                                HistogramStatus status = graphicsPanel.getInputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
241
                                graphicsPanel.getLevels().setValue(new Long(((DensitySlicingLine) status.getBaseFunction()).getLevels()));
242
                                updatePreview();
243
                        }
244
                }
245
                
246
                //Cambio de tipo (estandar/acumulado)
247
                if(e.getSource() == selectorsPanel.getHistogramType()) {
248
                        if(((String)selectorsPanel.getHistogramType().getSelectedItem()).equals("Standard")) {
249
                                
250
                        }
251
                        
252
                        if(((String)selectorsPanel.getHistogramType().getSelectedItem()).equals("Cumulative")) {
253
                                
254
                        }
255
                }
256
                
257
                //Cambio en el n?mero de niveles
258
                if(e.getSource() == graphicsPanel.getLevels()) {
259
                        Long lValue = (Long)graphicsPanel.getLevels().getValue();
260
                        int value = lValue.intValue();
261
                        if(value > 30 || value < 2) {
262
                                RasterToolsUtil.messageBoxInfo(RasterToolsUtil.getText(this, "range_wrong") + " [2-30]", null);
263
                                if(value > 30)
264
                                        value = 30;
265
                                if(value < 2)
266
                                        value = 2;
267
                        }
268
                        graphicsPanel.getLevels().setValue(new Long(value));
269
                        try {
270
                                graphicsPanel.getInputHistogram().setLevel(value);
271
                                updatePreview();
272
                        } catch (NumberFormatException exc) {
273
                                //No asignamos el nivel
274
                        }
275
                }
276
        }
277
        
278
        /**
279
         * Actualiza el combo de EnhancedType para que este seleccionado siempre el
280
         * item que corresponde con la grafica mostrada en ese momento
281
         */
282
        private void updateTypeSelected() {
283
                HistogramStatus status = graphicsPanel.getInputHistogram().getHistogramStatus(HistogramGraphicBase.DRAWED);
284

    
285
                if (status.getBaseFunction().getClass().equals(DensitySlicingLine.class))
286
                        selectorsPanel.setSelectedEnhancedType("Level-slice");
287

    
288
                if (status.getBaseFunction().getClass().equals(StraightLine.class))
289
                        selectorsPanel.setSelectedEnhancedType("Lineal");
290

    
291
                if (status.getBaseFunction().getClass().equals(EqualizationFilter.class))
292
                        selectorsPanel.setSelectedEnhancedType("Equalization");
293

    
294
                if (status.getBaseFunction().getClass().equals(SquareRootPowLine.class))
295
                        selectorsPanel.setSelectedEnhancedType("Square-root");
296

    
297
                if (status.getBaseFunction().getClass().equals(LogaritmicExponentialLine.class)) {
298
                        if (((StraightLine) status.getBaseFunction()).getValueFunction() >= 0)
299
                                selectorsPanel.setSelectedEnhancedType("Logaritmic");
300
                        else
301
                                selectorsPanel.setSelectedEnhancedType("Exponential");
302
                }
303
        }
304
        
305
        /**
306
         * En la primera carga se define cada banda en los histogramas, para dejarlo en
307
         * su estado logico.
308
         * @param stretch
309
         * @param band
310
         */
311
        private void firstLoadBand(Stretch stretch, int band) {
312
                boolean firstBand = ((band == HistogramGraphicBase.GRAY) || (band == HistogramGraphicBase.RED));
313

    
314
                graphicsPanel.getInputHistogram().setHistogramDrawed(band);
315
                
316
                BaseFunction baseFunction = null;
317
                HistogramStatus status;
318
                status = graphicsPanel.getInputHistogram().getHistogramStatus(band);
319
                if (status == null)
320
                        return;
321
                
322
                switch (stretch.functionType) {
323
                        case 0:
324
                                if (firstBand) {
325
                                        selectorsPanel.getEnhancedType().setSelectedItem("Lineal");
326
                                        graphicsPanel.setLevelsEnabled(false);
327
                                }
328
                                baseFunction = new StraightLine(status.getBaseFunction().getColor());
329
                                ((StraightLine) baseFunction).clearSquares();
330
                                for (int i = 0; i < stretch.stretchIn.length; i++) {
331
                                        ((StraightLine) baseFunction).addSquare(
332
                                                (stretch.stretchIn[i] - stretch.minValue) / (stretch.maxValue - stretch.minValue),
333
                                                stretch.stretchOut[i] / 255.0D);
334
                                }
335
                                break;
336
                        case 1:
337
                                if (firstBand) {
338
                                        if (stretch.valueFunction >= 0)
339
                                                selectorsPanel.getEnhancedType().setSelectedItem("Logaritmic");
340
                                        else
341
                                                selectorsPanel.getEnhancedType().setSelectedItem("Exponential");
342
                                        graphicsPanel.setLevelsEnabled(false);
343
                                }
344
                                baseFunction = new LogaritmicExponentialLine(status.getBaseFunction().getColor(), stretch.valueFunction);
345
                                break;
346
                        case 2:
347
                                if (firstBand) {
348
                                        selectorsPanel.getEnhancedType().setSelectedItem("Square-root");
349
                                        graphicsPanel.setLevelsEnabled(false);
350
                                }
351
                                baseFunction = new SquareRootPowLine(status.getBaseFunction().getColor(), stretch.valueFunction);
352
                                break;
353
                        case 3:
354
                                if (firstBand) {
355
                                        selectorsPanel.getEnhancedType().setSelectedItem("Level-slice");
356
                                        graphicsPanel.setLevelsEnabled(true);
357
                                }
358
                                baseFunction = new DensitySlicingLine(status.getBaseFunction().getColor(), (int) stretch.valueFunction);
359
                                break;
360
                }
361
                if (baseFunction != null) {
362
                        status.setBaseFunction(baseFunction);
363
                        graphicsPanel.getInputHistogram().setHistogramDrawed(band);
364
                }
365
        }
366
        
367
        /**
368
         * En la primera carga se han de establecer todos los histogramas de entrada
369
         * a sus valores correspondientes segun el filtro.
370
         */
371
        public void firstLoad() {
372
                RasterFilterList rasterFilterList = ((FLyrRasterSE) enhancedDialog.getLayer()).getRenderFilterList();
373

    
374
                LinearStretchEnhancementFilter filter = (LinearStretchEnhancementFilter) rasterFilterList.getByName(LinearStretchEnhancementFilter.names[0]);
375
                if (filter != null) {
376
                        LinearStretchParams stretch = filter.getStretchs();
377
                        
378
                        firstLoadBand(stretch.blue, HistogramGraphicBase.BLUE);
379
                        firstLoadBand(stretch.green, HistogramGraphicBase.GREEN);
380
                        firstLoadBand(stretch.red, HistogramGraphicBase.RED);
381
                        firstLoadBand(stretch.red, HistogramGraphicBase.GRAY);
382
                        graphicsPanel.getRGB().setSelected(stretch.rgb);
383
                }
384
                graphicsPanel.getInputHistogram().repaint();
385
        }
386
        
387
        /**
388
         * Coge los datos que hay en los histogramas y los aplica a la vista previa
389
         */
390
        public void updatePreview() {
391
                enhancedManager.updatePreview();
392
                enhancedManager.updateHistogramOut();
393
        }
394

    
395
        /**
396
         * Coge los datos que hay en los histogramas y los aplica en el histograma de salida
397
         */
398
        private void updateHistogramOut() {
399
                updateTypeSelected();
400
                enhancedManager.updatePreview();
401
                enhancedManager.updateHistogramOut();
402
        }
403
        
404
        /*
405
         * (non-Javadoc)
406
         * @see org.gvsig.raster.beans.canvas.IGCanvasListener#actionDataChanged(org.gvsig.raster.beans.canvas.GCanvasEvent)
407
         */
408
        public void actionDataChanged(GCanvasEvent e) {
409
                if (e.getKey().equals("minmax")) {
410
                        updatePreview();
411
                        return;
412
                }
413
                if (e.getKey().equals("line")) {
414
                        updatePreview();
415
                        return;
416
                }
417
        }
418

    
419
        /*
420
         * (non-Javadoc)
421
         * @see org.gvsig.raster.beans.canvas.IGCanvasListener#actionDataDragged(org.gvsig.raster.beans.canvas.GCanvasEvent)
422
         */
423
        public void actionDataDragged(GCanvasEvent e) {
424
                if (e.getKey().equals("minmax")) {
425
                        updateHistogramOut();
426
                        return;
427
                }
428
                if (e.getKey().equals("line")) {
429
                        updateHistogramOut();
430
                        return;
431
                }
432
        }
433

    
434
        /*
435
         * (non-Javadoc)
436
         * @see org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener#actionButtonPressed(org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent)
437
         */
438
        public void actionButtonPressed(ButtonsPanelEvent e) {
439
                switch (e.getButton()) {
440
                        case ButtonsPanel.BUTTON_ACCEPT:
441
                                apply();
442
                                enhancedDialog.close();
443
                                break;
444
                        case ButtonsPanel.BUTTON_CANCEL:
445
                                cancel();
446
                                enhancedDialog.close();
447
                                break;
448
                        case ButtonsPanel.BUTTON_APPLY:
449
                                apply();
450
                                break;
451
                }
452
        }
453
        
454
        /**
455
         * Que acciones se ejecutaran al haber presionado el bot?n aceptar o aplicar
456
         */
457
        public void apply() {
458
                IRasterDataSource raster = ((FLyrRasterSE) enhancedDialog.getLayer()).getDataSource();
459
                if (raster == null)
460
                        return;
461

    
462
                String path = null;
463
                if (!enhancedDialog.getNewOrSaveLayerPanel().isOnlyViewSelected()) {
464
                        path = enhancedDialog.getNewOrSaveLayerPanel().getFileSelected();
465
                        if (path == null)
466
                                return;
467
                }
468

    
469
                //Rendering rendering = ((FLyrRasterSE) getFilterPanel().getLayer()).getRender();
470
                IRasterRendering rendering = (IRasterRendering) enhancedDialog.getLayer();
471

    
472
                // Array para guardar los filtros que se van a usar en forma de ParamStruct
473
                ArrayList listFilterUsed = enhancedDialog.getFilteredPreview().applyFilters(rendering);
474

    
475
                if (enhancedDialog.getNewOrSaveLayerPanel().isOnlyViewSelected()) {
476
                        try {
477
                                FilterProcess.addSelectedFilters(rendering.getRenderFilterList(), listFilterUsed);
478
                                ((FLyrRasterSE) enhancedDialog.getLayer()).setRenderFilterList(rendering.getRenderFilterList());
479
                                enhancedDialog.getLayer().getMapContext().invalidate();
480
                        } catch (FilterTypeException e) {
481
                                RasterToolsUtil.messageBoxError(PluginServices.getText(this, "error_adding_filters"), this, e);
482
                        }
483
                } else {
484
                        FilterProcess filterProcess = new FilterProcess();
485
                        filterProcess.setActions(this);
486
                        filterProcess.addParam("rendering", rendering);
487
                        filterProcess.addParam("filename", path);
488
                        filterProcess.addParam("rasterdatasource", raster);
489
                        filterProcess.addParam("listfilterused", listFilterUsed);
490
                        filterProcess.addParam("onlyrenderbands", Boolean.TRUE);
491
                        filterProcess.start();
492
                }
493
        }
494
        
495
        /**
496
         * Volvemos todo a la normalidad cuando se cancela
497
         */
498
        public void cancel() {
499
                if (enhancedDialog.getLayer() != null) {
500
                        status.restoreVisualStatus(enhancedDialog.getLayer());
501
                        enhancedDialog.getLayer().getMapContext().invalidate();
502
                }
503
        }
504
        
505

    
506
        /**
507
         * Acciones que se realizan al finalizar de crear los recortes de imagen.
508
         * Este m?todo es llamado por el thread TailRasterProcess al finalizar.
509
         */
510
        public void loadLayerInToc(String fileName) {
511
                if (!enhancedDialog.getNewOrSaveLayerPanel().isNewLayerSelected())
512
                        return;
513
                if(!new File(fileName).exists())
514
                        return;
515
                try {
516
                        RasterToolsUtil.loadLayer(enhancedDialog.getViewName(), fileName, null);
517
                } catch (RasterNotLoadException e) {
518
                        RasterToolsUtil.messageBoxError("error_cargar_capa", this, e);
519
                }
520

    
521
                if(enhancedDialog != null)
522
                        enhancedDialog.getNewOrSaveLayerPanel().updateNewLayerText();
523
        }
524

    
525
        /*
526
         * (non-Javadoc)
527
         * @see org.gvsig.raster.IProcessActions#end(java.lang.Object)
528
         */
529
        public void end(Object param) {
530
                loadLayerInToc((String) param);
531
        }
532
        
533
        public void interrupted() {}
534
}