Revision 19295 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/filter/ui/FilterDialog.java

View differences:

FilterDialog.java
1 1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2 2
 *
3
 * Copyright (C) 2006 IVER T.I. and Generalitat Valenciana.
3
 * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
4 4
 *
5 5
 * This program is free software; you can redistribute it and/or
6 6
 * modify it under the terms of the GNU General Public License
......
20 20

  
21 21
import java.awt.BorderLayout;
22 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 23

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

  
38
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
39 26
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
40 27
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
41 28
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
42
import org.gvsig.gui.beans.propertiespanel.PropertiesComponent;
43
import org.gvsig.gui.beans.treelist.TreeListContainer;
44 29
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 30

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

  
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 46
	/**
91 47
	 * Controla si se ha presionado el boton aceptar para el cerrado de la ventana
92 48
	 */
93
	private boolean      accepted = false;
49
	private boolean     accepted    = false;
94 50

  
95 51
	/**
96 52
	 * Constructor
97
	 * @param width Ancho del panel
98
	 * @param height Alto del panel
53
	 * @param width Ancho
54
	 * @param height Alto
99 55
	 */
100 56
	public FilterDialog(FLayer layer, int width, int height) {
101
		setLayer(layer);
102
		initialize();
57
		this.layer = layer;
58
		setPreferredSize(new Dimension(width, height));
103 59
		setSize(width, height);
60
		setLayout(new BorderLayout(5, 5));
61
		add(getFilterPanel(), java.awt.BorderLayout.CENTER);
104 62
	}
105 63
	
106
	private void initialize() {
107
		translate();
108
		setLayout(new BorderLayout());
109
		add(getPreviewBasePanel(), BorderLayout.CENTER);
110
	}
111
	
112 64
	/**
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 65
	 * Obtiene el panel con el histograma
125 66
	 * @return HistogramPanel
126 67
	 */
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);
68
	private FilterPanel getFilterPanel() {
69
		if (filterPanel == null) {
70
			filterPanel = new FilterPanel(layer, this);
134 71
		}
135
		return previewBasePanel;
72
		return filterPanel;
136 73
	}
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 74
	
278 75
	/**
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 76
	 * Acciones a ejecutar cuando se cancela
305 77
	 */
306 78
	private void close() {
307 79
		try {
308
			RasterLibrary.removeOnlyLayerNameListener(getMainPanel());
80
			RasterLibrary.removeOnlyLayerNameListener(getFilterPanel().getMainPanel());
309 81
			PluginServices.getMDIManager().closeWindow(this);
310 82
		} catch (ArrayIndexOutOfBoundsException e) {
311 83
			//Si la ventana no se puede eliminar no hacemos nada
312 84
		}
313 85
	}
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 86
	
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 87
	/*
629 88
	 * (non-Javadoc)
630 89
	 * @see com.iver.andami.ui.mdiManager.IWindow#getWindowInfo()
......
641 100

  
642 101
	/*
643 102
	 * (non-Javadoc)
103
	 * @see com.iver.andami.ui.mdiManager.IWindowListener#windowClosed()
104
	 */
105
	public void windowClosed() {
106
		if (!accepted) {
107
			getFilterPanel().restoreFilters();
108
			getFilterPanel().cancel();
109
		}
110
	}
111
	
112
	/*
113
	 * (non-Javadoc)
644 114
	 * @see org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener#actionButtonPressed(org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent)
645 115
	 */
646 116
	public void actionButtonPressed(ButtonsPanelEvent e) {
647 117
		// Restauramos la vista con los filtros originales antes de cualquier acci?n
648
		restoreFilters();
118
		getFilterPanel().restoreFilters();
649 119
	
650 120
		// Al pulsar Aceptar o Aplicar se ejecuta el aceptar del panel
651 121
		if (e.getButton() == ButtonsPanel.BUTTON_APPLY || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
652
			accept();
122
			getFilterPanel().accept();
653 123
		}
654 124
	
655 125
		// Al pulsar Cancelar la ventana se cierra y se refresca la vista
656 126
		if (e.getButton() == ButtonsPanel.BUTTON_CANCEL) {
657
			cancel();
127
			getFilterPanel().cancel();
658 128
			close();
659 129
		}
660 130
	
......
664 134
			close();
665 135
		}
666 136
	}
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

  
137
	
687 138
	public void windowActivated() {}
688 139
}

Also available in: Unified diff