Revision 33611

View differences:

branches/v2_0_0_prep/extensions/extRasterTools-SE/src/org/gvsig/rastertools/filter/ui/FilterMainPanel.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2005 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

  
23
import javax.swing.JPanel;
24

  
25
import org.gvsig.gui.beans.treelist.TreeListContainer;
26
import org.gvsig.raster.beans.previewbase.IUserPanelInterface;
27
import org.gvsig.raster.util.RasterToolsUtil;
28
import org.gvsig.rastertools.filter.FilterListener;
29
/**
30
 * Es el panel central del panel de filtros. Se compone de dos partes.
31
 * El lateral izquierdo contiene la lista de filtros posibles y filtros seleccionados
32
 * La parte derecha contiene las opciones de los filtros
33
 * En la parte de abajo tenemos el fichero de salida.
34
 * 
35
 * @version 22/02/2008
36
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
37
 */
38
public class FilterMainPanel extends JPanel implements IUserPanelInterface {
39
	private static final long serialVersionUID = -406089078173595028L;
40
	private TreeListContainer treeListContainer = null;
41
	private JPanel            centralPanel      = null;
42
	private FilterListener    filterListener    = null;
43

  
44
	public FilterMainPanel(FilterListener filterListener) {
45
		this.filterListener = filterListener;
46
		initialize();
47
	}
48
	
49
	private void initialize() {
50
		setLayout(new BorderLayout(5, 5));
51
		add(getTreeListContainer(), BorderLayout.WEST);
52
		add(getCentralPanel(), BorderLayout.CENTER);
53
	}
54
	
55
	/*
56
	 * (non-Javadoc)
57
	 * @see org.gvsig.raster.beans.previewbase.IUserPanelInterface#getPanel()
58
	 */
59
	public JPanel getPanel() {
60
		return this;
61
	}
62

  
63
	/**
64
	 * This method initializes jPanel
65
	 * @return javax.swing.JPanel
66
	 */
67
	public TreeListContainer getTreeListContainer() {
68
		if (treeListContainer == null) {
69
			treeListContainer = new TreeListContainer();
70
			treeListContainer.getTree().expandRow(0);
71
			treeListContainer.addTreeListListener(filterListener);
72
			treeListContainer.addChangeSelectionListener(filterListener);
73
			treeListContainer.setAddToolTipText(RasterToolsUtil.getText(this, "anadir_filtro"));
74
			treeListContainer.setDelToolTipText(RasterToolsUtil.getText(this, "eliminar_filtro"));
75
		}
76
		return treeListContainer;
77
	}
78

  
79
	/**
80
	 * Obtener y generar el JPanel central que contendr? las propiedades
81
	 * @return
82
	 */
83
	public JPanel getCentralPanel() {
84
		if (centralPanel == null) {
85
			centralPanel = new JPanel();
86
			centralPanel.setLayout(new BorderLayout());
87
		}
88
		return centralPanel;
89
	}
90
	
91
	/*
92
	 * (non-Javadoc)
93
	 * @see org.gvsig.raster.beans.previewbase.IUserPanelInterface#getTitle()
94
	 */
95
	public String getTitle() {
96
		return "Filtros";
97
	}
98
}
branches/v2_0_0_prep/extensions/extRasterTools-SE/src/org/gvsig/rastertools/filter/ui/FilterDialog.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2005 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

  
23
import javax.swing.JPanel;
24

  
25
import org.gvsig.andami.PluginServices;
26
import org.gvsig.andami.ui.mdiManager.IWindow;
27
import org.gvsig.andami.ui.mdiManager.IWindowListener;
28
import org.gvsig.andami.ui.mdiManager.WindowInfo;
29
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
30
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
31
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent;
32
import org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener;
33
import org.gvsig.raster.RasterLibrary;
34

  
35
/**
36
 * Dialogo para los filtros de raster.
37
 * 
38
 * @version 25/02/2008
39
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
40
 */
