Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / filter / ui / FilterDialog.java @ 19285

History | View | Annotate | Download (21.2 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2006 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.filter.ui;
20

    
21
import java.awt.BorderLayout;
22
import java.awt.Dimension;
23
import java.awt.GridBagConstraints;
24
import java.awt.GridBagLayout;
25
import java.awt.Insets;
26
import java.awt.event.ItemEvent;
27
import java.awt.event.ItemListener;
28
import java.util.ArrayList;
29
import java.util.Hashtable;
30

    
31
import javax.swing.BorderFactory;
32
import javax.swing.ButtonGroup;
33
import javax.swing.DefaultListModel;
34
import javax.swing.JCheckBox;
35
import javax.swing.JPanel;
36
import javax.swing.JRadioButton;
37

    
38
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
39
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
40
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
41
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
42
import org.gvsig.gui.beans.propertiespanel.PropertiesComponent;
43
import org.gvsig.gui.beans.treelist.TreeListContainer;
44
import org.gvsig.raster.RasterLibrary;
45
import org.gvsig.raster.beans.previewbase.IPreviewRenderProcess;
46
import org.gvsig.raster.beans.previewbase.PreviewBasePanel;
47
import org.gvsig.raster.dataset.Params;
48
import org.gvsig.raster.dataset.Params.Param;
49
import org.gvsig.raster.grid.filter.FilterTypeException;
50
import org.gvsig.raster.grid.filter.RasterFilter;
51
import org.gvsig.raster.grid.filter.RasterFilterList;
52
import org.gvsig.raster.grid.filter.RasterFilterListManager;
53
import org.gvsig.raster.grid.render.Rendering;
54
import org.gvsig.raster.hierarchy.IRasterRendering;
55
import org.gvsig.raster.util.RasterToolsUtil;
56
import org.gvsig.rastertools.filter.FilterListener;
57
import org.gvsig.rastertools.filter.FilterListener.ParamStruct;
58

    
59
import com.iver.andami.PluginServices;
60
import com.iver.andami.ui.mdiManager.IWindow;
61
import com.iver.andami.ui.mdiManager.IWindowListener;
62
import com.iver.andami.ui.mdiManager.WindowInfo;
63
import com.iver.cit.gvsig.fmap.layers.FLayer;
64
import com.iver.cit.gvsig.project.documents.view.gui.View;
65
/**
66
 * Dialogo para los filtros de raster.
67
 *
68
 * @version 30/05/2007
69
 * @author Nacho Brodin <brodin_ign@gva.es>
70
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
71
 */
72
public class FilterDialog extends JPanel implements IWindow, IWindowListener, IPreviewRenderProcess, ButtonsPanelListener {
73
        private static final long serialVersionUID = 7152780112689637266L;
74

    
75
        private PreviewBasePanel    previewBasePanel    = null;
76
        private FLayer              layer               = null;
77
        private FilterListener      filterListener      = null;
78
        private PropertiesComponent propertiesComponent = null;
79

    
80
        private ArrayList           filterStatus        = null;
81
        private JRadioButton        jRBFileGenerate     = null;
82
        private JCheckBox           jCBShowFilters      = null;
83
        private JRadioButton        jRBOnlyView         = null;
84
        private JRadioButton        jRBNewLayer         = null;
85
        private String              viewName            = null;
86
        private JRadioButton        jRBOpenMemory       = null;
87
        private JPanel              jPanelOptions       = null;
88
        private FilterMainPanel     filterMain          = null;
89

    
90
        /**
91
         * Controla si se ha presionado el boton aceptar para el cerrado de la ventana
92
         */
93
        private boolean      accepted = false;
94

    
95
        /**
96
         * Constructor
97
         * @param width Ancho del panel
98
         * @param height Alto del panel
99
         */
100
        public FilterDialog(FLayer layer, int width, int height) {
101
                setLayer(layer);
102
                initialize();
103
                setSize(width, height);
104
        }
105
        
106
        private void initialize() {
107
                translate();
108
                setLayout(new BorderLayout());
109
                add(getPreviewBasePanel(), BorderLayout.CENTER);
110
        }
111
        
112
        /**
113
         * Seccion donde ir?n todas las traducciones invariables del componente
114
         */
115
        private void translate() {
116
                getCBShowFilters().setText(PluginServices.getText(this, "aplicar_vista_previa"));
117
                getRadioOnlyView().setText(PluginServices.getText(this, "solo_visualizacion"));
118
                getRadioFileGenerate().setText(PluginServices.getText(this, "generar_fichero"));
119
                getRadioNewLayer().setText(PluginServices.getText(this, "capa_nueva"));
120
                getRadioOpenMemory().setText(PluginServices.getText(this, "abrir_memoria"));
121
        }
122
        
123
        /**
124
         * Obtiene el panel con el histograma
125
         * @return HistogramPanel
126
         */
127
        private PreviewBasePanel getPreviewBasePanel() {
128
                if (previewBasePanel == null) {
129
                        ArrayList list = new ArrayList();
130
                        list.add(getMainPanel());
131
                        previewBasePanel = new PreviewBasePanel(list, null, panelOptions(), this, (FLyrRasterSE) layer);
132
                        previewBasePanel.setPreviewSize(new Dimension(190, 190));
133
                        previewBasePanel.addButtonPressedListener(this);
134
                }
135
                return previewBasePanel;
136
        }
137

    
138
        /**
139
         * Devuelve el componente <code>FilterListener</code>, que contendr? el
140
         * proceso en si del panel
141
         */
142
        private FilterListener getFilterListener() {
143
                if (filterListener == null) {
144
                        filterListener = new FilterListener(this);
145
                }
146

    
147
                return filterListener;
148
        }
149

    
150
        /**
151
         * Devuelve el panel de Opciones, en caso de no existir, lo crea.
152
         * @return
153
         */
154
        private JPanel panelOptions() {
155
                if (jPanelOptions == null) {
156
                        JPanel jPanel2 = null;
157

    
158
                        ButtonGroup buttonGroup1;
159
                        ButtonGroup buttonGroup2;
160

    
161
                        GridBagConstraints gridBagConstraints;
162

    
163
                        buttonGroup1 = new javax.swing.ButtonGroup();
164
                        buttonGroup2 = new ButtonGroup();
165
                        jPanelOptions = new JPanel();
166
                        jPanel2 = new JPanel();
167

    
168
                        jPanelOptions.setLayout(new GridBagLayout());
169

    
170
                        gridBagConstraints = new GridBagConstraints();
171
                        gridBagConstraints.gridx = 0;
172
                        gridBagConstraints.gridy = 1;
173
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
174
                        gridBagConstraints.insets = new Insets(2, 2, 2, 2);
175
                        jPanelOptions.add(getCBShowFilters(), gridBagConstraints);
176

    
177
                        buttonGroup1.add(getRadioOnlyView());
178

    
179
                        gridBagConstraints = new GridBagConstraints();
180
                        gridBagConstraints.gridx = 0;
181
                        gridBagConstraints.gridy = 2;
182
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
183
                        gridBagConstraints.insets = new Insets(3, 3, 3, 3);
184
                        jPanelOptions.add(getRadioOnlyView(), gridBagConstraints);
185

    
186
                        buttonGroup1.add(getRadioNewLayer());
187

    
188
                        gridBagConstraints = new GridBagConstraints();
189
                        gridBagConstraints.gridx = 0;
190
                        gridBagConstraints.gridy = 3;
191
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
192
                        gridBagConstraints.insets = new Insets(3, 3, 3, 3);
193
                        jPanelOptions.add(getRadioNewLayer(), gridBagConstraints);
194
                        
195
                        jPanel2.setLayout(new GridBagLayout());
196

    
197
                        jPanel2.setBorder(BorderFactory.createTitledBorder(""));
198
                        buttonGroup2.add(getRadioFileGenerate());
199
                        gridBagConstraints = new GridBagConstraints();
200
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
201
                        gridBagConstraints.insets = new Insets(3, 3, 3, 3);
202
                        gridBagConstraints.weightx = 1.0;
203
                        jPanel2.add(getRadioFileGenerate(), gridBagConstraints);
204

    
205
                        buttonGroup2.add(getRadioOpenMemory());
206
                        gridBagConstraints = new GridBagConstraints();
207
                        gridBagConstraints.gridx = 0;
208
                        gridBagConstraints.gridy = 1;
209
                        gridBagConstraints.anchor = GridBagConstraints.WEST;
210
                        gridBagConstraints.insets = new Insets(3, 3, 3, 3);
211
                        jPanel2.add(getRadioOpenMemory(), gridBagConstraints);
212

    
213
                        gridBagConstraints = new GridBagConstraints();
214
                        gridBagConstraints.gridx = 0;
215
                        gridBagConstraints.gridy = 4;
216
                        gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
217
                        gridBagConstraints.insets = new Insets(3, 3, 3, 3);
218
                        jPanelOptions.add(jPanel2, gridBagConstraints);
219

    
220
                        gridBagConstraints = new GridBagConstraints();
221
                        gridBagConstraints.gridx = 0;
222
                        gridBagConstraints.gridy = 5;
223
                        gridBagConstraints.weightx = 1.0;
224
                        gridBagConstraints.weighty = 1.0;
225
                        jPanelOptions.add(new JPanel(), gridBagConstraints);
226
                }
227

    
228
                return jPanelOptions;
229
        }
230

    
231
        /**
232
         * Construye el arbol para el men? de filtros disponibles
233
         */
234
        private void menuBuild() {
235
                Hashtable keys = new Hashtable();
236
                RasterFilterList filterList = ((FLyrRasterSE) layer).getRenderFilterList();
237
                // Creamos un stackManager para recorrer los filtros registrados en gvSIG
238
                RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
239

    
240
                int count = 0;
241
                RasterFilter obj = null;
242

    
243
                for (int i = 0; i < stackManager.getRasterFilterList().size(); i++) {
244
                        Class classFilter = (Class) stackManager.getRasterFilterList().get(i);
245

    
246
                        try {
247
                                obj = (RasterFilter) classFilter.newInstance();
248

    
249
                                initFilter(obj);
250
                                
251
                                if (!obj.isVisible())
252
                                        continue;
253
                                
254
                                // Crear grupos de los filtros
255
                                if (!keys.containsKey(PluginServices.getText(this, new String(obj.getGroup())))) {
256
                                        keys.put(PluginServices.getText(this, new String(obj.getGroup())), obj);
257
                                        getMainPanel().getTreeListContainer().addClass(PluginServices.getText(this, new String(obj.getGroup())), count);
258
                                        count++;
259
                                                
260
                                }
261
                                // Crear cada entrada de los filtro
262
                                String[] names = obj.getNames();
263
                                for (int j = 0; j < names.length; j++) {
264
                                        obj.setName(names[j]);
265
                                        getFilterListener().addNewParam(names[j], initFilterParam(obj.getUIParams(names[j])), classFilter);
266
                                        getMainPanel().getTreeListContainer().addEntry(PluginServices.getText(this, names[j]), PluginServices.getText(this, obj.getGroup()), names[j]);
267
                                }
268
                        } catch (InstantiationException e) {
269
                                RasterToolsUtil.debug("No se ha podido meter el filtro en la lista", this, e);
270
                        } catch (IllegalAccessException e) {
271
                                RasterToolsUtil.debug("No se ha podido meter el filtro en la lista", this, e);
272
                        }
273
                }
274

    
275
                getMainPanel().getTreeListContainer().getTree().expandRow(0);
276
        }
277
        
278
        /**
279
         * Pasamos los parametros basicos a un filtro
280
         * @param filter
281
         */
282
        private void initFilter(RasterFilter filter) {
283
                if (layer != null) {
284
                        filter.getEnv().put("MultiRasterDataset", ((FLyrRasterSE) layer).getDataSource());
285
                        filter.getEnv().put("initRaster", layer);
286
                }
287
        }
288
        
289
        /**
290
         * Sirve para a?adir mas parametros genericos por defecto al panel, de momento
291
         * solo he puesto para activar o desactivar un filtro.
292
         * @param params
293
         * @return
294
         */
295
        private Params initFilterParam(Params params) {
296
                params.setParam("enabled", new Boolean(true), Params.CHECK, null);
297
                Param param = params.getParamById("enabled");
298
                params.getParams().remove(params.getParams().size() - 1);
299
                params.getParams().add(0, param);
300
                return params;
301
        }
302
        
303
        /**
304
         * Acciones a ejecutar cuando se cancela
305
         */
306
        private void close() {
307
                try {
308
                        RasterLibrary.removeOnlyLayerNameListener(getMainPanel());
309
                        PluginServices.getMDIManager().closeWindow(this);
310
                } catch (ArrayIndexOutOfBoundsException e) {
311
                        //Si la ventana no se puede eliminar no hacemos nada
312
                }
313
        }
314

    
315
        /**
316
         * Poner los estados de los RadioButton en caso de que cambien de valor
317
         * @param evt
318
         */
319
        private void jRBNewLayerStateChanged(ItemEvent evt) {
320
                if (getRadioNewLayer().getSelectedObjects() != null) {
321
                        getRadioFileGenerate().setEnabled(true);
322
                        getRadioOpenMemory().setEnabled(true);
323
                        if (getRadioOpenMemory().getSelectedObjects() != null)
324
                                getMainPanel().setFilenameEnabled(true);
325
                        else
326
                                getMainPanel().setFilenameEnabled(false);
327
                } else {
328
                        getRadioFileGenerate().setEnabled(false);
329
                        getRadioOpenMemory().setEnabled(false);
330
                        getMainPanel().setFilenameEnabled(false);
331
                }
332
        }
333

    
334
        /**
335
         * Poner los estados de los RadioButton en caso de que cambien de valor
336
         * @param evt
337
         */
338
        private void jRBOpenMemoryStateChanged(ItemEvent evt) {
339
                if (getRadioOpenMemory().getSelectedObjects() != null) {
340
                        getMainPanel().setFilenameEnabled(true);
341
                } else {
342
                        getMainPanel().setFilenameEnabled(false);
343
                }
344
        }
345

    
346
        /**
347
         * Comprueba que el nombre del filtro esta cargado en las extensiones
348
         * @param filter
349
         * @return
350
         */
351
        private boolean hasThisFilter(String filter) {
352
                RasterFilterList filterList = new RasterFilterList();
353
                RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
354
        
355
                boolean error;
356
                RasterFilter obj = null;
357
        
358
                for (int i = 0; i < stackManager.getRasterFilterList().size(); i++) {
359
                        Class classFilter = (Class) stackManager.getRasterFilterList().get(i);
360
                        error = true;
361
        
362
                        try {
363
                                obj = (RasterFilter) classFilter.newInstance();
364
                                error = false;
365
                        } catch (InstantiationException e) {
366
                        } catch (IllegalAccessException e) {
367
                        }
368
        
369
                        if (!error) {
370
                                String[] names = obj.getNames();
371
                                for (int j = 0; j < names.length; j++)
372
                                        if (filter.equals(names[j]))
373
                                                return true;
374
                        }
375
                }
376
                return false;
377
        }
378

    
379
        /**
380
         * Definir el FLayer del panel, haciendo todas las cargas necesarias despues
381
         * de especificarlo.
382
         * @param layer
383
         */
384
        private void setLayer(FLayer layer) {
385
                if (layer == null)
386
                        return;
387

    
388
                this.layer = layer;
389
                getPreviewBasePanel().setLayer((FLyrRasterSE) layer);
390
        
391
                // Construimos el arbol de filtros
392
                menuBuild();
393
        
394
                View view = (View) PluginServices.getMDIManager().getActiveWindow();
395
                viewName = PluginServices.getMDIManager().getWindowInfo(view).getTitle();
396
        
397
                //Comprobamos que el raster de salida no exceda los 4GB que es el m?ximo 
398
                //admisible por un TIFF. Si es as? se hace un setCompress para salvar en JPEG2000
399
                long sizeB = (long)((((FLyrRasterSE) layer).getPxWidth() * ((FLyrRasterSE) layer).getPxWidth() * ((FLyrRasterSE) layer).getBandCount())); 
400
                int sizeMB = (int)(sizeB / 1048576);
401
                if(sizeMB >= 4096) {
402
                        RasterToolsUtil.messageBoxInfo("file_too_big", this);
403
                        filterListener.setCompress(true);
404
                }
405
        
406
                RasterFilterList rfl = ((FLyrRasterSE) layer).getRenderFilterList();
407
                filterStatus = rfl.getStatusCloned();
408
        
409
                //Carga el listado de filtros que ya estaban aplicados en la capa al abrir
410
                 
411
                int i = 0;
412
                boolean filters = false;
413
                while (rfl.get(i) != null) {
414
                        DefaultListModel list = (DefaultListModel) getMainPanel().getTreeListContainer().getListModel();
415
                        if (rfl.get(i).isVisible() && hasThisFilter(rfl.get(i).getName())) {
416
                                list.addElement(PluginServices.getText(this, rfl.get(i).getName()));
417
                                for (int j = 0; j < getFilterListener().getParamsList().size(); j++) {
418
                                        if (((ParamStruct) getFilterListener().getParamsList().get(j)).getFilterName().equals(rfl.get(i).getName())) {
419
                                                filters = true;
420
                                                initFilter(rfl.get(i));
421
                                                ((ParamStruct) getFilterListener().getParamsList().get(j)).setFilterParam(initFilterParam(rfl.get(i).getUIParams(rfl.get(i).getName())));
422
                                        }
423
                                }
424
                        }
425
                        i++;
426
                }
427
        
428
                // Si existen filtros ya en la capa, pondremos los RadioButton para que
429
                // los cambios se hagan sobre la visualizaci?n
430
                if (filters)
431
                        getRadioOnlyView().setSelected(true);
432
        
433
                // Selecciona el primer item del arbol
434
                TreeListContainer lc = getMainPanel().getTreeListContainer();
435
                lc.getTree().expandRow(1);
436
                lc.getTree().setSelectionInterval(2, 2);
437
        }
438

    
439
        public FilterMainPanel getMainPanel() {
440
                if (filterMain == null) {
441
                        filterMain = new FilterMainPanel(getFilterListener());
442
                }
443
                return filterMain;
444
        }
445

    
446
        /**
447
         * Volvemos todo a la normalidad cuando se cancela
448
         */
449
        public void cancel() {
450
                if (layer != null)
451
                        layer.getMapContext().invalidate();
452
        }
453

    
454
        /**
455
         * Cuando se aceptan los cambios en el panel ejecutaremos el aceptar del
456
         * listener
457
         */
458
        public void accept() {
459
                filterListener.accept();
460
        }
461

    
462
        /**
463
         * Volvemos todo a la normalidad cuando se cancela
464
         */
465
        public void restoreFilters() {
466
                Rendering rendering = ((FLyrRasterSE) layer).getRender();
467
                rendering.getFilterList().setStatus(getFilterStatus());
468
        }
469
        
470
        /**
471
         * Obtener el PropertiesComponent del panel de filtros, en caso de no existir,
472
         * lo crea.
473
         * @return
474
         */
475
        public PropertiesComponent getPropertiesComponent() {
476
                if (propertiesComponent == null) {
477
                        propertiesComponent = new PropertiesComponent();
478
                        getMainPanel().getCentralPanel().add(propertiesComponent, BorderLayout.CENTER);
479

    
480
                        propertiesComponent.addStateChangedListener(getFilterListener());
481
                }
482
                return propertiesComponent;
483
        }
484

    
485
        /**
486
         * Asignar un nuevo componente de PropertiesComponent, eliminando el anterior
487
         * que hubiera.
488
         * @param component
489
         * @param name
490
         */
491
        public void setNewPropertiesComponent(PropertiesComponent component, String name) {
492
                getPropertiesComponent().setVisible(false);
493
                this.remove(propertiesComponent);
494
                propertiesComponent = null;
495
                propertiesComponent = component;
496
                getMainPanel().getCentralPanel().add(propertiesComponent, BorderLayout.CENTER);
497
                propertiesComponent.addStateChangedListener(getFilterListener());
498
                setTitle(name);
499
                this.validate();
500
        }
501
        
502

    
503
        /**
504
         * Asigna el t?tulo al panel
505
         * @param title T?tulo del panel
506
         */
507
        public void setTitle(String title) {
508
                getPropertiesComponent().setBorder(BorderFactory.createTitledBorder(null, PluginServices.getText(this, "filtro_de") + " " + PluginServices.getText(this, title), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
509
        }
510
        
511
        /**
512
         * Devuelve el arrayList de filtros inicial
513
         * @return
514
         */
515
        public ArrayList getFilterStatus() {
516
                return filterStatus;
517
        }
518

    
519
        /**
520
         * Devuelve el JRadioButton de generar fichero
521
         * @return
522
         */
523
        public JRadioButton getRadioFileGenerate() {
524
                if (jRBFileGenerate == null) {
525
                        jRBFileGenerate = new JRadioButton();
526
                        jRBFileGenerate.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
527
                        jRBFileGenerate.setMargin(new Insets(0, 0, 0, 0));
528
                }
529
                return jRBFileGenerate;
530
        }
531
        
532
        /**
533
         * Actualizamos la vista previa
534
         */
535
        public void refreshPreview() {
536
                getPreviewBasePanel().refreshPreview();
537
        }
538
        
539
        /**
540
         * Devuelve el FLayer asignado al panel
541
         * @return
542
         */
543
        public FLayer getLayer() {
544
                return layer;
545
        }
546
        
547

    
548
        /**
549
         * @return the jLabelShowFilters
550
         */
551
        public JCheckBox getCBShowFilters() {
552
                if (jCBShowFilters == null) {
553
                        jCBShowFilters = new JCheckBox();
554
                        jCBShowFilters.addActionListener(getFilterListener());
555
                        jCBShowFilters.setSelected(true);
556
                }
557
                return jCBShowFilters;
558
        }
559

    
560
        /**
561
         * Devuelve el JRadioButton de Solo vista
562
         * @return
563
         */
564
        public JRadioButton getRadioOnlyView() {
565
                if (jRBOnlyView == null) {
566
                        jRBOnlyView = new JRadioButton();
567
                        jRBOnlyView.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
568
                        jRBOnlyView.setMargin(new Insets(0, 0, 0, 0));
569
                }
570
                return jRBOnlyView;
571
        }
572
        
573
        /**
574
         * Devuelve el JRadioButton de nueva capa
575
         * @return
576
         */
577
        public JRadioButton getRadioNewLayer() {
578
                if (jRBNewLayer == null) {
579
                        jRBNewLayer = new JRadioButton();
580
                        jRBNewLayer.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
581
                        jRBNewLayer.setMargin(new Insets(0, 0, 0, 0));
582
                        jRBNewLayer.addItemListener(new ItemListener() {
583
                                public void itemStateChanged(ItemEvent evt) {
584
                                        jRBNewLayerStateChanged(evt);
585
                                }
586
                        });
587
                        jRBNewLayer.setSelected(true);
588
                }
589
                return jRBNewLayer;
590
        }
591

    
592
        /**
593
         * Devuelve el JRadioButton de Abrir en memoria
594
         * @return
595
         */
596
        public JRadioButton getRadioOpenMemory() {
597
                if (jRBOpenMemory == null) {
598
                        jRBOpenMemory = new JRadioButton();
599
                        jRBOpenMemory.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
600
                        jRBOpenMemory.setMargin(new Insets(0, 0, 0, 0));
601

    
602
                        jRBOpenMemory.addItemListener(new ItemListener() {
603
                                public void itemStateChanged(ItemEvent evt) {
604
                                        jRBOpenMemoryStateChanged(evt);
605
                                }
606
                        });
607
                        jRBOpenMemory.setSelected(true);
608
                }
609
                return jRBOpenMemory;
610
        }
611

    
612
        /**
613
         * Obtiene el nombre de la vista
614
         * @return
615
         */
616
        public String getViewName() {
617
                return viewName;
618
        }
619

    
620
        /**
621
         * Especificar el nombre de la nueva capa para el recuadro de texto asign?ndo
622
         * en cada llamada un nombre consecutivo.
623
         */
624
        public void updateNewLayerText() {
625
                getMainPanel().updateNewLayerText();
626
        }
627

    
628
        /*
629
         * (non-Javadoc)
630
         * @see com.iver.andami.ui.mdiManager.IWindow#getWindowInfo()
631
         */
632
        public WindowInfo getWindowInfo() {
633
                WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODELESSDIALOG | WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE);
634
                if (layer != null)
635
                        m_viewinfo.setAdditionalInfo(layer.getName());
636
                m_viewinfo.setTitle(PluginServices.getText(this, "filtros"));
637
                m_viewinfo.setHeight(this.getHeight());
638
                m_viewinfo.setWidth(this.getWidth());
639
                return m_viewinfo;
640
        }
641

    
642
        /*
643
         * (non-Javadoc)
644
         * @see org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener#actionButtonPressed(org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent)
645
         */
646
        public void actionButtonPressed(ButtonsPanelEvent e) {
647
                // Restauramos la vista con los filtros originales antes de cualquier acci?n
648
                restoreFilters();
649
        
650
                // Al pulsar Aceptar o Aplicar se ejecuta el aceptar del panel
651
                if (e.getButton() == ButtonsPanel.BUTTON_APPLY || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
652
                        accept();
653
                }
654
        
655
                // Al pulsar Cancelar la ventana se cierra y se refresca la vista
656
                if (e.getButton() == ButtonsPanel.BUTTON_CANCEL) {
657
                        cancel();
658
                        close();
659
                }
660
        
661
                // Al pulsar Aceptar simplemente la ventana se cierra
662
                if (e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
663
                        accepted = true;
664
                        close();
665
                }
666
        }
667

    
668
        /*
669
         * (non-Javadoc)
670
         * @see com.iver.andami.ui.mdiManager.IWindowListener#windowClosed()
671
         */
672
        public void windowClosed() {
673
                if (!accepted) {
674
                        restoreFilters();
675
                        cancel();
676
                }
677
        }
678

    
679
        /*
680
         * (non-Javadoc)
681
         * @see org.gvsig.raster.beans.previewbase.IPreviewRenderProcess#process(org.gvsig.raster.hierarchy.IRasterRendering)
682
         */
683
        public void process(IRasterRendering rendering) throws FilterTypeException {
684
                getFilterListener().drawImage(rendering);
685
        }
686

    
687
        public void windowActivated() {}
688
}