Revision 149

View differences:

org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/tool/GenericToolBarModule.java
33 33
import org.gvsig.app.project.documents.view.ViewDocument;
34 34
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
35 35
import org.gvsig.fmap.mapcontext.MapContext;
36
import org.gvsig.raster.app.extension.tool.filter.FilterTocMenuEntry;
36 37
import org.gvsig.raster.app.extension.tool.generictoolbar.GenericToolBarMenuItem;
37 38
import org.gvsig.raster.app.extension.tool.generictoolbar.GenericToolBarPanel;
38 39
import org.gvsig.raster.app.extension.tool.geolocation.GeoLocationTocMenuEntry;
......
132 133
		//point.append("ClippingPanel", "", ClippingTocMenuEntry.getSingleton());
133 134
		point.append("SaveRaster", "", SaveRasterTocMenuEntry.getSingleton());
134 135

  
135
		//point.append("FilterPanel", "", FilterTocMenuEntry.getSingleton());
136
		point.append("FilterPanel", "", FilterTocMenuEntry.getSingleton());
136 137
		//point.append("EnhancedPanel", "", EnhancedTocMenuEntry.getSingleton());
137 138
		point.append("GeoLocation", "", GeoLocationTocMenuEntry.getSingleton());
138 139
		//point.append("Vectorization", "", VectorizationTocMenuEntry.getSingleton());
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/tool/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.raster.app.extension.tool.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.app.extension.raster.bean.previewbase.IUserPanelInterface;
27
import org.gvsig.raster.app.extension.tool.filter.FilterListener;
28
import org.gvsig.raster.util.RasterToolsUtil;
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
}
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/tool/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.raster.app.extension.tool.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.dal.coverage.RasterLocator;
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.fmap.layers.FLyrRaster;
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 FLyrRaster        layer             = null;
44
	private FilterPanel       filterPanel       = null;
45

  
46
	/**
47
	 * Constructor
48
	 * @param width Ancho
49
	 * @param height Alto
50
	 */
51
	public FilterDialog(FLyrRaster 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
			RasterLocator.getManager().getFileUtils().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
}
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/tool/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.raster.app.extension.tool.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.dal.coverage.RasterLocator;
38
import org.gvsig.fmap.dal.coverage.datastruct.Param;
39
import org.gvsig.fmap.dal.coverage.datastruct.Params;
40
import org.gvsig.fmap.dal.coverage.grid.RasterFilter;
41
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
42
import org.gvsig.fmap.mapcontext.layers.FLayer;
43
import org.gvsig.gui.beans.buttonspanel.ButtonsPanel;
44
import org.gvsig.gui.beans.imagenavigator.ImageUnavailableException;
45
import org.gvsig.gui.beans.propertiespanel.PropertiesComponent;
46
import org.gvsig.gui.beans.treelist.TreeListContainer;
47
import org.gvsig.raster.app.extension.raster.bean.createlayer.CreateLayerPanel;
48
import org.gvsig.raster.app.extension.raster.bean.previewbase.IPreviewRenderProcess;
49
import org.gvsig.raster.app.extension.raster.bean.previewbase.ParamStruct;
50
import org.gvsig.raster.app.extension.raster.bean.previewbase.PreviewBasePanel;
51
import org.gvsig.raster.app.extension.tool.filter.FilterListener;
52
import org.gvsig.raster.fmap.layers.FLyrRaster;
53
import org.gvsig.raster.util.LayerVisualStatusList;
54
import org.gvsig.raster.util.RasterToolsUtil;
55

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

  
66
	private PreviewBasePanel       previewBasePanel    = null;
67
	private FLyrRaster             layer               = null;
68
	private FilterListener         filterListener      = null;
69
	private PropertiesComponent    propertiesComponent = null;
70

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

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

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

  
129
		return filterListener;
130
	}
131

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

  
140
			GridBagConstraints gridBagConstraints;
141

  
142
			jPanelOptions.setLayout(new GridBagLayout());