41
public class FilterDialog extends JPanel implements IWindow, IWindowListener, ButtonsPanelListener {
42
	private static final long serialVersionUID = 818691082984915388L;
43
	private FLyrRasterSE layer      = null;
44
	private FilterPanel filterPanel = null;
45

  
46
	/**
47
	 * Constructor
48
	 * @param width Ancho
49
	 * @param height Alto
50
	 */
51
	public FilterDialog(FLyrRasterSE layer, int width, int height) {
52
		this.layer = layer;
53
		setSize(width, height);
54
		setLayout(new BorderLayout(5, 5));
55
		add(getFilterPanel(), java.awt.BorderLayout.CENTER);
56
	}
57
	
58
	/**
59
	 * Obtiene el panel con el histograma
60
	 * @return HistogramPanel
61
	 */
62
	private FilterPanel getFilterPanel() {
63
		if (filterPanel == null) {
64
			filterPanel = new FilterPanel(layer, this);
65
		}
66
		return filterPanel;
67
	}
68
	
69
	/**
70
	 * Acciones a ejecutar cuando se cancela
71
	 */
72
	private void close() {
73
		try {
74
			RasterLibrary.removeOnlyLayerNameListener(getFilterPanel().getNewLayerPanel().getPanelNewLayer());
75
			PluginServices.getMDIManager().closeWindow(this);
76
		} catch (ArrayIndexOutOfBoundsException e) {
77
			//Si la ventana no se puede eliminar no hacemos nada
78
		}
79
	}
80
	
81
	/*
82
	 * (non-Javadoc)
83
	 * @see com.iver.andami.ui.mdiManager.IWindow#getWindowInfo()
84
	 */
85
	public WindowInfo getWindowInfo() {
86
		WindowInfo m_viewinfo = new WindowInfo(WindowInfo.MODELESSDIALOG | WindowInfo.RESIZABLE | WindowInfo.MAXIMIZABLE);
87
		if (layer != null)
88
			m_viewinfo.setAdditionalInfo(layer.getName());
89
		m_viewinfo.setTitle(PluginServices.getText(this, "filtros"));
90
		m_viewinfo.setHeight(this.getHeight());
91
		m_viewinfo.setWidth(this.getWidth());
92
		return m_viewinfo;
93
	}
94

  
95
	/*
96
	 * (non-Javadoc)
97
	 * @see com.iver.andami.ui.mdiManager.IWindowListener#windowClosed()
98
	 */
99
	public void windowClosed() {
100
	}
101
	
102
	/*
103
	 * (non-Javadoc)
104
	 * @see org.gvsig.gui.beans.buttonspanel.ButtonsPanelListener#actionButtonPressed(org.gvsig.gui.beans.buttonspanel.ButtonsPanelEvent)
105
	 */
106
	public void actionButtonPressed(ButtonsPanelEvent e) {
107
		// Al pulsar Aceptar o Aplicar se ejecuta el aceptar del panel
108
		if (e.getButton() == ButtonsPanel.BUTTON_APPLY /*|| e.getButton() == ButtonsPanel.BUTTON_ACCEPT*/) {
109
			getFilterPanel().getLayerVisualStatus().restoreVisualStatus(layer);
110
			getFilterPanel().apply();
111
		}
112
	
113
		// Al pulsar Cancelar la ventana se cierra y se refresca la vista
114
		if (e.getButton() == ButtonsPanel.BUTTON_CANCEL) {
115
			getFilterPanel().getLayerVisualStatus().restoreVisualStatus(layer);
116
			getFilterPanel().cancel();
117
		}
118
			
119
		if (e.getButton() == ButtonsPanel.BUTTON_CLOSE) {
120
			close();
121
		}
122
	}
123
	
124
	public void windowActivated() {}
125

  
126
	public Object getWindowProfile() {
127
		return WindowInfo.PROPERTIES_PROFILE;
128
	}
129
}
0 130

  
branches/v2_0_0_prep/extensions/extRasterTools-SE/src/org/gvsig/rastertools/filter/ui/FilterPanel.java
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.util.ArrayList;
27
import java.util.Hashtable;
28

  
29
import javax.swing.BorderFactory;
30
import javax.swing.DefaultListModel;
31
import javax.swing.JCheckBox;
32
import javax.swing.JPanel;
33
import javax.swing.border.TitledBorder;
34

  
35
import org.gvsig.andami.PluginServices;
36
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
37
import org.gvsig.fmap.mapcontext.layers.FLayer;
38
import org.gvsig.fmap.raster.layers.FLyrRasterSE;
39
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
40
import org.gvsig.gui.beans.imagenavigator.ImageUnavailableException;
41
import org.gvsig.gui.beans.propertiespanel.PropertiesComponent;
42
import org.gvsig.gui.beans.treelist.TreeListContainer;
43
import org.gvsig.raster.beans.createlayer.CreateLayerPanel;
44
import org.gvsig.raster.beans.previewbase.IPreviewRenderProcess;
45
import org.gvsig.raster.beans.previewbase.ParamStruct;
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.hierarchy.IRasterRendering;
54
import org.gvsig.raster.util.LayerVisualStatusList;
55
import org.gvsig.raster.util.RasterToolsUtil;
56
import org.gvsig.rastertools.filter.FilterListener;
57

  
58
/**
59
 * Dialogo para los filtros de raster.
60
 *
61
 * @version 30/05/2007
62
 * @author Nacho Brodin <brodin_ign@gva.es>
63
 * @author BorSanZa - Borja S?nchez Zamorano (borja.sanchez@iver.es)
64
 */
