Revision 12597

View differences:

trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/properties/control/PanSharpeningControl.java
1
package org.gvsig.rastertools.properties.control;
2

  
3
import java.awt.event.ActionEvent;
4
import java.awt.event.ActionListener;
5
import java.util.ArrayList;
6

  
7
import javax.swing.event.ChangeEvent;
8
import javax.swing.event.ChangeListener;
9
import javax.swing.event.TableModelEvent;
10

  
11
import org.gvsig.gui.beans.slidertext.listeners.SliderEvent;
12
import org.gvsig.gui.beans.slidertext.listeners.SliderListener;
13
import org.gvsig.raster.dataset.RasterDataset;
14
import org.gvsig.raster.grid.filter.RasterFilter;
15
import org.gvsig.raster.grid.filter.RasterFilterList;
16
import org.gvsig.raster.grid.filter.RasterFilterListManager;
17
import org.gvsig.raster.grid.filter.pansharp.PanSharpeningFilter;
18
import org.gvsig.raster.grid.filter.pansharp.PanSharpeningListManager;
19
import org.gvsig.raster.gui.properties.dialog.RegistrableTabPanel;
20
import org.gvsig.raster.hierarchy.IRasterDataset;
21
import org.gvsig.raster.hierarchy.IRasterProperties;
22
import org.gvsig.rastertools.properties.panels.PanSharpeningPanel;
23

  
24
import com.iver.cit.gvsig.fmap.layers.FLayer;
25
/**
26
 * Clase que hace de interfaz entre los objetos que contienen la informaci?n de
27
 * pansharp y el panel.
28
 *
29
 * @author Nacho Brodin (nachobrodin@gmail.com)
30
 */