143

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

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

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

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

  
176
	/**
177
	 * Construye el arbol para el men? de filtros disponibles
178
	 */
179
	@SuppressWarnings("unchecked")
180
	private void menuBuild() {
181
		Hashtable keys = new Hashtable();
182
		RasterFilterList filterList = layer.getRender().getFilterList();
183
		ArrayList  registeredFilters = filterList.getRegisteredFilterList();
184

  
185
		int count = 0;
186
		RasterFilter obj = null;
187

  
188
		for (int i = 0; i < registeredFilters.size(); i++) {
189
			Class classFilter = (Class) registeredFilters.get(i);
190

  
191
			try {
192
				obj = (RasterFilter) classFilter.newInstance();
193

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

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

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

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

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

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

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

  
377
			propertiesComponent.addStateChangedListener(getFilterListener());
378
		}
379
		return propertiesComponent;
380
	}
381

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

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

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

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

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

  
460
	/*
461
	 * (non-Javadoc)
462
	 * @see org.gvsig.raster.beans.previewbase.IPreviewRenderProcess#process(org.gvsig.raster.hierarchy.IRasterRendering)
463
	 */
464
	public void process(FLyrRaster rendering) throws ImageUnavailableException {
465
		if(!showPreview)
466
			throw new ImageUnavailableException(RasterToolsUtil.getText(this, "panel_preview_not_available"));
467
		
468
		getFilterListener().drawImage(rendering);
469
	}
470
	
471
	/**
472
	 * Obtiene el flag que informa de si se est? mostrando la previsualizaci?n o no.
473
	 * En caso de no mostrarse se lanza una excepci?n ImageUnavailableExcepcion con el 
474
	 * mensaje "La previsualizaci?n no est? disponible para este panel"
475
	 * @return
476
	 */
477
	public boolean isShowPreview() {
478
		return showPreview;
479
	}
480
	
481
	/**
482
	 * Asigna el flag para mostrar u ocultar la preview. En caso de no mostrarse se lanza una 
483
	 * excepci?n ImageUnavailableExcepcion con el mensaje "La previsualizaci?n no est? disponible para
484
	 * este panel"
485
	 * @param showPreview
486
	 */
487
	public void setShowPreview(boolean showPreview) {
488
		this.showPreview = showPreview;
489
	}
490
}
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/tool/reproject/ui/LayerReprojectPanel.java
54 54
 * @author Nacho Brodin nachobrodin@gmail.com
55 55
 */