65
public class FilterPanel extends JPanel implements IPreviewRenderProcess {
66
	private static final long serialVersionUID = 7152780112689637266L;
67

  
68
	private PreviewBasePanel       previewBasePanel    = null;
69
	private FLyrRasterSE           layer               = null;
70
	private FilterListener         filterListener      = null;
71
	private PropertiesComponent    propertiesComponent = null;
72

  
73
	private LayerVisualStatusList  status              = new LayerVisualStatusList();
74
	private JCheckBox              jCBShowFilters      = null;
75
	private String                 viewName            = null;
76
	private JPanel                 jPanelOptions       = null;
77
	private FilterMainPanel        filterMain          = null;
78
	private FilterDialog           filterDialog        = null;
79
	private CreateLayerPanel       newLayerPanel       = null;
80
	private boolean                showPreview         = true;	
81

  
82
	/**
83
	 * Constructor
84
	 * @param width Ancho del panel
85
	 * @param height Alto del panel
86
	 */
87
	public FilterPanel(FLyrRasterSE layer, FilterDialog filterDialog) {
88
		this.filterDialog = filterDialog;
89
		setLayer(layer);
90
		initialize();
91
	}
92
	
93
	private void initialize() {
94
		translate();
95
		setLayout(new BorderLayout());
96
		add(getPreviewBasePanel(), BorderLayout.CENTER);
97
	}
98
	
99
	/**
100
	 * Seccion donde ir?n todas las traducciones invariables del componente
101
	 */
102
	private void translate() {
103
		getCBShowFilters().setText(PluginServices.getText(this, "aplicar_vista_previa"));
104
	}
105
	
106
	/**
107
	 * Obtiene el panel con el histograma
108
	 * @return HistogramPanel
109
	 */
110
	private PreviewBasePanel getPreviewBasePanel() {
111
		if (previewBasePanel == null) {
112
			ArrayList list = new ArrayList();
113
			list.add(getMainPanel());
114
			previewBasePanel = new PreviewBasePanel(ButtonsPanel.BUTTONS_APPLYCLOSE, list, null, panelOptions(), this, (FLyrRasterSE) layer);
115
			previewBasePanel.getButtonsPanel().addCancel();
116
			previewBasePanel.setPreviewSize(new Dimension(230, 215));
117
			previewBasePanel.addButtonPressedListener(filterDialog);
118
		}
119
		return previewBasePanel;
120
	}
121

  
122
	/**
123
	 * Devuelve el componente <code>FilterListener</code>, que contendr? el
124
	 * proceso en si del panel
125
	 */
126
	private FilterListener getFilterListener() {
127
		if (filterListener == null) {
128
			filterListener = new FilterListener(this);
129
		}
130

  
131
		return filterListener;
132
	}
133

  
134
	/**
135
	 * Devuelve el panel de Opciones, en caso de no existir, lo crea.
136
	 * @return
137
	 */
138
	private JPanel panelOptions() {
139
		if (jPanelOptions == null) {
140
			jPanelOptions = new JPanel();
141

  
142
			GridBagConstraints gridBagConstraints;
143

  
144
			jPanelOptions.setLayout(new GridBagLayout());
145

  
146
			gridBagConstraints = new GridBagConstraints();
147
			gridBagConstraints.gridx = 0;
148
			gridBagConstraints.gridy = 1;
149
			gridBagConstraints.anchor = GridBagConstraints.WEST;
150
			gridBagConstraints.insets = new Insets(2, 2, 2, 2);
151
			jPanelOptions.add(getCBShowFilters(), gridBagConstraints);
152

  
153
			gridBagConstraints = new GridBagConstraints();
154
			gridBagConstraints.gridx = 0;
155
			gridBagConstraints.gridy = 4;
156
			gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
157
			gridBagConstraints.insets = new Insets(3, 3, 3, 3);
158
			jPanelOptions.add(getNewLayerPanel().getJPanel(), gridBagConstraints);
159

  
160
			gridBagConstraints = new GridBagConstraints();
161
			gridBagConstraints.gridx = 0;
162
			gridBagConstraints.gridy = 5;
163
			gridBagConstraints.weightx = 1.0;
164
			gridBagConstraints.weighty = 1.0;
165
			jPanelOptions.add(new JPanel(), gridBagConstraints);
166
		}
167

  
168
		return jPanelOptions;
169
	}
170
	
171
	public CreateLayerPanel getNewLayerPanel() {
172
		if (newLayerPanel == null) {
173
			newLayerPanel = new CreateLayerPanel(layer);
174
		}
175
		return newLayerPanel;
176
	}
177

  
178
	/**
179
	 * Construye el arbol para el men? de filtros disponibles
180
	 */
181
	private void menuBuild() {
182
		Hashtable keys = new Hashtable();
183
		RasterFilterList filterList = ((FLyrRasterSE) layer).getRenderFilterList();
184
		// Creamos un stackManager para recorrer los filtros registrados en gvSIG
185
		RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
186

  
187
		int count = 0;
188
		RasterFilter obj = null;
189

  
190
		for (int i = 0; i < stackManager.getRasterFilterList().size(); i++) {
191
			Class classFilter = (Class) stackManager.getRasterFilterList().get(i);
192

  
193
			try {
194
				obj = (RasterFilter) classFilter.newInstance();
195

  
196
				initFilter(obj);
197
				
198
				if (!obj.isVisible())
199
					continue;
200
				
201
				// Crear grupos de los filtros
202
				if (!keys.containsKey(PluginServices.getText(this, new String(obj.getGroup())))) {
203
					keys.put(PluginServices.getText(this, new String(obj.getGroup())), obj);
204
					getMainPanel().getTreeListContainer().addClass(PluginServices.getText(this, new String(obj.getGroup())), count);
205
					count++;
206
						
207
				}
208
				// Crear cada entrada de los filtro
209
				String[] names = obj.getNames();
210
				for (int j = 0; j < names.length; j++) {
211
					obj.setName(names[j]);
212
					getFilterListener().addNewParam(names[j], initFilterParam(obj.getUIParams(names[j])), classFilter);
213
					getMainPanel().getTreeListContainer().addEntry(PluginServices.getText(this, names[j]), PluginServices.getText(this, obj.getGroup()), names[j]);
214
				}
215
			} catch (InstantiationException e) {
216
				RasterToolsUtil.debug("No se ha podido meter el filtro en la lista", this, e);
217
			} catch (IllegalAccessException e) {
218
				RasterToolsUtil.debug("No se ha podido meter el filtro en la lista", this, e);
219
			}
220
		}
221

  
222
		getMainPanel().getTreeListContainer().getTree().expandRow(0);
223
	}
224
	
225
	/**
226
	 * Pasamos los parametros basicos a un filtro
227
	 * @param filter
228
	 */
229
	private void initFilter(RasterFilter filter) {
230
		if (layer != null) {
231
			filter.getEnv().put("MultiRasterDataset", ((FLyrRasterSE) layer).getDataSource());
232
			filter.getEnv().put("initRaster", layer);
233
		}
234
	}
235
	
236
	/**
237
	 * Sirve para a?adir mas parametros genericos por defecto al panel, de momento
238
	 * solo he puesto para activar o desactivar un filtro.
239
	 * @param params
240
	 * @return
241
	 */
242
	private Params initFilterParam(Params params) {
243
		params.setParam("enabled", new Boolean(true), Params.CHECK, null);
244
		Param param = params.getParamById("enabled");
245
		params.getParams().remove(params.getParams().size() - 1);
246
		params.getParams().add(0, param);
247
		return params;
248
	}
249
	
250
	/**
251
	 * Comprueba que el nombre del filtro esta cargado en las extensiones
252
	 * @param filter
253
	 * @return
254
	 */
255
	private boolean hasThisFilter(String filter) {
256
		RasterFilterList filterList = new RasterFilterList();
257
		RasterFilterListManager stackManager = new RasterFilterListManager(filterList);
258
	
259
		boolean error;
260
		RasterFilter obj = null;
261
	
262
		for (int i = 0; i < stackManager.getRasterFilterList().size(); i++) {
263
			Class classFilter = (Class) stackManager.getRasterFilterList().get(i);
264
			error = true;
265
	
266
			try {
267
				obj = (RasterFilter) classFilter.newInstance();
268
				error = false;
269
			} catch (InstantiationException e) {
270
			} catch (IllegalAccessException e) {
271
			}
272
	
273
			if (!error) {
274
				String[] names = obj.getNames();
275
				for (int j = 0; j < names.length; j++)
276
					if (filter.equals(names[j]))
277
						return true;
278
			}
279
		}
280
		return false;
281
	}
282

  
283
	/**
284
	 * Definir el FLayer del panel, haciendo todas las cargas necesarias despues
285
	 * de especificarlo.
286
	 * @param layer
287
	 */
288
	private void setLayer(FLyrRasterSE layer) {
289
		if (layer == null)
290
			return;
291

  
292
		this.layer = layer;
293
		getPreviewBasePanel().setLayer(layer);
294
	
295
		// Construimos el arbol de filtros
296
		menuBuild();
297
	
298
		AbstractViewPanel view = (AbstractViewPanel) PluginServices.getMDIManager().getActiveWindow();
299
		viewName = PluginServices.getMDIManager().getWindowInfo(view).getTitle();
300
	
301
		//Comprobamos que el raster de salida no exceda los 4GB que es el m?ximo 
302
		//admisible por un TIFF. Si es as? se hace un setCompress para salvar en JPEG2000
303
		long sizeB = (long)((((FLyrRasterSE) layer).getPxWidth() * ((FLyrRasterSE) layer).getPxWidth() * ((FLyrRasterSE) layer).getBandCount())); 
304
		int sizeMB = (int)(sizeB / 1048576);
305
		if(sizeMB >= 4096) {
306
			RasterToolsUtil.messageBoxInfo("file_too_big", this);
307
			getNewLayerPanel().setCompress(true);
308
		}
309
	
310
		RasterFilterList rfl = ((FLyrRasterSE) layer).getRenderFilterList();
311
		status.getVisualStatus(((FLyrRasterSE) layer));
312
	
313
		//Carga el listado de filtros que ya estaban aplicados en la capa al abrir
314
		 
315
		int i = 0;
316
		boolean filters = false;
317
		while (rfl.get(i) != null) {
318
			DefaultListModel list = (DefaultListModel) getMainPanel().getTreeListContainer().getListModel();
319
			if (rfl.get(i).isVisible() && hasThisFilter(rfl.get(i).getName())) {
320
				list.addElement(PluginServices.getText(this, rfl.get(i).getName()));
321
				for (int j = 0; j < getFilterListener().getParamsList().size(); j++) {
322
					if (((ParamStruct) getFilterListener().getParamsList().get(j)).getFilterName().equals(rfl.get(i).getName())) {
323
						filters = true;
324
						initFilter(rfl.get(i));
325
						((ParamStruct) getFilterListener().getParamsList().get(j)).setFilterParam(initFilterParam(rfl.get(i).getUIParams(rfl.get(i).getName())));
326
					}
327
				}
328
			}
329
			i++;
330
		}
331
	
332
		// Si existen filtros ya en la capa, pondremos los RadioButton para que
333
		// los cambios se hagan sobre la visualizaci?n
334
		if (filters)
335
			getNewLayerPanel().setOnlyView(true);
336
	
337
		// Selecciona el primer item del arbol
338
		TreeListContainer lc = getMainPanel().getTreeListContainer();
339
		lc.getTree().expandRow(1);
340
		lc.getTree().setSelectionInterval(2, 2);
341
	}
342

  
343
	public FilterMainPanel getMainPanel() {
344
		if (filterMain == null) {
345
			filterMain = new FilterMainPanel(getFilterListener());
346
			JPanel panel = getNewLayerPanel().getFileNamePanel();
347
			panel.setBorder(BorderFactory.createTitledBorder(null, PluginServices.getText(this, "nombre_capa"), TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
348
			filterMain.getCentralPanel().add(panel, BorderLayout.SOUTH);
349
		}
350
		return filterMain;
351
	}
352

  
353
	/**
354
	 * Volvemos todo a la normalidad cuando se cancela
355
	 */
356
	public void cancel() {
357
		if (layer != null)
358
			layer.getMapContext().invalidate();
359
	}
360

  
361
	/**
362
	 * Cuando se aceptan los cambios en el panel ejecutaremos el aceptar del
363
	 * listener
364
	 */
365
	public void apply() {
366
		filterListener.accept();
367
	}
368
	
369
	/**
370
	 * Obtener el PropertiesComponent del panel de filtros, en caso de no existir,
371
	 * lo crea.
372
	 * @return
373
	 */
374
	public PropertiesComponent getPropertiesComponent() {
375
		if (propertiesComponent == null) {
376
			propertiesComponent = new PropertiesComponent();
377
			getMainPanel().getCentralPanel().add(propertiesComponent, BorderLayout.CENTER);
378

  
379
			propertiesComponent.addStateChangedListener(getFilterListener());
380
		}
381
		return propertiesComponent;
382
	}
383

  
384
	/**
385
	 * Asignar un nuevo componente de PropertiesComponent, eliminando el anterior
386
	 * que hubiera.
387
	 * @param component
388
	 * @param name
389
	 */
390
	public void setNewPropertiesComponent(PropertiesComponent component, String name) {
391
		getPropertiesComponent().setVisible(false);
392
		this.remove(propertiesComponent);
393
		propertiesComponent = null;
394
		propertiesComponent = component;
395
		getMainPanel().getCentralPanel().add(propertiesComponent, BorderLayout.CENTER);
396
		propertiesComponent.addStateChangedListener(getFilterListener());
397
		setTitle(name);
398
		this.validate();
399
	}
400
	
401
	/**
402
	 * Asigna el t?tulo al panel
403
	 * @param title T?tulo del panel
404
	 */
405
	public void setTitle(String title) {
406
		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));
407
	}
408
	
409
	/**
410
	 * Devuelve el estado de los filtros inicial
411
	 * @return VisualStatusLayerStack
412
	 */
413
	public LayerVisualStatusList getLayerVisualStatus() {
414
		return status;
415
	}
416
	
417

  
418
	/**
419
	 * Actualizamos la vista previa
420
	 */
421
	public void refreshPreview() {
422
		getPreviewBasePanel().refreshPreview();
423
	}
424
	
425
	/**
426
	 * Devuelve el FLayer asignado al panel
427
	 * @return
428
	 */
429
	public FLayer getLayer() {
430
		return layer;
431
	}
432
	
433

  
434
	/**
435
	 * @return the jLabelShowFilters
436
	 */
437
	public JCheckBox getCBShowFilters() {
438
		if (jCBShowFilters == null) {
439
			jCBShowFilters = new JCheckBox();
440
			jCBShowFilters.addActionListener(getFilterListener());
441
			jCBShowFilters.setSelected(true);
442
		}
443
		return jCBShowFilters;
444
	}
445

  
446
	/**
447
	 * Obtiene el nombre de la vista
448
	 * @return
449
	 */
450
	public String getViewName() {
451
		return viewName;
452
	}
453

  
454
	/**
455
	 * Especificar el nombre de la nueva capa para el recuadro de texto asign?ndo
456
	 * en cada llamada un nombre consecutivo.
457
	 */
458
	public void updateNewLayerText() {
459
		getNewLayerPanel().updateNewLayerText();
460
	}
461

  
462
	/*
463
	 * (non-Javadoc)
464
	 * @see org.gvsig.raster.beans.previewbase.IPreviewRenderProcess#process(org.gvsig.raster.hierarchy.IRasterRendering)
465
	 */
466
	public void process(IRasterRendering rendering) throws FilterTypeException, ImageUnavailableException {
467
		if(!showPreview)
468
			throw new ImageUnavailableException(RasterToolsUtil.getText(this, "panel_preview_not_available"));
469
		
470
		getFilterListener().drawImage(rendering);
471
	}
472
	
473
	/**
474
	 * Obtiene el flag que informa de si se est? mostrando la previsualizaci?n o no.
475
	 * En caso de no mostrarse se lanza una excepci?n ImageUnavailableExcepcion con el 
476
	 * mensaje "La previsualizaci?n no est? disponible para este panel"
477
	 * @return
478
	 */
479
	public boolean isShowPreview() {
480
		return showPreview;
481
	}
482
	
483
	/**
484
	 * Asigna el flag para mostrar u ocultar la preview. En caso de no mostrarse se lanza una 
485
	 * excepci?n ImageUnavailableExcepcion con el mensaje "La previsualizaci?n no est? disponible para
486
	 * este panel"
487
	 * @param showPreview
488
	 */
489
	public void setShowPreview(boolean showPreview) {
490
		this.showPreview = showPreview;
491
	}
492
}
0 493

  

Also available in: Unified diff