31

  
32
public class PanSharpeningControl implements ActionListener, SliderListener, ChangeListener  {
33

  
34
	private PanSharpeningPanel 			pansharpPanel=null;
35
	protected RasterDataset[] 			grd = null;
36
	private FLayer		 				fLayer = null;
37
	private RasterFilterList            filterList = null;
38
	private IRasterDataset				dataset = null;
39
	private IRasterProperties			prop = null;
40
	
41

  
42
	public void actionValueChanged(SliderEvent e) {
43
		// TODO Auto-generated method stub
44
		
45
	}
46

  
47
	public void actionValueDragged(SliderEvent e) {
48
		// TODO Auto-generated method stub
49
		
50
	}
51

  
52
	public PanSharpeningControl(PanSharpeningPanel pP,IRasterDataset dataset,IRasterProperties prop,FLayer lyr,RasterFilterList rfl) {
53
		this.pansharpPanel = pP;
54
		this.dataset = dataset;
55
		this.filterList = rfl;
56
		this.prop= prop;
57
		fLayer= lyr;
58
		pP.getCbActiveSharpening().addActionListener(this);
59
		pP.getJSlider().addChangeListener(this);
60
		pP.getJSlider1().addChangeListener(this);
61
	}
62
	
63
	
64
	public void init(IRasterDataset dset, IRasterProperties prop, FLayer lyr) {
65
		this.dataset = dset;
66
		this.prop=prop;
67
		fLayer = lyr;
68
	}
69
	
70
	public void stateChanged(ChangeEvent e) {
71
		//Ponemos el valor del texto del coeficiente 
72
        if (e.getSource().equals(pansharpPanel.getJSlider())) {
73
        	pansharpPanel.getJTextField().setText(String.valueOf((pansharpPanel.getJSlider().getValue()/200.0)));
74
        }
75
        
76
        if (e.getSource().equals(pansharpPanel.getJSlider1())) {
77
        	pansharpPanel.getJTextField1().setText(String.valueOf((pansharpPanel.getJSlider1().getValue()/2)));
78
        }
79
		
80
	}
81

  
82
	public void actionPerformed(ActionEvent e) {
83
		if(e.getSource() == pansharpPanel.getCbActiveSharpening()){
84
	    
85
			if(this.pansharpPanel.getCbActiveSharpening().isSelected()){
86
	        		pansharpPanel.setTableEnabled(true);
87
	        }else{
88
	        		pansharpPanel.setTableEnabled(false);
89
	        	}
90
	     }      
91
	}
92
	  	  
93
	  /* (non-Javadoc)
94
	     * @see javax.swing.event.TableModelListener#tableChanged(javax.swing.event.TableModelEvent)
95
	     */
96
	    public void tableChanged(TableModelEvent e) {
97
	        pansharpPanel.getBandTable().revalidate();
98
	        pansharpPanel.getRBandPane().revalidate();
99
	    }
100

  
101
	    
102
	    // Aciones tras aceptar
103
	    public void  apply(){
104
	    	setValuesFromPanelToFilter();
105
	    }
106
	    
107
	    public void accept(){
108
	    	setValuesFromPanelToFilter();
109
	    }
110
	    
111
	    public void cancel(){
112
	    	restoreStatus();
113
	    }
114
	  
115
	    public void restoreStatus(){
116
	    	filterList.setStatus((ArrayList) RegistrableTabPanel.initialProperties.get("filterStatus"));
117

  
118
			if (fLayer != null)
119
				fLayer.getMapContext().invalidate();
120
	    }
121
	       
122
	    /**
123
		 * Carga los valores del filtro de Pansharpening desde el panel
124
		 */
125
		private void setValuesFromPanelToFilter() {
126
			
127
			RasterFilterListManager manager = new RasterFilterListManager(filterList);
128
			// PANSHARPENING FILTER
129
			PanSharpeningListManager bcManager = (PanSharpeningListManager) manager.getManagerByClass(PanSharpeningListManager.class);
130
		
131
			if (pansharpPanel.getCbActiveSharpening().isSelected()){		
132
				// Tomar los parametros de la interfas pharsharpPanel
133
				int posPancromatica= pansharpPanel.getBandTable().getSelectedRow();
134
				// Array con el orden de las bandas asignadas a RGB
135
				ArrayList orden = (ArrayList) RegistrableTabPanel.initialProperties.get("renderBands");
136
				String method = "brovey";
137
			 	if(pansharpPanel.getRbHSL().isSelected())
138
			 		method = "hsl";	
139
			 	double coef = 0D;
140
			 	if(pansharpPanel.getRbHSL().isSelected())
141
			 		coef = Double.parseDouble(pansharpPanel.getJTextField().getText());
142
			 	int coefBrovey = 0;
143
			 	if(pansharpPanel.getRbBrovey().isSelected())
144
			 		coefBrovey = Integer.parseInt(pansharpPanel.getJTextField1().getText());
145
//			 	A?adir el filtro 
146
				if(posPancromatica!=-1)
147
					bcManager.addPanSharpeningFilter(dataset,posPancromatica, orden, 1, method, coef, coefBrovey);
148
			
149
			}
150
			else
151
				filterList.remove(PanSharpeningFilter.class);
152

  
153
			ArrayList listOrder = (ArrayList) RegistrableTabPanel.initialProperties.get("filterOrder");
154
			ArrayList listCopy = filterList.getStatusCloned();
155
			int cont = 0;
156
			for (int i=0; i<listOrder.size(); i++) {
157
				int pos = hasFilter(listCopy, ((RasterFilter) listOrder.get(i)).getName());
158
				if (pos != -1) {
159
					// Esta pero en posicion equivocada
160
					if (pos != cont) {
161
						Object copy = listCopy.remove(pos);
162
						listCopy.add(cont, copy);
163
					}
164
					cont++;
165
				}
166
			}
167
			filterList.setStatus(listCopy);
168
			filterList.controlTypes();
169

  
170
			// Redibujamos
171
			if (fLayer!= null)
172
				fLayer.getMapContext().invalidate();
173
		}
174

  
175
		
176
	
177
		private int hasFilter(ArrayList filter, String name) {
178
			for (int i = 0; i < filter.size(); i++) {
179
				if (((RasterFilter) filter.get(i)).getName().equals(name))
180
					return i;
181
			}
182
			return -1;
183
		}
184
}
0 185

  
trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/properties/panels/PanSharpeningPanel.java
1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2007 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.properties.panels;
20

  
21
import java.awt.Component;
22
import java.awt.Dimension;
23
import java.awt.FlowLayout;
24
import java.awt.GridBagConstraints;
25
import java.awt.GridBagLayout;
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
28
import java.awt.image.DataBuffer;
29
import java.io.File;
30
import java.util.Vector;
31

  
32
import javax.swing.AbstractCellEditor;
33
import javax.swing.ButtonGroup;
34
import javax.swing.JCheckBox;
35
import javax.swing.JPanel;
36
import javax.swing.JRadioButton;
37
import javax.swing.JScrollPane;
38
import javax.swing.JSlider;
39
import javax.swing.JTable;
40
import javax.swing.JTextField;
41
import javax.swing.SwingConstants;
42
import javax.swing.SwingUtilities;
43
import javax.swing.event.TableModelEvent;
44
import javax.swing.event.TableModelListener;
45
import javax.swing.table.DefaultTableModel;
46
import javax.swing.table.TableCellEditor;
47
import javax.swing.table.TableCellRenderer;
48
import javax.swing.table.TableColumn;
49

  
50
import org.gvsig.raster.dataset.MultiRasterDataset;
51
import org.gvsig.raster.grid.filter.RasterFilterList;
52
import org.gvsig.raster.gui.properties.dialog.IRegistrablePanel;
53
import org.gvsig.raster.hierarchy.IRasterDataset;
54
import org.gvsig.raster.hierarchy.IRasterProperties;
55
import org.gvsig.raster.hierarchy.IRasterRendering;
56
import org.gvsig.rastertools.properties.control.PanSharpeningControl;
57

  
58
import com.iver.andami.PluginServices;
59
import com.iver.cit.gvsig.fmap.layers.FLayer;
60

  
61
/**
62
 * Selecciona las bandas visibles en un raster. Contiene una tabla con una fila por cada
63
 * banda de la imagen. Por medio de checkbox se selecciona para cada RGB que banda de la 
64
 * imagen ser? visualizada. 
65
 * @author Luis W. Sevilla (sevilla_lui@gva.es)
66
 * @author Nacho Brodin (brodin_ign@gva.es)
67
 */