56 56
public class LayerReprojectPanel extends DefaultButtonsPanel implements IWindow {
57
	private static final long serialVersionUID = -1011688195806336071L;
57
	private static final long      serialVersionUID      = -1011688195806336071L;
58 58
	private NewLayerPanel          newLayerPanel         = null;
59 59
	private JPanel                 nameFile              = null;
60 60
	private CRSSelectPanel         projectionSrcSelector = null;
......
63 63
	private IProjection            projDst               = null;
64 64
	private JPanel                 filePanel             = null;
65 65
	private LayerReprojectListener reprojectListener     = null;
66
	private FLyrRaster           lyr                   = null;
66
	private FLyrRaster             lyr                   = null;
67 67
	private String                 viewName              = null;
68 68
	private Boolean                isInTOC               = Boolean.TRUE;
69 69

  
......
86 86
	public WindowInfo getWindowInfo() {
87 87
		WindowInfo windowInfo = new WindowInfo(WindowInfo.MODALDIALOG | WindowInfo.RESIZABLE);
88 88
		windowInfo.setTitle(PluginServices.getText(this, "capa_a_reproyectar"));
89
		windowInfo.setWidth(320);
90
		windowInfo.setHeight(320);
89
		windowInfo.setWidth(330);
90
		windowInfo.setHeight(325);
91 91
		return windowInfo;
92 92
	}
93 93
	
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/raster/process/FilterProcess.java
65 65

  
66 66
	private RasterFilterList  rasterFilterList = null;
67 67
	private RasterWriter      geoRasterWriter  = null;
68
	private FLyrRaster      lyr              = null;
68
	private FLyrRaster        lyr              = null;
69 69
	private RasterManager     rManager         = RasterLocator.getManager();
70 70

  
71 71
	/*
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/raster/bean/previewbase/PreviewBasePanel.java
321 321
		// Especificar las dimensiones de la capa en la vista previa
322 322
		Extent extent2 = ((FLyrRaster) fLayer).getFullRasterExtent();//.getBufferFactory().getDataSource().getExtent();
323 323
		getImageNavigator().setViewDimensions(extent2.getMin().getX(), extent2.getMax().getY(), extent2.getMax().getX(), extent2.getMin().getY());
324
		getImageNavigator().setZoom(1.0/ ((FLyrRaster) fLayer.getDataStore()).getCellSize());
324
		getImageNavigator().setZoom(1.0/ fLayer.getCellSize());
325 325
		getImageNavigator().setAutoAdjusted();
326 326
	}
327 327

  
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/raster/bean/previewbase/ParamStruct.java
21 21
*/
22 22
package org.gvsig.raster.app.extension.raster.bean.previewbase;
23 23

  
24
import java.util.ArrayList;
25

  
24 26
import org.gvsig.fmap.dal.coverage.datastruct.Params;
27
import org.gvsig.fmap.dal.coverage.exception.FilterManagerException;
28
import org.gvsig.fmap.dal.coverage.exception.FilterTypeException;
29
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
30
import org.gvsig.fmap.dal.coverage.grid.RasterFilterListManager;
25 31

  
26 32
/**
27 33
 * Estructura para los par?metros de PreviewFiltering. Contiene el nombre del 
......
29 35
 * 
30 36
 */
31 37
public class ParamStruct {
32
	String filterName = null;
33
	Params filterParam = null;
34
	Class filterClass = null;
38
	String filterName   = null;
39
	Params filterParam  = null;
40
	@SuppressWarnings("unchecked")
41
	Class  filterClass  = null;
35 42

  
36 43
	/**
37 44
	 * @return the filterName
......
64 71
	/**
65 72
	 * @return the filterClass
66 73
	 */
74
	@SuppressWarnings("unchecked")
67 75
	public Class getFilterClass() {
68 76
		return filterClass;
69 77
	}
......
71 79
	/**
72 80
	 * @param filterClass the filterClass to set
73 81
	 */
82
	@SuppressWarnings("unchecked")
74 83
	public void setFilterClass(Class filterClass) {
75 84
		this.filterClass = filterClass;
76 85
	}
86
	
87
	/**
88
	 * Sustituye la lista de filtros de filterList por la que le pasamos en forma
89
	 * de lista de ParamStruct
90
	 * @param filterList
91
	 * @param listFilterUsed
92
	 * @throws FilterTypeException 
93
	 * @throws FilterManagerException 
94
	 */
95
	public static void addSelectedFilters(RasterFilterList filterList, ArrayList<ParamStruct> listFilterUsed) throws FilterTypeException, FilterManagerException {
96
		filterList.clear();
97

  
98
		for (int i = 0; i < listFilterUsed.size(); i++) {
99
			ParamStruct aux = (ParamStruct) listFilterUsed.get(i);
100
			RasterFilterListManager filterManager = filterList.getManagerByFilterClass(aux.getFilterClass());
101
			filterManager.addFilter(aux.getFilterClass(), aux.getFilterParam());
102
		}
103

  
104
		filterList.resetPercent();
105
	}
77 106
}
org.gvsig.raster.app/trunk/org.gvsig.raster.app/org.gvsig.raster.app.tools/src/main/java/org/gvsig/raster/app/extension/raster/bean/previewbase/PreviewRequestManager.java
53 53
	private static GeometryManager  geomManager       = GeometryLocator.getGeometryManager();
54 54
	private static final Logger     logger            = LoggerFactory.getLogger(PreviewRequestManager.class);
55 55
	private PreviewBasePanel        previewBasePanel  = null;
56
	private FLyrRaster            previewLayer      = null;
56
	private FLyrRaster              previewLayer      = null;
57 57
	private IPreviewRenderProcess   renderProcess     = null;
58 58

  
59 59
	/**
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/util/DefaultRasterUtils.java
579 579
		manager.addClient(ser3);
580 580
		manager.write();
581 581
	}
582
	
582 583
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/filter/RegistrableFilterListener.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.impl.grid.filter;
23

  
24
import java.util.ArrayList;
25
import java.util.EventObject;
26
import java.util.Iterator;
27

  
28
import javax.swing.JPanel;
29

  
30
import org.gvsig.fmap.dal.coverage.datastruct.Params;
31

  
32
/**
33
 * Clase de la que deben heredar todos los paneles para filtros 
34
 * definidos por el usuario. Tiene los m?todos para el registro de listeners
35
 * 
36
 * 28/09/2007
37
 * @author Nacho Brodin nachobrodin@gmail.com
38
 */
39
public class RegistrableFilterListener extends JPanel {
40
	private static final long           serialVersionUID       = 5528469123516861351L;
41
	private ArrayList<FilterUIListener>          
42
	                                    actionCommandListeners = new ArrayList<FilterUIListener>();
43
	protected Params                    params                 = null;
44
	
45
	/**
46
	 * Borrar el disparador de eventos de los botones.
47
	 * @param listener
48
	 */
49
	public void removeStateChangedListener(FilterUIListener listener) {
50
		actionCommandListeners.remove(listener);
51
	}
52

  
53
	
54
	/**
55
	 * 
56
	 * Ejecuci?n del m?todo actionValuesCompleted en todos los filtros registrados
57
	 */
58
	protected void callStateChanged() {
59
		Iterator<FilterUIListener> acIterator = actionCommandListeners.iterator();
60
		while (acIterator.hasNext()) {
61
			FilterUIListener listener = (FilterUIListener) acIterator.next();
62
			listener.actionValuesCompleted(new EventObject(this));
63
		}
64
	}
65
	
66
	/**
67
	 * A?adir el listener para los paneles definidos por el usuario
68
	 * @param listener
69
	 */
70
	public void addFilterUIListener(FilterUIListener listener) {
71
		if (!actionCommandListeners.contains(listener))
72
			actionCommandListeners.add(listener);
73
	}
74
	
75
	/**
76
	 * Obtiene los par?metros cargados por el panel
77
	 * @return
78
	 */
79
	public Params getParams() {
80
		return params;
81
	}
82
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/filter/FilterUIListener.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.impl.grid.filter;
23

  
24
import java.util.EventListener;
25
import java.util.EventObject;
26

  
27
/**
28
 * Listener para acciones lanzadas por los interfaces personalizados 
29
 * para filtros hechos por los usuarios.
30
 * 28/09/2007
31
 * @author Nacho Brodin nachobrodin@gmail.com
32
 */
33
public interface FilterUIListener extends EventListener {
34
	/**
35
	 * Este evento es lanzado al terminar de rellenar todos los campos
36
	 * del interfaz. Informa de que ya pueden ser recuperados.
37
	 * @param e
38
	 */
39
	public void actionValuesCompleted(EventObject e);
40
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/filter/RasterFilterListManagerImpl.java
425 425
	 */
426 426
	@SuppressWarnings("unchecked")
427 427
	public RasterFilterListManager getManagerByFilterClass(Class c) {
428
		for (int i = 0; i < managers.size(); i++)
429
			for (int j = 0; j < ((RasterFilterListManager) managers.get(i)).getRasterFilterList().size(); j++)
430
				if (((RasterFilterListManager) managers.get(i)).getRasterFilterList().get(j).equals(c))
431
					return (RasterFilterListManager) managers.get(i);
428
		for (int i = 0; i < managers.size(); i++) {
429
			RasterFilterListManager localMan = ((RasterFilterListManager) managers.get(i));
430
			for (int j = 0; j < localMan.getRasterFilterList().size(); j++) {
431
				Class f = (Class)localMan.getRasterFilterList().get(j);
432
				if (f.equals(c))
433
					return localMan;
434
			}
435
		}
432 436
		return null;
433 437
	}
434 438

  
......
440 444
	public ArrayList getRasterFilterList() {
441 445
		ArrayList filters = new ArrayList();
442 446
		for (int i = 0; i < managers.size(); i++) {
443
			ArrayList auxFilters = ((RasterFilterListManager) managers.get(i)).getRasterFilterList();
447
			ArrayList<RasterFilter> auxFilters = ((RasterFilterListManager) managers.get(i)).getRasterFilterList();
444 448
			for (int j = 0; j < auxFilters.size(); j++)
445 449
				filters.add(auxFilters.get(j));
446 450
		}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/filter/convolution/ConvolutionUI.java
40 40
import javax.swing.text.NumberFormatter;
41 41

  
42 42
import org.gvsig.fmap.dal.coverage.datastruct.Params;
43
import org.gvsig.raster.impl.grid.filter.RegistrableFilterListener;
43
import org.gvsig.fmap.dal.coverage.grid.FilterUIListener;
44
import org.gvsig.fmap.dal.coverage.grid.RegistrableFilterListener;
45
import org.gvsig.raster.impl.grid.filter.DefaultRegistrableFilterListener;
44 46
import org.gvsig.raster.impl.grid.filter.RasterFilterImpl.Kernel;
45 47
import org.gvsig.raster.impl.store.ParamsImpl;
46 48

  
......
51 53
 * 28/09/2007
52 54
 * @author Nacho Brodin nachobrodin@gmail.com
53 55
 */
54
public class ConvolutionUI extends RegistrableFilterListener implements ActionListener, FocusListener {
56
public class ConvolutionUI extends JPanel implements RegistrableFilterListener, ActionListener, FocusListener {
55 57

  
56
	private static final long    serialVersionUID = 7102390746959243164L;
57
	private JTextField[][]       matrix = new JTextField[5][5];
58
	private static final long    serialVersionUID             = 7102390746959243164L;
59
	private JTextField[][]       matrix                       = new JTextField[5][5];
58 60
	//Panel superior
59
	private JPanel               panelMatrixSelector = null;
60
	private JPanel               panelMatrix = null;
61
	private JPanel               panelSelector = null;
61
	private JPanel               panelMatrixSelector          = null;
62
	private JPanel               panelMatrix                  = null;
63
	private JPanel               panelSelector                = null;
62 64
	//Panel inferior
63
	private JPanel               panelTest = null;
64
	private JComboBox            selector = null;
65
	private JButton              buttonTest = null;
66
	private JFormattedTextField  divisor = null;
67
	private double               lastValue = 0;
65
	private JPanel               panelTest                    = null;
66
	private JComboBox            selector                     = null;
67
	private JButton              buttonTest                   = null;
68
	private JFormattedTextField  divisor                      = null;
69
	private double               lastValue                    = 0;
70
	private DefaultRegistrableFilterListener
71
                                  defaultRegistrableListener  = null;
68 72

  
69 73
	/**
70 74
	 * Constructor.
71 75
	 */
72 76
	public ConvolutionUI(Kernel k) {
77
		defaultRegistrableListener = new DefaultRegistrableFilterListener();
73 78
		getPanelMatrixSelector().setLayout(new BorderLayout());
74 79
		getPanelTest().setLayout(new BorderLayout());
75 80

  
......
272 277
	 * algo.
273 278
	 */
274 279
	public Params getParams() {
275
		params = new ParamsImpl();
280
		ParamsImpl params = new ParamsImpl();
281
		defaultRegistrableListener.setParams(params);
282
		
276 283
		int lado = 0;
277 284
		if(((String)selector.getSelectedItem()).equals("5"))
278 285
			lado = 1;
......
322 329
			}
323 330
		}
324 331
	}
332

  
333
	/*
334
	 * (non-Javadoc)
335
	 * @see org.gvsig.fmap.dal.coverage.grid.RegistrableFilterListener#addFilterUIListener(org.gvsig.fmap.dal.coverage.grid.FilterUIListener)
336
	 */
337
	public void addFilterUIListener(FilterUIListener listener) {
338
		defaultRegistrableListener.addFilterUIListener(listener);
339
	}
340

  
341
	/*
342
	 * (non-Javadoc)
343
	 * @see org.gvsig.fmap.dal.coverage.grid.RegistrableFilterListener#callStateChanged()
344
	 */
345
	public void callStateChanged() {
346
		defaultRegistrableListener.callStateChanged();
347
	}
348

  
349
	/*
350
	 * (non-Javadoc)
351
	 * @see org.gvsig.fmap.dal.coverage.grid.RegistrableFilterListener#removeStateChangedListener(org.gvsig.fmap.dal.coverage.grid.FilterUIListener)
352
	 */
353
	public void removeStateChangedListener(FilterUIListener listener) {
354
		defaultRegistrableListener.removeStateChangedListener(listener);
355
	}
325 356
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/filter/convolution/ConvolutionListManager.java
29 29
import org.gvsig.fmap.dal.coverage.grid.RasterFilterList;
30 30
import org.gvsig.fmap.dal.coverage.grid.RasterFilterListManager;
31 31
import org.gvsig.raster.impl.grid.filter.RasterFilterListManagerImpl;
32
import org.gvsig.raster.impl.grid.filter.RegistrableFilterListener;
32
import org.gvsig.raster.impl.grid.filter.DefaultRegistrableFilterListener;
33 33
import org.gvsig.raster.impl.grid.filter.RasterFilterImpl.Kernel;
34 34
import org.gvsig.raster.impl.store.ParamsImpl.ParamImpl;
35 35
import org.gvsig.tools.ToolsLocator;
......
122 122
			String name = "";
123 123
			for (int i = 0; i < params.getNumParams(); i++) {
124 124
				if (((ParamImpl)params.getParam(i)).getId().equals("Panel") &&
125
						((ParamImpl)params.getParam(i)).getDefaultValue() instanceof RegistrableFilterListener) {
126
					params = ((RegistrableFilterListener) ((ParamImpl)params.getParam(i)).getDefaultValue()).getParams();
125
						((ParamImpl)params.getParam(i)).getDefaultValue() instanceof DefaultRegistrableFilterListener) {
126
					params = ((DefaultRegistrableFilterListener) ((ParamImpl)params.getParam(i)).getDefaultValue()).getParams();
127 127
					break;
128 128
				}
129 129
			}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/filter/DefaultRegistrableFilterListener.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
 *
3
 * Copyright (C) 2007-2008 Infrastructures and Transports Department
4
 * of the Valencian Government (CIT)
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 2
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 */
22
package org.gvsig.raster.impl.grid.filter;
23

  
24
import java.util.ArrayList;
25
import java.util.EventObject;
26
import java.util.Iterator;
27

  
28
import javax.swing.JPanel;
29

  
30
import org.gvsig.fmap.dal.coverage.datastruct.Params;
31
import org.gvsig.fmap.dal.coverage.grid.FilterUIListener;
32

  
33
/**
34
 * Clase de la que deben heredar todos los paneles para filtros 
35
 * definidos por el usuario. Tiene los m?todos para el registro de listeners
36
 * 
37
 * 28/09/2007
38
 * @author Nacho Brodin nachobrodin@gmail.com
39
 */
40
public class DefaultRegistrableFilterListener extends JPanel {
41
	private static final long           serialVersionUID       = 5528469123516861351L;
42
	private ArrayList<FilterUIListener>          
43
	                                    actionCommandListeners = new ArrayList<FilterUIListener>();
44
	protected Params                    params                 = null;
45
	
46
	/**
47
	 * Borrar el disparador de eventos de los botones.
48
	 * @param listener
49
	 */
50
	public void removeStateChangedListener(FilterUIListener listener) {
51
		actionCommandListeners.remove(listener);
52
	}
53

  
54
	
55
	/**
56
	 * 
57
	 * Ejecuci?n del m?todo actionValuesCompleted en todos los filtros registrados
58
	 */
59
	public void callStateChanged() {
60
		Iterator<FilterUIListener> acIterator = actionCommandListeners.iterator();
61
		while (acIterator.hasNext()) {
62
			FilterUIListener listener = (FilterUIListener) acIterator.next();
63
			listener.actionValuesCompleted(new EventObject(this));
64
		}
65
	}
66
	
67
	/**
68
	 * A?adir el listener para los paneles definidos por el usuario
69
	 * @param listener
70
	 */
71
	public void addFilterUIListener(FilterUIListener listener) {
72
		if (!actionCommandListeners.contains(listener))
73
			actionCommandListeners.add(listener);
74
	}
75
	
76
	/**
77
	 * Obtiene los par?metros cargados por el panel
78
	 * @return
79
	 */
80
	public Params getParams() {
81
		return params;
82
	}
83
	
84
	/**
85
	 * Sets the parameters
86
	 * @param params
87
	 */
88
	public void setParams(Params params) {
89
		this.params = params;
90
	}
91
}
0 92

  
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/filter/DefaultRasterFilterList.java
60 60
	 */
61 61
	private ArrayList<FilterListChangeListener>        
62 62
	                         filterListListener   = new ArrayList<FilterListChangeListener>();
63
	private RasterFilterListManagerImpl
64
                             manager              = null;
63 65

  
64 66
	/**
65 67
	 * Asigna un listener a la lista que ser? informado cuando cambie un
......
562 564
	 */
563 565
	@SuppressWarnings("unchecked")
564 566
	public RasterFilterListManager getManagerByFilterClass(Class c) {
565
		return new RasterFilterListManagerImpl(this).getManagerByFilterClass(c);
567
		if(manager == null)
568
			manager = new RasterFilterListManagerImpl(this);
569
		return manager.getManagerByFilterClass(c);
566 570
	}
567 571
	
568 572
	/*
......
572 576
	public Params getEmptyFilterParams() {
573 577
		return new ParamsImpl();
574 578
	}
579
	
580
	/*
581
	 * (non-Javadoc)
582
	 * @see org.gvsig.fmap.dal.coverage.grid.RasterFilterList#getRegisteredFilterList()
583
	 */
584
	@SuppressWarnings("unchecked")
585
	public ArrayList getRegisteredFilterList() {
586
		if(manager == null)
587
			manager = new RasterFilterListManagerImpl(this);
588
		return manager.getRasterFilterList();
589
	}
575 590

  
576 591
	/**
577 592
	 * Releases buffer resources
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/grid/filter/RasterFilterImpl.java
334 334
	 */
335 335
	abstract public String getGroup();
336 336

  
337
	/**
338
	 * Obtener que datos puede tratar una interfaz con sus valores
339
	 * @param nameFilter. Cada tipo de filtro puede tener parametros distintos
340
	 * @return
337
	/*
338
	 * (non-Javadoc)
339
	 * @see org.gvsig.fmap.dal.coverage.grid.RasterFilter#getUIParams(java.lang.String)
341 340
	 */
342 341
	abstract public Params getUIParams(String nameFilter);
343 342

  
344
	/**
345
	 * Obtener que las entradas que puede aperecer un filtro en el interfaz
346
	 * @return
343
	/*
344
	 * (non-Javadoc)
345
	 * @see org.gvsig.fmap.dal.coverage.grid.RasterFilter#getNames()
347 346
	 */
348 347
	abstract public String[] getNames();
349 348

  
350
	/**
351
	 * Devolver? un booleano indicando si es visible o no en el panel de filtros.
352
	 * @return
349
	/*
350
	 * (non-Javadoc)
351
	 * @see org.gvsig.fmap.dal.coverage.grid.RasterFilter#isVisible()
353 352
	 */
354 353
	public boolean isVisible() {
355 354
		return true;
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/provider/DefaultRasterProvider.java
56 56
import org.gvsig.fmap.dal.exception.OpenException;
57 57
import org.gvsig.fmap.dal.exception.ReadException;
58 58
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
59
import org.gvsig.fmap.dal.raster.impl.DefaultCoverageStore;
59 60
import org.gvsig.fmap.dal.resource.spi.ResourceProvider;
60 61
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorer;
61 62
import org.gvsig.fmap.dal.serverexplorer.filesystem.FilesystemServerExplorerParameters;
......
199 200
			clase = extReader.getExtension();
200 201
		}
201 202

  
202
		Class [] args = {AbstractRasterStoreParameters.class, DataStoreProviderServices.class};
203
		Class [] args = {param.getClass(), DefaultCoverageStore.class};
203 204
		try {
204 205
			Constructor hazNuevo = clase.getConstructor(args);
205 206
			Object [] args2 = {param, null};
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.impl/src/main/java/org/gvsig/raster/impl/store/ParamsImpl.java
234 234
	 */
235 235
	@SuppressWarnings("unchecked")
236 236
	public Object clone() throws CloneNotSupportedException {
237
		Object aux = super.clone();
237
		ParamsImpl aux = new ParamsImpl();
238 238
		((ParamsImpl) aux).params = (ArrayList<Param>) this.params.clone();
239 239
		return aux;
240 240
	}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/datastruct/Params.java
104 104
	 * @return
105 105
	 */
106 106
	public ArrayList<Param> getParams();
107
	
108
	/**
109
	 * Clones this object
110
	 * @return
111
	 * @throws CloneNotSupportedException
112
	 */
113
	public Object clone() throws CloneNotSupportedException;
107 114
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/grid/RasterFilter.java
24 24
import java.util.Hashtable;
25 25
import java.util.TreeMap;
26 26

  
27
import org.gvsig.fmap.dal.coverage.datastruct.Params;
27 28
import org.gvsig.fmap.dal.coverage.exception.ProcessInterruptedException;
28 29

  
29 30
/**
......
124 125
		 * @return
125 126
		 */
126 127
		public Hashtable getParams();
128
		
129
		/**
130
		 * Devolver? un booleano indicando si es visible o no en el panel de filtros.
131
		 * @return
132
		 */
133
		public boolean isVisible();
134
		
135
		/**
136
		 * Obtener que datos puede tratar una interfaz con sus valores
137
		 * @param nameFilter. Cada tipo de filtro puede tener parametros distintos
138
		 * @return
139
		 */
140
		public Params getUIParams(String nameFilter);
141
		
142
		/**
143
		 * Gets the list of specific filter names. Each kind of filter can have a list
144
		 * of specific types. This function returns the names of this filters
145
		 * @return
146
		 */
147
		public String[] getNames();
127 148
}
org.gvsig.raster/trunk/org.gvsig.raster/org.gvsig.raster.lib/org.gvsig.raster.lib.api/src/main/java/org/gvsig/fmap/dal/coverage/grid/FilterUIListener.java
1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
package org.gvsig.fmap.dal.coverage.grid;
23

  
24
import java.util.EventListener;
25
import java.util.EventObject;
26

  
27
/**
28
 * Listener para acciones lanzadas por los interfaces personalizados 
29
 * para filtros hechos por los usuarios.
30
 * 28/09/2007
31
 * @author Nacho Brodin nachobrodin@gmail.com
32
 */
33
public interface FilterUIListener extends EventListener {
34
	/**
35
	 * Este evento es lanzado al terminar de rellenar todos los campos
36
	 * del interfaz. Informa de que ya pueden ser recuperados.
37
	 * @param e
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff