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

View differences:

FilterDialog.java
19 19
package org.gvsig.rastertools.filter.ui;
20 20

  
21 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;
22 30

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

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

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

  
45
	private FilterPanel	 filterPanel = null;
46
	private FLayer       lyr = null;
75
	private PreviewBasePanel    previewBasePanel    = null;
76
	private FLayer              layer               = null;
77
	private FilterListener      filterListener      = null;
78
	private PropertiesComponent propertiesComponent = null;
47 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

  
48 90
	/**
49 91
	 * Controla si se ha presionado el boton aceptar para el cerrado de la ventana
50 92
	 */
......
56 98
	 * @param height Alto del panel
57 99
	 */
58 100
	public FilterDialog(FLayer layer, int width, int height) {
59
		this.lyr = layer;
60
		this.setSize(width, height);
61
		this.setLayout(new BorderLayout());
62
		this.add(getFilterPanel(), BorderLayout.CENTER);
63
		this.setLayer(lyr);
101
		setLayer(layer);
102
		initialize();
103
		setSize(width, height);
64 104
	}
65

  
105
	
106
	private void initialize() {
107
		translate();
108
		setLayout(new BorderLayout());
109
		add(getPreviewBasePanel(), BorderLayout.CENTER);
110
	}
111
	
66 112
	/**
67
	 * Definir el layer a tratar para el filterPanel
68
	 * @param layer
113
	 * Seccion donde ir?n todas las traducciones invariables del componente
69 114
	 */
70
	private void setLayer(FLayer layer) {
71
		getFilterPanel().setLayer(layer);
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"));
72 121
	}
73

  
122
	
74 123
	/**
75
	 * Obtiene el panel de filtros
124
	 * Obtiene el panel con el histograma
76 125
	 * @return HistogramPanel
77 126
	 */
78
	private FilterPanel getFilterPanel() {
79
		if (filterPanel == null) {
80
			filterPanel = new FilterPanel(lyr);
81
			filterPanel.addButtonPressedListener(this);
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);
82 134
		}
83
		return filterPanel;
135
		return previewBasePanel;
84 136
	}
85 137

  
86 138
	/**
87
	 * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
139
	 * Devuelve el componente <code>FilterListener</code>, que contendr? el
140
	 * proceso en si del panel
88 141
	 */
89
	public WindowInfo getWindowInfo() {
90
		WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODELESSDIALOG | WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE);
91
		if (getFilterPanel().getLayer() != null)
92
			m_viewinfo.setAdditionalInfo(getFilterPanel().getLayer().getName());
93
		m_viewinfo.setTitle(PluginServices.getText(this, "filtros"));
94
		m_viewinfo.setHeight(this.getHeight());
95
		m_viewinfo.setWidth(this.getWidth());
96
		return m_viewinfo;
142
	private FilterListener getFilterListener() {
143
		if (filterListener == null) {
144
			filterListener = new FilterListener(this);
145
		}
146

  
147
		return filterListener;
97 148
	}
98 149

  
99 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
	/**
100 304
	 * Acciones a ejecutar cuando se cancela
101 305
	 */
102 306
	private void close() {
103 307
		try {
104
			RasterLibrary.removeOnlyLayerNameListener(getFilterPanel());
308
			RasterLibrary.removeOnlyLayerNameListener(getMainPanel());
105 309
			PluginServices.getMDIManager().closeWindow(this);
106 310
		} catch (ArrayIndexOutOfBoundsException e) {
107 311
			//Si la ventana no se puede eliminar no hacemos nada
108 312
		}
109 313
	}
110 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

  
111 628
	/*
112 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)
113 644
	 * @see org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener#actionButtonPressed(org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent)
114 645
	 */
115 646
	public void actionButtonPressed(ButtonsPanelEvent e) {
116 647
		// Restauramos la vista con los filtros originales antes de cualquier acci?n
117
		filterPanel.restoreFilters();
118

  
648
		restoreFilters();
649
	
119 650
		// Al pulsar Aceptar o Aplicar se ejecuta el aceptar del panel
120 651
		if (e.getButton() == ButtonsPanel.BUTTON_APPLY || e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
121
			filterPanel.accept();
652
			accept();
122 653
		}
123

  
654
	
124 655
		// Al pulsar Cancelar la ventana se cierra y se refresca la vista
125 656
		if (e.getButton() == ButtonsPanel.BUTTON_CANCEL) {
126
			filterPanel.cancel();
657
			cancel();
127 658
			close();
128 659
		}
129

  
660
	
130 661
		// Al pulsar Aceptar simplemente la ventana se cierra
131 662
		if (e.getButton() == ButtonsPanel.BUTTON_ACCEPT) {
132 663
			accepted = true;
......
140 671
	 */
141 672
	public void windowClosed() {
142 673
		if (!accepted) {
143
			filterPanel.restoreFilters();
144
			filterPanel.cancel();
674
			restoreFilters();
675
			cancel();
145 676
		}
146 677
	}
147 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

  
148 687
	public void windowActivated() {}
149 688
}

Also available in: Unified diff