68

  
69
public class PanSharpeningPanel extends JPanel implements IRegistrablePanel,TableModelListener {
70

  
71
	final private static long serialVersionUID = 0;
72
	
73
	 private String 						nom = "Pansharp";
74
	 private JTable 						rgbTable = null;
75
	 private JScrollPane 					bandPane = null;
76
	 private BandTableModel 				tableModel = null;
77
	 private int 							sizeX = 445;
78
	 private int 							sizeY = 174;
79
	 private JPanel							activationPanel = null;
80
	 private JCheckBox 						cbActiveSharpening = null;
81
	 private JPanel 						pSharpNorth = null;
82
	 private JPanel 						pSharpSouth = null;
83
	 private JRadioButton 					rbBrovey = null;
84
	 private JRadioButton 					rbHSL = null;
85
	 private JPanel 						pHSL = null;
86
	 private JSlider 						jSlider = null;
87
	 private JTextField 					jTextField = null;
88
	 private JPanel 						pBrovey = null;
89
	 private JSlider 						slBrovey = null;
90
	 private JTextField 					jTextField1 = null;
91
	 private PanSharpeningControl           pansharpControl=null;
92
	 private IRasterProperties     			prop              = null;
93
	 private IRasterDataset        			dataset           = null;
94
	 FLayer fLayer = null;
95
	 private final static String[] 	columnNames = { " ", "Band" };
96
	 
97
	
98
	public String id = "pansharp";
99

  
100
	
101
	public PanSharpeningPanel() 
102
	{
103
		super();
104
		id = PluginServices.getText(this, id);
105
		initialize();
106
	}
107

  
108
 
109
    void initialize() {
110
        this.setPreferredSize(new Dimension(sizeX, sizeY));
111
        this.setLayout(new FlowLayout());
112
        this.setLocation(0, 0);
113
        this.setSize(445, 239);
114
        this.add(getPSharpNorth(), null);
115
        this.setTableEnabled(false);
116
    }
117

  
118
    /**
119
     * Obtiene el nombre del panel
120
     * @return Cadena con el nombre del panel
121
     */
122
    public String getName(){
123
    	return this.nom;
124
    }
125
    
126
    /**
127
     * Activa o desactiva la tabla de selecci?n de banda de refinado
128
     * @param enable
129
     */
130
    public void setTableEnabled(boolean enabled){
131
    	this.getRBandPane().setEnabled(enabled);
132
        this.getBandTable().setEnabled(enabled);
133
        this.getJSlider().setEnabled(enabled);
134
        this.getJSlider1().setEnabled(enabled);
135
        this.getJTextField().setEnabled(enabled);
136
        this.getJTextField1().setEnabled(enabled);
137
        this.getRbBrovey().setEnabled(enabled);
138
        this.getRbHSL().setEnabled(enabled);
139
    }
140
    
141
    /**
142
     * Determina el bandtype de de cada banda y a?ade la banda a la tabla
143
     * */
144
    public void addFiles(MultiRasterDataset mDataset) {
145
    	for (int i = 0; i < mDataset.getDatasetCount(); i++) {
146
			String fName = mDataset.getDataset(i).getFName();
147

  
148
			String bandName = new File(fName).getName();
149
			String bandType = "";
150

  
151

  
152
			switch (mDataset.getDataset(i).getDataType()) {
153
			case DataBuffer.TYPE_BYTE:
154
				bandType = "8U";
155
				break;
156
			case DataBuffer.TYPE_INT:
157
				bandType = "32";
158
				break;
159
			case DataBuffer.TYPE_DOUBLE:
160
				bandType = "64";
161
				break;
162
			case DataBuffer.TYPE_FLOAT:
163
				bandType = "32";
164
				break;
165
			case DataBuffer.TYPE_SHORT:
166
				bandType = "16";
167
				break;
168
			case DataBuffer.TYPE_USHORT:
169
				bandType = "16U";
170
				break;
171
			case DataBuffer.TYPE_UNDEFINED:
172
				bandType = "??";
173
				break;
174
		}
175
			
176
			for (int b = 0; b < mDataset.getDataset(i).getBandCount(); b++)
177
				addBand((b + 1) + " [" + bandType + "] " + bandName);
178
	
179
        }
180
    }
181
    
182
    // A?ade una fila a la tabla
183
    private void addBand(String bandName) {
184
		Vector v = new Vector();
185
		v.add(new Boolean(false));
186
		v.add(bandName);
187
		((DefaultTableModel) getBandTable().getModel()).addRow(v);
188
	}
189
    
190
    
191
    public JTable getBandTable() {
192
        if (rgbTable == null) {
193
            tableModel = new BandTableModel();
194
            tableModel.addTableModelListener(this);
195
            rgbTable = new JTable(tableModel);
196
            rgbTable.setPreferredScrollableViewportSize(new Dimension(300, 60));
197
        }
198
        return rgbTable;
199
    }
200
    
201
    /**
202
     * Traducciones del panel
203
     */
204
    public void setTranslation(){
205
    	this.getCbActiveSharpening().setText(PluginServices.getText(this,"onSharpening"));
206
		this.getPSharpNorth().setBorder(javax.swing.BorderFactory.createTitledBorder(null, PluginServices.getText(this,"selectBandaRefinado"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
207
    }
208
    
209
    /**
210
     * This method initializes jTable
211
     *
212
     * @return javax.swing.JTable
213
     */
214
    public JScrollPane getRBandPane() {
215
        if (bandPane == null) {
216
            bandPane = new JScrollPane(getBandTable());
217
            bandPane.setPreferredSize(new java.awt.Dimension(400,100));
218
            bandPane.setEnabled(true);
219
            TableColumn column = null;
220

  
221
            for (int i = 0; i < 1; i++) {
222
               column = rgbTable.getColumnModel().getColumn(i);
223
               column.setCellRenderer((TableCellRenderer) new RadioColumnRenderer());
224
               column.setCellEditor((TableCellEditor) new RadioColumnEditor());
225
               column.setMaxWidth(22);
226
               column.setMinWidth(22);
227
          }
228
        }
229
        return bandPane;
230
    }
231
  
232
    /**
233
     * Obtiene el n?mero de bandas de la lista
234
     * @return
235
     */
236
    public int getNBands() {
237
        return ((DefaultTableModel) rgbTable.getModel()).getRowCount();
238
    }
239

  
240
    /**
241
     * Obtiene el nombre de la banda de la posici?n i de la tabla
242
     * @param i
243
     * @return
244
     */
245
    public String getBandName(int i) {
246
        String s = (String) ((DefaultTableModel) rgbTable.getModel()).getValueAt(i, 1);
247
        return s.substring(s.lastIndexOf("[8U]") + 5, s.length());
248
    }
249

  
250
    /**
251
     * Selecciona una banda de la tabla.
252
     * @param i
253
     */
254
    public void selectRow(int i){
255
    	((DefaultTableModel) rgbTable.getModel()).setValueAt(new Boolean(true),i,0);
256
    }
257
    
258
    /**
259
     * Elimina todas las filas seleccionadas
260
     */
261
    public void removeSelections(){
262
    	for(int i=0;i<((DefaultTableModel) rgbTable.getModel()).getRowCount();i++){
263
    		((DefaultTableModel) rgbTable.getModel()).setValueAt(new Boolean(false),i,0);
264
    	}
265
    }
266
    
267
   
268
	public JPanel getPSharpNorth() {
269
		if (pSharpNorth == null) {
270
			GridBagConstraints gridBagConstraints10 = new GridBagConstraints();
271
			gridBagConstraints10.gridx = 0;
272
			gridBagConstraints10.gridy = 1;
273
			GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
274
			GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
275
			pSharpNorth = new JPanel();
276
			pSharpNorth.setLayout(new GridBagLayout());
277
			pSharpNorth.setPreferredSize(new java.awt.Dimension(440,259));
278
			pSharpNorth.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Selector de banda de refinado", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
279
			gridBagConstraints2.gridx = 0;
280
			gridBagConstraints2.gridy = 0;
281
			gridBagConstraints2.anchor = java.awt.GridBagConstraints.WEST;
282
			gridBagConstraints2.gridwidth = 0;
283
			gridBagConstraints2.gridheight = 1;
284
			gridBagConstraints3.gridx = 0;
285
			gridBagConstraints3.gridy = 2;
286
			gridBagConstraints3.weightx = 0.0D;
287
			gridBagConstraints3.weighty = 0.0D;
288
			gridBagConstraints3.fill = java.awt.GridBagConstraints.NONE;
289
			gridBagConstraints3.ipadx = 0;
290
			gridBagConstraints3.ipady = 0;
291
			gridBagConstraints3.insets = new java.awt.Insets(0,0,0,0);
292
			gridBagConstraints3.gridheight = 0;
293
			gridBagConstraints3.gridwidth = 0;
294
			pSharpNorth.add(getActivationPanel(), gridBagConstraints2);
295
			pSharpNorth.add(getRBandPane(), gridBagConstraints3);
296
			pSharpNorth.add(getPSharpSouth(), gridBagConstraints10);
297
		}
298
		return pSharpNorth;
299
	}
300
   
301
	private JPanel getActivationPanel() {
302
		if (activationPanel == null) {
303
			FlowLayout flowLayout = new FlowLayout();
304
			flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
305
			flowLayout.setVgap(0);
306
			flowLayout.setHgap(0);
307
			activationPanel = new JPanel();
308
			activationPanel.setLayout(flowLayout);
309
			activationPanel.setPreferredSize(new java.awt.Dimension(340,30));
310
			activationPanel.add(getCbActiveSharpening(), null);
311
		}
312
		return activationPanel;
313
	}
314
	
315
	public JCheckBox getCbActiveSharpening() {
316
		if (cbActiveSharpening == null) {
317
			cbActiveSharpening = new JCheckBox();
318
			cbActiveSharpening.setText("Activar Pansharpening");
319
			cbActiveSharpening.setPreferredSize(new java.awt.Dimension(150,23));
320
			cbActiveSharpening.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
321
		}
322
		return cbActiveSharpening;
323
	}
324
	
325
	
326
	private JPanel getPSharpSouth() {
327
		if (pSharpSouth == null) {
328
			GridBagConstraints gridBagConstraints8 = new GridBagConstraints();
329
			GridBagConstraints gridBagConstraints9 = new GridBagConstraints();
330
			pSharpSouth = new JPanel();
331
			pSharpSouth.setLayout(new GridBagLayout());
332
			pSharpSouth.setPreferredSize(new java.awt.Dimension(410,62));
333
			gridBagConstraints9.gridy = 1;
334
			gridBagConstraints8.gridy = 0;
335
			pSharpSouth.add(getJPanel(), gridBagConstraints8);
336
			ButtonGroup group = new ButtonGroup();
337
			group.add(getRbBrovey());
338
			group.add(getRbHSL());
339
			gridBagConstraints9.ipadx = 0;
340
			pSharpSouth.add(getPKernel(), gridBagConstraints9);
341
		}
342
		return pSharpSouth;
343
	}
344
	/**
345
	 * This method initializes jRadioButton	
346
	 * 	
347
	 * @return javax.swing.JRadioButton	
348
	 */    
349
	public JRadioButton getRbBrovey() {
350
		if (rbBrovey == null) {
351
			rbBrovey = new JRadioButton();
352
			rbBrovey.setText("Brovey");
353
			rbBrovey.setPreferredSize(new java.awt.Dimension(70,23));
354
			rbBrovey.setSelected(true);
355
		}
356
		return rbBrovey;
357
	}
358
	/**
359
	 * This method initializes jRadioButton	
360
	 * 	
361
	 * @return javax.swing.JRadioButton	
362
	 */    
363
	public JRadioButton getRbHSL() {
364
		if (rbHSL == null) {
365
			rbHSL = new JRadioButton();
366
			rbHSL.setText("HSL");
367
			rbHSL.setPreferredSize(new java.awt.Dimension(70,23));
368
		}
369
		return rbHSL;
370
	}
371
	/**
372
	 * This method initializes jPanel	
373
	 * 	
374
	 * @return javax.swing.JPanel	
375
	 */    
376
	private JPanel getPKernel() {
377
		if (pHSL == null) {
378
			GridBagConstraints gridBagConstraints7 = new GridBagConstraints();
379
			GridBagConstraints gridBagConstraints6 = new GridBagConstraints();
380
			GridBagConstraints gridBagConstraints5 = new GridBagConstraints();
381
			pHSL = new JPanel();
382
			pHSL.setLayout(new GridBagLayout());
383
			pHSL.setPreferredSize(new java.awt.Dimension(400,30));
384
			gridBagConstraints5.gridx = 0;
385
			gridBagConstraints5.gridy = 0;
386
			gridBagConstraints5.insets = new java.awt.Insets(0,0,0,0);
387
			gridBagConstraints5.gridheight = 0;
388
			gridBagConstraints6.gridx = 1;
389
			gridBagConstraints6.gridwidth = 1;
390
			gridBagConstraints6.gridy = 0;
391
			gridBagConstraints6.weightx = 1.0;
392
			gridBagConstraints6.fill = java.awt.GridBagConstraints.HORIZONTAL;
393
			gridBagConstraints6.insets = new java.awt.Insets(0,0,0,0);
394
			gridBagConstraints6.gridheight = 0;
395
			gridBagConstraints7.weightx = 1.0D;
396
			gridBagConstraints7.weighty = 1.0D;
397
			gridBagConstraints7.gridwidth = 1;
398
			gridBagConstraints7.fill = java.awt.GridBagConstraints.HORIZONTAL;
399
			gridBagConstraints7.gridheight = 1;
400
			gridBagConstraints7.gridy = 0;
401
			gridBagConstraints7.gridx = 2;
402
			pHSL.add(getJTextField(), gridBagConstraints7);
403
			pHSL.add(getRbHSL(), gridBagConstraints5);
404
			pHSL.add(getJSlider(), gridBagConstraints6);
405
			this.getJSlider().setValue(0);
406
		}
407
		return pHSL;
408
	}
409
	/**
410
	 * This method initializes jSlider	
411
	 * 	
412
	 * @return javax.swing.JSlider	
413
	 */    
414
	public JSlider getJSlider() {
415
		if (jSlider == null) {
416
			jSlider = new JSlider();
417
			jSlider.setMinimum(0);
418
			jSlider.setPreferredSize(new java.awt.Dimension(180,16));
419
			jSlider.setMaximum(100);
420
			
421
		}
422
		return jSlider;
423
	}
424
	/**
425
	 * This method initializes jTextField	
426
	 * 	
427
	 * @return javax.swing.JTextField	
428
	 */    
429
	public JTextField getJTextField() {
430
		if (jTextField == null) {
431
			jTextField = new JTextField();
432
			jTextField.setPreferredSize(new java.awt.Dimension(20,19));
433
			jTextField.setText("0.0");
434
		}
435
		return jTextField;
436
	}
437

  
438
	
439
	/**
440
	 * This method initializes jPanel	
441
	 * 	
442
	 * @return javax.swing.JPanel	
443
	 */
444
	private JPanel getJPanel() {
445
		if (pBrovey == null) {
446
			GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
447
			gridBagConstraints11.fill = java.awt.GridBagConstraints.HORIZONTAL;
448
			gridBagConstraints11.gridx = 2;
449
			gridBagConstraints11.gridy = 0;
450
			gridBagConstraints11.weighty = 1.0D;
451
			gridBagConstraints11.weightx = 1.0;
452
			GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
453
			gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL;
454
			gridBagConstraints1.gridheight = 0;
455
			gridBagConstraints1.gridx = 1;
456
			gridBagConstraints1.gridy = 0;
457
			gridBagConstraints1.weightx = 1.0;
458
			GridBagConstraints gridBagConstraints = new GridBagConstraints();
459
			gridBagConstraints.anchor = java.awt.GridBagConstraints.CENTER;
460
			gridBagConstraints.gridy = 0;
461
			gridBagConstraints.gridheight = 0;
462
			gridBagConstraints.gridx = 0;
463
			pBrovey = new JPanel();
464
			pBrovey.setLayout(new GridBagLayout());
465
			pBrovey.setPreferredSize(new java.awt.Dimension(400,30));
466
			pBrovey.add(getRbBrovey(), gridBagConstraints);
467
			pBrovey.add(getJSlider1(), gridBagConstraints1);
468
			this.getJSlider1().setValue(0);
469
			pBrovey.add(getJTextField1(), gridBagConstraints11);
470
		}
471
		return pBrovey;
472
	}
473

  
474
	/**
475
	 * This method initializes jSlider1	
476
	 * 	
477
	 * @return javax.swing.JSlider	
478
	 */
479
	public JSlider getJSlider1() {
480
		if (slBrovey == null) {
481
			slBrovey = new JSlider();
482
			slBrovey.setMaximum(100);
483
			slBrovey.setPreferredSize(new java.awt.Dimension(180,16));
484
			
485
		}
486
		return slBrovey;
487
	}
488

  
489
	/**
490
	 * This method initializes jTextField1	
491
	 * 	
492
	 * @return javax.swing.JTextField	
493
	 */
494
	public JTextField getJTextField1() {
495
		if (jTextField1 == null) {
496
			jTextField1 = new JTextField();
497
			jTextField1.setPreferredSize(new java.awt.Dimension(20,19));
498
			jTextField1.setText("0");
499
		}
500
		return jTextField1;
501
	}
502
	
503
	
504
	
505
	/*
506
	 * Actualiza por si hay variaciones*/
507
	private void refresh() {
508
		setLayer(fLayer);
509
		
510
	}
511

  
512
	/*
513
	 * (non-Javadoc)
514
	 * @see org.gvsig.rastertools.properties.dialog.IRegistrablePanel#getID()
515
	 */
516
	public String getID() {
517
		return id;
518
	}
519

  
520
	/*
521
	 * (non-Javadoc)
522
	 * @see org.gvsig.rastertools.properties.dialog.IRegistrablePanel#selectTab(java.lang.String)
523
	 */
524
	public void selectTab(String id) {
525
		if (this.id.equals(id))
526
			refresh();
527
		
528
	}
529

  
530
	public void accept() {
531
		pansharpControl.accept();
532
	}
533

  
534
	/**
535
	 * Aplicar los cambios sin guardar su estado
536
	 */
537
	public void apply() {
538
		pansharpControl.apply();
539
	}
540

  
541
	public void cancel() {
542
		pansharpControl.cancel();
543
	}
544

  
545
	public void setComponentSize(int w, int h) {
546
		
547
	}
548
	
549
	
550
	public void setLayer(FLayer lyr) {
551
		fLayer = lyr;
552
		RasterFilterList rfl = null;
553
		clear();
554
		if (lyr instanceof IRasterRendering) {
555
			if (((IRasterRendering) lyr).existColorTable()) {
556
				pansharpControl.init(null, null, lyr);
557
				this.setEnabled(false);
558
				return;
559
			}
560
		}
561

  
562
		this.setEnabled(true);
563

  
564
		if (lyr instanceof IRasterProperties)
565
			prop = (IRasterProperties) lyr;
566

  
567
		if (lyr instanceof IRasterDataset) {
568
			dataset = (IRasterDataset) lyr;
569
			addFiles(dataset.getGeoRasterMultiDataset());
570
		}
571
		if(lyr instanceof IRasterProperties)
572
			rfl = (((IRasterProperties)lyr).getRenderFilterList());
573
		
574
		pansharpControl= new PanSharpeningControl(this, dataset,prop, lyr, rfl);
575
		
576
	}
577

  
578
	/**
579
	 * Elimina todas las entradas de la tabla de bandas.
580
	 */
581
	private void clear() {
582
		int rows = ((DefaultTableModel) getBandTable().getModel()).getRowCount();
583
		if (rows > 0) {
584
			for (int i = 0; i < rows; i++)
585
				((DefaultTableModel) getBandTable().getModel()).removeRow(0);
586
		}
587
	}
588
	
589
	
590
	
591
	 class RadioColumnEditor extends AbstractCellEditor implements TableCellEditor {
592
			final private static long serialVersionUID = -3370601314380922368L;
593
			public JRadioButton       theRadioButton;
594

  
595
			public RadioColumnEditor() {
596
				super();
597
				theRadioButton = new JRadioButton();
598
				theRadioButton.addActionListener(new ActionListener() {
599
					public void actionPerformed(ActionEvent event) {
600
						fireEditingStopped();
601
						//setMode(mode);
602
						//onlyApply();
603
					}
604
				});
605
			}
606

  
607
			public Component getTableCellEditorComponent(JTable table, Object obj, boolean isSelected, int row, int col) {
608
				theRadioButton.setHorizontalAlignment(SwingUtilities.CENTER);
609

  
610
				Boolean lValueAsBoolean = (Boolean) obj;
611
				theRadioButton.setSelected(lValueAsBoolean.booleanValue());
612

  
613
				return theRadioButton;
614
			}
615

  
616
			public Object getCellEditorValue() {
617
				return new Boolean(theRadioButton.isSelected());
618
			}
619
		}
620

  
621
		class RadioColumnRenderer extends JRadioButton implements TableCellRenderer {
622
			final private static long serialVersionUID = -3370601314380922368L;
623

  
624
			public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
625
				if (value == null) {
626
					this.setSelected(false);
627
				}
628

  
629
				Boolean ValueAsBoolean = (Boolean) value;
630
				this.setSelected(ValueAsBoolean.booleanValue());
631
				this.setHorizontalAlignment(SwingConstants.CENTER);
632

  
633
				return this;
634
			}
635
		}
636
		
637
		  // Modelo de la tabla que contiene las bandas
638
	    class BandTableModel extends DefaultTableModel {
639
			final private static long serialVersionUID = -3370601314380922368L;
640
			 // String de con las cabeceras de la tabla
641
			 
642
			public BandTableModel() {
643
				super(new Object[0][2], columnNames);
644
			}
645

  
646
			public Class getColumnClass(int c) {
647
				if (c < 1) {
648
					return Boolean.class;
649
				}
650

  
651
				return String.class;
652
			}
653

  
654

  
655
			 public void addNew() {
656
		            super.addRow(new Object[] { new Boolean(false), ""});
657
		        }
658
			 
659
			 public void addRow(){
660
				addRow(new Object[] { new Boolean(false), ""});
661
				 
662
			 }
663
			public void setValueAt(Object value, int row, int col) {
664
				if ((col < 1) && ((Boolean) value).booleanValue()) {
665
					for (int i = 0; i < getRowCount(); i++) {
666
						if (i != row) {
667
							setValueAt(new Boolean(false), i, col);
668
						}
669
					}
670
				}
671

  
672
				super.setValueAt(value, row, col);
673
			}		
674
		}
675

  
676
		public void tableChanged(TableModelEvent arg0) {
677
			
678
		}
679

  
680
}
681

  
0 682

  

Also available in: Unified diff