root / trunk / extensions / extRasterTools-SE / src / org / gvsig / rastertools / properties / panels / PanSharpeningPanel.java @ 18061
History | View | Annotate | Download (20.7 KB)
1 | 12597 | amunoz | /* 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 | 13277 | nacho | import org.gvsig.fmap.raster.layers.FLyrRasterSE; |
51 | 13599 | bsanchez | import org.gvsig.fmap.raster.layers.IRasterLayerActions; |
52 | 15781 | bsanchez | import org.gvsig.gui.beans.panelGroup.panels.AbstractPanel; |
53 | 13599 | bsanchez | import org.gvsig.gui.util.StatusComponent; |
54 | 13328 | nacho | import org.gvsig.raster.dataset.IRasterDataSource; |
55 | 12597 | amunoz | import org.gvsig.raster.grid.filter.RasterFilterList; |
56 | import org.gvsig.raster.hierarchy.IRasterDataset; |
||
57 | import org.gvsig.raster.hierarchy.IRasterProperties; |
||
58 | import org.gvsig.raster.hierarchy.IRasterRendering; |
||
59 | import org.gvsig.rastertools.properties.control.PanSharpeningControl; |
||
60 | |||
61 | import com.iver.andami.PluginServices; |
||
62 | import com.iver.cit.gvsig.fmap.layers.FLayer; |
||
63 | |||
64 | /**
|
||
65 | * Selecciona las bandas visibles en un raster. Contiene una tabla con una fila por cada
|
||
66 | 15804 | bsanchez | * banda de la imagen. Por medio de checkbox se selecciona para cada RGB que banda de la
|
67 | * imagen ser? visualizada.
|
||
68 | 12597 | amunoz | * @author Luis W. Sevilla (sevilla_lui@gva.es)
|
69 | * @author Nacho Brodin (brodin_ign@gva.es)
|
||
70 | */
|
||
71 | |||
72 | 15781 | bsanchez | public class PanSharpeningPanel extends AbstractPanel implements TableModelListener { |
73 | 13599 | bsanchez | final private static long serialVersionUID = 0; |
74 | 15804 | bsanchez | |
75 | 13599 | bsanchez | private String nom = "Pansharp"; |
76 | private JTable rgbTable = null; |
||
77 | private JScrollPane bandPane = null; |
||
78 | private BandTableModel tableModel = null; |
||
79 | private int sizeX = 445; |
||
80 | private int sizeY = 174; |
||
81 | private JPanel activationPanel = null; |
||
82 | private JCheckBox cbActiveSharpening = null; |
||
83 | private JPanel pSharpNorth = null; |
||
84 | private JPanel pSharpSouth = null; |
||
85 | private JRadioButton rbBrovey = null; |
||
86 | private JRadioButton rbHSL = null; |
||
87 | private JPanel pHSL = null; |
||
88 | private JSlider jSlider = null; |
||
89 | private JTextField jTextField = null; |
||
90 | private JPanel pBrovey = null; |
||
91 | private JSlider slBrovey = null; |
||
92 | private JTextField jTextField1 = null; |
||
93 | private PanSharpeningControl pansharpControl = null; |
||
94 | private IRasterProperties prop = null; |
||
95 | private IRasterDataset dataset = null; |
||
96 | FLayer fLayer = null;
|
||
97 | private final static String[] columnNames = { " ", "Band" }; |
||
98 | 12597 | amunoz | |
99 | 15804 | bsanchez | public PanSharpeningPanel()
|
100 | 12597 | amunoz | { |
101 | super();
|
||
102 | 15781 | bsanchez | setLabel(PluginServices.getText(this, "pansharp")); |
103 | 12597 | amunoz | initialize(); |
104 | } |
||
105 | |||
106 | 15804 | bsanchez | |
107 | 15781 | bsanchez | protected void initialize() { |
108 | 17047 | nbrodin | this.setPreferredSize(new Dimension(sizeX, sizeY)); |
109 | this.setLayout(new FlowLayout()); |
||
110 | this.setLocation(0, 0); |
||
111 | this.setSize(445, 239); |
||
112 | this.add(getPSharpNorth(), null); |
||
113 | this.setTableEnabled(false); |
||
114 | this.setPreferredSize(new Dimension(100, 80)); |
||
115 | } |
||
116 | 12597 | amunoz | |
117 | 15804 | bsanchez | /*
|
118 | * (non-Javadoc)
|
||
119 | 17047 | nbrodin | *
|
120 | 15804 | bsanchez | * @see org.gvsig.raster.gui.properties.dialog.IRegistrablePanel#initializeUI()
|
121 | */
|
||
122 | public void initializeUI() { |
||
123 | } |
||
124 | |||
125 | /**
|
||
126 | * Obtiene el nombre del panel
|
||
127 | * @return Cadena con el nombre del panel
|
||
128 | */
|
||
129 | public String getName(){ |
||
130 | return this.nom; |
||
131 | } |
||
132 | |||
133 | /**
|
||
134 | * Activa o desactiva la tabla de selecci?n de banda de refinado
|
||
135 | * @param enable
|
||
136 | */
|
||
137 | public void setTableEnabled(boolean enabled){ |
||
138 | this.getRBandPane().setEnabled(enabled);
|
||
139 | this.getBandTable().setEnabled(enabled);
|
||
140 | this.getJSlider().setEnabled(enabled);
|
||
141 | this.getJSlider1().setEnabled(enabled);
|
||
142 | this.getJTextField().setEnabled(enabled);
|
||
143 | this.getJTextField1().setEnabled(enabled);
|
||
144 | this.getRbBrovey().setEnabled(enabled);
|
||
145 | this.getRbHSL().setEnabled(enabled);
|
||
146 | } |
||
147 | |||
148 | /**
|
||
149 | * Determina el bandtype de de cada banda y a?ade la banda a la tabla
|
||
150 | * */
|
||
151 | public void addFiles(IRasterDataSource mDataset) { |
||
152 | for (int i = 0; i < mDataset.getDatasetCount(); i++) { |
||
153 | 13328 | nacho | String fName = mDataset.getDataset(i)[0].getFName(); |
154 | 12597 | amunoz | |
155 | String bandName = new File(fName).getName(); |
||
156 | String bandType = ""; |
||
157 | |||
158 | |||
159 | 13377 | nacho | switch (mDataset.getDataset(i)[0].getDataType()[0]) { |
160 | 12597 | amunoz | case DataBuffer.TYPE_BYTE: |
161 | bandType = "8U";
|
||
162 | break;
|
||
163 | case DataBuffer.TYPE_INT: |
||
164 | bandType = "32";
|
||
165 | break;
|
||
166 | case DataBuffer.TYPE_DOUBLE: |
||
167 | bandType = "64";
|
||
168 | break;
|
||
169 | case DataBuffer.TYPE_FLOAT: |
||
170 | bandType = "32";
|
||
171 | break;
|
||
172 | case DataBuffer.TYPE_SHORT: |
||
173 | bandType = "16";
|
||
174 | break;
|
||
175 | case DataBuffer.TYPE_USHORT: |
||
176 | bandType = "16U";
|
||
177 | break;
|
||
178 | case DataBuffer.TYPE_UNDEFINED: |
||
179 | bandType = "??";
|
||
180 | break;
|
||
181 | } |
||
182 | 15804 | bsanchez | |
183 | 13328 | nacho | for (int b = 0; b < mDataset.getDataset(i)[0].getBandCount(); b++) |
184 | 12597 | amunoz | addBand((b + 1) + " [" + bandType + "] " + bandName); |
185 | 15804 | bsanchez | |
186 | } |
||
187 | } |
||
188 | |||
189 | // A?ade una fila a la tabla
|
||
190 | private void addBand(String bandName) { |
||
191 | 12597 | amunoz | Vector v = new Vector(); |
192 | v.add(new Boolean(false)); |
||
193 | v.add(bandName); |
||
194 | ((DefaultTableModel) getBandTable().getModel()).addRow(v);
|
||
195 | } |
||
196 | 15804 | bsanchez | |
197 | |||
198 | public JTable getBandTable() { |
||
199 | if (rgbTable == null) { |
||
200 | tableModel = new BandTableModel();
|
||
201 | tableModel.addTableModelListener(this);
|
||
202 | rgbTable = new JTable(tableModel); |
||
203 | rgbTable.setPreferredScrollableViewportSize(new Dimension(300, 60)); |
||
204 | } |
||
205 | return rgbTable;
|
||
206 | } |
||
207 | |||
208 | /**
|
||
209 | * Traducciones del panel
|
||
210 | */
|
||
211 | public void setTranslation(){ |
||
212 | this.getCbActiveSharpening().setText(PluginServices.getText(this,"onSharpening")); |
||
213 | 12597 | amunoz | 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)); |
214 | 15804 | bsanchez | } |
215 | 12597 | amunoz | |
216 | 15804 | bsanchez | /**
|
217 | * This method initializes jTable
|
||
218 | *
|
||
219 | * @return javax.swing.JTable
|
||
220 | */
|
||
221 | public JScrollPane getRBandPane() { |
||
222 | if (bandPane == null) { |
||
223 | bandPane = new JScrollPane(getBandTable()); |
||
224 | bandPane.setPreferredSize(new java.awt.Dimension(400,100)); |
||
225 | bandPane.setEnabled(true);
|
||
226 | TableColumn column = null; |
||
227 | 12597 | amunoz | |
228 | 15804 | bsanchez | for (int i = 0; i < 1; i++) { |
229 | column = rgbTable.getColumnModel().getColumn(i); |
||
230 | column.setCellRenderer((TableCellRenderer) new RadioColumnRenderer()); |
||
231 | column.setCellEditor((TableCellEditor) new RadioColumnEditor()); |
||
232 | column.setMaxWidth(22);
|
||
233 | column.setMinWidth(22);
|
||
234 | } |
||
235 | } |
||
236 | return bandPane;
|
||
237 | } |
||
238 | 12597 | amunoz | |
239 | 15804 | bsanchez | /**
|
240 | * Obtiene el n?mero de bandas de la lista
|
||
241 | * @return
|
||
242 | */
|
||
243 | public int getNBands() { |
||
244 | return ((DefaultTableModel) rgbTable.getModel()).getRowCount(); |
||
245 | } |
||
246 | |||
247 | /**
|
||
248 | * Obtiene el nombre de la banda de la posici?n i de la tabla
|
||
249 | * @param i
|
||
250 | * @return
|
||
251 | */
|
||
252 | public String getBandName(int i) { |
||
253 | String s = (String) ((DefaultTableModel) rgbTable.getModel()).getValueAt(i, 1); |
||
254 | return s.substring(s.lastIndexOf("[8U]") + 5, s.length()); |
||
255 | } |
||
256 | |||
257 | /**
|
||
258 | * Selecciona una banda de la tabla.
|
||
259 | * @param i
|
||
260 | */
|
||
261 | public void selectRow(int i){ |
||
262 | ((DefaultTableModel) rgbTable.getModel()).setValueAt(new Boolean(true),i,0); |
||
263 | } |
||
264 | |||
265 | /**
|
||
266 | * Elimina todas las filas seleccionadas
|
||
267 | */
|
||
268 | public void removeSelections(){ |
||
269 | for(int i=0;i<((DefaultTableModel) rgbTable.getModel()).getRowCount();i++){ |
||
270 | ((DefaultTableModel) rgbTable.getModel()).setValueAt(new Boolean(false),i,0); |
||
271 | } |
||
272 | } |
||
273 | |||
274 | |||
275 | 12597 | amunoz | public JPanel getPSharpNorth() { |
276 | if (pSharpNorth == null) { |
||
277 | GridBagConstraints gridBagConstraints10 = new GridBagConstraints(); |
||
278 | gridBagConstraints10.gridx = 0;
|
||
279 | gridBagConstraints10.gridy = 1;
|
||
280 | GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); |
||
281 | GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); |
||
282 | pSharpNorth = new JPanel(); |
||
283 | pSharpNorth.setLayout(new GridBagLayout()); |
||
284 | pSharpNorth.setPreferredSize(new java.awt.Dimension(440,259)); |
||
285 | 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)); |
||
286 | gridBagConstraints2.gridx = 0;
|
||
287 | gridBagConstraints2.gridy = 0;
|
||
288 | gridBagConstraints2.anchor = java.awt.GridBagConstraints.WEST; |
||
289 | gridBagConstraints2.gridwidth = 0;
|
||
290 | gridBagConstraints2.gridheight = 1;
|
||
291 | gridBagConstraints3.gridx = 0;
|
||
292 | gridBagConstraints3.gridy = 2;
|
||
293 | gridBagConstraints3.weightx = 0.0D;
|
||
294 | gridBagConstraints3.weighty = 0.0D;
|
||
295 | gridBagConstraints3.fill = java.awt.GridBagConstraints.NONE; |
||
296 | gridBagConstraints3.ipadx = 0;
|
||
297 | gridBagConstraints3.ipady = 0;
|
||
298 | gridBagConstraints3.insets = new java.awt.Insets(0,0,0,0); |
||
299 | gridBagConstraints3.gridheight = 0;
|
||
300 | gridBagConstraints3.gridwidth = 0;
|
||
301 | pSharpNorth.add(getActivationPanel(), gridBagConstraints2); |
||
302 | pSharpNorth.add(getRBandPane(), gridBagConstraints3); |
||
303 | pSharpNorth.add(getPSharpSouth(), gridBagConstraints10); |
||
304 | } |
||
305 | return pSharpNorth;
|
||
306 | } |
||
307 | 15804 | bsanchez | |
308 | 12597 | amunoz | private JPanel getActivationPanel() { |
309 | if (activationPanel == null) { |
||
310 | FlowLayout flowLayout = new FlowLayout(); |
||
311 | flowLayout.setAlignment(java.awt.FlowLayout.LEFT); |
||
312 | flowLayout.setVgap(0);
|
||
313 | flowLayout.setHgap(0);
|
||
314 | activationPanel = new JPanel(); |
||
315 | activationPanel.setLayout(flowLayout); |
||
316 | activationPanel.setPreferredSize(new java.awt.Dimension(340,30)); |
||
317 | activationPanel.add(getCbActiveSharpening(), null);
|
||
318 | } |
||
319 | return activationPanel;
|
||
320 | } |
||
321 | 15804 | bsanchez | |
322 | 12597 | amunoz | public JCheckBox getCbActiveSharpening() { |
323 | if (cbActiveSharpening == null) { |
||
324 | cbActiveSharpening = new JCheckBox(); |
||
325 | cbActiveSharpening.setText("Activar Pansharpening");
|
||
326 | cbActiveSharpening.setPreferredSize(new java.awt.Dimension(150,23)); |
||
327 | cbActiveSharpening.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); |
||
328 | } |
||
329 | return cbActiveSharpening;
|
||
330 | } |
||
331 | 15804 | bsanchez | |
332 | |||
333 | 12597 | amunoz | private JPanel getPSharpSouth() { |
334 | if (pSharpSouth == null) { |
||
335 | GridBagConstraints gridBagConstraints8 = new GridBagConstraints(); |
||
336 | GridBagConstraints gridBagConstraints9 = new GridBagConstraints(); |
||
337 | pSharpSouth = new JPanel(); |
||
338 | pSharpSouth.setLayout(new GridBagLayout()); |
||
339 | pSharpSouth.setPreferredSize(new java.awt.Dimension(410,62)); |
||
340 | gridBagConstraints9.gridy = 1;
|
||
341 | gridBagConstraints8.gridy = 0;
|
||
342 | pSharpSouth.add(getJPanel(), gridBagConstraints8); |
||
343 | ButtonGroup group = new ButtonGroup(); |
||
344 | group.add(getRbBrovey()); |
||
345 | group.add(getRbHSL()); |
||
346 | gridBagConstraints9.ipadx = 0;
|
||
347 | pSharpSouth.add(getPKernel(), gridBagConstraints9); |
||
348 | } |
||
349 | return pSharpSouth;
|
||
350 | } |
||
351 | /**
|
||
352 | 15804 | bsanchez | * This method initializes jRadioButton
|
353 | *
|
||
354 | * @return javax.swing.JRadioButton
|
||
355 | */
|
||
356 | 12597 | amunoz | public JRadioButton getRbBrovey() { |
357 | if (rbBrovey == null) { |
||
358 | rbBrovey = new JRadioButton(); |
||
359 | rbBrovey.setText("Brovey");
|
||
360 | rbBrovey.setPreferredSize(new java.awt.Dimension(70,23)); |
||
361 | rbBrovey.setSelected(true);
|
||
362 | } |
||
363 | return rbBrovey;
|
||
364 | } |
||
365 | /**
|
||
366 | 15804 | bsanchez | * This method initializes jRadioButton
|
367 | *
|
||
368 | * @return javax.swing.JRadioButton
|
||
369 | */
|
||
370 | 12597 | amunoz | public JRadioButton getRbHSL() { |
371 | if (rbHSL == null) { |
||
372 | rbHSL = new JRadioButton(); |
||
373 | rbHSL.setText("HSL");
|
||
374 | rbHSL.setPreferredSize(new java.awt.Dimension(70,23)); |
||
375 | } |
||
376 | return rbHSL;
|
||
377 | } |
||
378 | /**
|
||
379 | 15804 | bsanchez | * This method initializes jPanel
|
380 | *
|
||
381 | * @return javax.swing.JPanel
|
||
382 | */
|
||
383 | 12597 | amunoz | private JPanel getPKernel() { |
384 | if (pHSL == null) { |
||
385 | GridBagConstraints gridBagConstraints7 = new GridBagConstraints(); |
||
386 | GridBagConstraints gridBagConstraints6 = new GridBagConstraints(); |
||
387 | GridBagConstraints gridBagConstraints5 = new GridBagConstraints(); |
||
388 | pHSL = new JPanel(); |
||
389 | pHSL.setLayout(new GridBagLayout()); |
||
390 | pHSL.setPreferredSize(new java.awt.Dimension(400,30)); |
||
391 | gridBagConstraints5.gridx = 0;
|
||
392 | gridBagConstraints5.gridy = 0;
|
||
393 | gridBagConstraints5.insets = new java.awt.Insets(0,0,0,0); |
||
394 | gridBagConstraints5.gridheight = 0;
|
||
395 | gridBagConstraints6.gridx = 1;
|
||
396 | gridBagConstraints6.gridwidth = 1;
|
||
397 | gridBagConstraints6.gridy = 0;
|
||
398 | gridBagConstraints6.weightx = 1.0;
|
||
399 | gridBagConstraints6.fill = java.awt.GridBagConstraints.HORIZONTAL; |
||
400 | gridBagConstraints6.insets = new java.awt.Insets(0,0,0,0); |
||
401 | gridBagConstraints6.gridheight = 0;
|
||
402 | gridBagConstraints7.weightx = 1.0D;
|
||
403 | gridBagConstraints7.weighty = 1.0D;
|
||
404 | gridBagConstraints7.gridwidth = 1;
|
||
405 | gridBagConstraints7.fill = java.awt.GridBagConstraints.HORIZONTAL; |
||
406 | gridBagConstraints7.gridheight = 1;
|
||
407 | gridBagConstraints7.gridy = 0;
|
||
408 | gridBagConstraints7.gridx = 2;
|
||
409 | pHSL.add(getJTextField(), gridBagConstraints7); |
||
410 | pHSL.add(getRbHSL(), gridBagConstraints5); |
||
411 | pHSL.add(getJSlider(), gridBagConstraints6); |
||
412 | this.getJSlider().setValue(0); |
||
413 | } |
||
414 | return pHSL;
|
||
415 | } |
||
416 | /**
|
||
417 | 15804 | bsanchez | * This method initializes jSlider
|
418 | *
|
||
419 | * @return javax.swing.JSlider
|
||
420 | */
|
||
421 | 12597 | amunoz | public JSlider getJSlider() { |
422 | if (jSlider == null) { |
||
423 | jSlider = new JSlider(); |
||
424 | jSlider.setMinimum(0);
|
||
425 | jSlider.setPreferredSize(new java.awt.Dimension(180,16)); |
||
426 | jSlider.setMaximum(100);
|
||
427 | 15804 | bsanchez | |
428 | 12597 | amunoz | } |
429 | return jSlider;
|
||
430 | } |
||
431 | /**
|
||
432 | 15804 | bsanchez | * This method initializes jTextField
|
433 | *
|
||
434 | * @return javax.swing.JTextField
|
||
435 | */
|
||
436 | 12597 | amunoz | public JTextField getJTextField() { |
437 | if (jTextField == null) { |
||
438 | jTextField = new JTextField(); |
||
439 | jTextField.setPreferredSize(new java.awt.Dimension(20,19)); |
||
440 | jTextField.setText("0.0");
|
||
441 | } |
||
442 | return jTextField;
|
||
443 | } |
||
444 | |||
445 | 15804 | bsanchez | |
446 | 12597 | amunoz | /**
|
447 | 15804 | bsanchez | * This method initializes jPanel
|
448 | *
|
||
449 | * @return javax.swing.JPanel
|
||
450 | 12597 | amunoz | */
|
451 | private JPanel getJPanel() { |
||
452 | if (pBrovey == null) { |
||
453 | GridBagConstraints gridBagConstraints11 = new GridBagConstraints(); |
||
454 | gridBagConstraints11.fill = java.awt.GridBagConstraints.HORIZONTAL; |
||
455 | gridBagConstraints11.gridx = 2;
|
||
456 | gridBagConstraints11.gridy = 0;
|
||
457 | gridBagConstraints11.weighty = 1.0D;
|
||
458 | gridBagConstraints11.weightx = 1.0;
|
||
459 | GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); |
||
460 | gridBagConstraints1.fill = java.awt.GridBagConstraints.HORIZONTAL; |
||
461 | gridBagConstraints1.gridheight = 0;
|
||
462 | gridBagConstraints1.gridx = 1;
|
||
463 | gridBagConstraints1.gridy = 0;
|
||
464 | gridBagConstraints1.weightx = 1.0;
|
||
465 | GridBagConstraints gridBagConstraints = new GridBagConstraints(); |
||
466 | gridBagConstraints.anchor = java.awt.GridBagConstraints.CENTER; |
||
467 | gridBagConstraints.gridy = 0;
|
||
468 | gridBagConstraints.gridheight = 0;
|
||
469 | gridBagConstraints.gridx = 0;
|
||
470 | pBrovey = new JPanel(); |
||
471 | pBrovey.setLayout(new GridBagLayout()); |
||
472 | pBrovey.setPreferredSize(new java.awt.Dimension(400,30)); |
||
473 | pBrovey.add(getRbBrovey(), gridBagConstraints); |
||
474 | pBrovey.add(getJSlider1(), gridBagConstraints1); |
||
475 | this.getJSlider1().setValue(0); |
||
476 | pBrovey.add(getJTextField1(), gridBagConstraints11); |
||
477 | } |
||
478 | return pBrovey;
|
||
479 | } |
||
480 | |||
481 | /**
|
||
482 | 15804 | bsanchez | * This method initializes jSlider1
|
483 | *
|
||
484 | * @return javax.swing.JSlider
|
||
485 | 12597 | amunoz | */
|
486 | public JSlider getJSlider1() { |
||
487 | if (slBrovey == null) { |
||
488 | slBrovey = new JSlider(); |
||
489 | slBrovey.setMaximum(100);
|
||
490 | slBrovey.setPreferredSize(new java.awt.Dimension(180,16)); |
||
491 | 15804 | bsanchez | |
492 | 12597 | amunoz | } |
493 | return slBrovey;
|
||
494 | } |
||
495 | |||
496 | /**
|
||
497 | 15804 | bsanchez | * This method initializes jTextField1
|
498 | *
|
||
499 | * @return javax.swing.JTextField
|
||
500 | 12597 | amunoz | */
|
501 | public JTextField getJTextField1() { |
||
502 | if (jTextField1 == null) { |
||
503 | jTextField1 = new JTextField(); |
||
504 | jTextField1.setPreferredSize(new java.awt.Dimension(20,19)); |
||
505 | jTextField1.setText("0");
|
||
506 | } |
||
507 | return jTextField1;
|
||
508 | } |
||
509 | 15804 | bsanchez | |
510 | |||
511 | |||
512 | 12597 | amunoz | /*
|
513 | * Actualiza por si hay variaciones*/
|
||
514 | private void refresh() { |
||
515 | 15781 | bsanchez | setReference(fLayer); |
516 | 12597 | amunoz | } |
517 | |||
518 | public void accept() { |
||
519 | pansharpControl.accept(); |
||
520 | } |
||
521 | |||
522 | /**
|
||
523 | * Aplicar los cambios sin guardar su estado
|
||
524 | */
|
||
525 | public void apply() { |
||
526 | pansharpControl.apply(); |
||
527 | } |
||
528 | |||
529 | public void cancel() { |
||
530 | pansharpControl.cancel(); |
||
531 | } |
||
532 | |||
533 | public void setComponentSize(int w, int h) { |
||
534 | 15804 | bsanchez | |
535 | 12597 | amunoz | } |
536 | 15804 | bsanchez | |
537 | 15781 | bsanchez | public void setReference(Object ref) { |
538 | super.setReference(ref);
|
||
539 | 15804 | bsanchez | |
540 | 15781 | bsanchez | if (!(ref instanceof FLayer)) |
541 | return;
|
||
542 | 15804 | bsanchez | |
543 | 15781 | bsanchez | FLayer lyr = (FLayer) ref; |
544 | |||
545 | 12597 | amunoz | fLayer = lyr; |
546 | 13599 | bsanchez | actionEnabled(); |
547 | 12618 | amunoz | clear(); |
548 | //getFileList().clear();
|
||
549 | |||
550 | 12597 | amunoz | RasterFilterList rfl = null;
|
551 | 12618 | amunoz | |
552 | /*if (lyr instanceof IRasterDataset)
|
||
553 | dataset = (IRasterDataset) lyr;*/
|
||
554 | if (lyr instanceof IRasterProperties) |
||
555 | rfl = (((IRasterProperties) lyr).getRenderFilterList()); |
||
556 | 15804 | bsanchez | |
557 | 12618 | amunoz | if (lyr instanceof IRasterProperties) |
558 | prop = (IRasterProperties) lyr; |
||
559 | |||
560 | 12597 | amunoz | if (lyr instanceof IRasterRendering) { |
561 | 13311 | nacho | if (((IRasterRendering) lyr).existColorTable() && pansharpControl != null) { |
562 | 12597 | amunoz | pansharpControl.init(null, null, lyr); |
563 | this.setEnabled(false); |
||
564 | return;
|
||
565 | } |
||
566 | } |
||
567 | |||
568 | this.setEnabled(true); |
||
569 | |||
570 | if (lyr instanceof IRasterDataset) { |
||
571 | dataset = (IRasterDataset) lyr; |
||
572 | 13328 | nacho | addFiles(dataset.getDataSource()); |
573 | 12597 | amunoz | } |
574 | 12618 | amunoz | |
575 | 15781 | bsanchez | pansharpControl= new PanSharpeningControl(getPanelGroup(), this, (IRasterDataset)dataset,prop, lyr,rfl); |
576 | 15804 | bsanchez | |
577 | 12597 | amunoz | } |
578 | 15804 | bsanchez | |
579 | 13599 | bsanchez | private void actionEnabled() { |
580 | 15804 | bsanchez | FLyrRasterSE fLyrRasterSE = ((FLyrRasterSE) fLayer); |
581 | 13599 | bsanchez | |
582 | 15804 | bsanchez | if (!fLyrRasterSE.isActionEnabled(IRasterLayerActions.PANSHARPENING))
|
583 | StatusComponent.setDisabled(getPSharpNorth()); |
||
584 | 12597 | amunoz | |
585 | 15804 | bsanchez | if (!fLyrRasterSE.isActionEnabled(IRasterLayerActions.PANSHARPENING))
|
586 | setVisible(false);
|
||
587 | else
|
||
588 | setVisible(true);
|
||
589 | 13259 | nacho | } |
590 | 15804 | bsanchez | |
591 | 13277 | nacho | /*
|
592 | * (non-Javadoc)
|
||
593 | * @see org.gvsig.raster.gui.properties.dialog.IRegistrablePanel#getLayerClass()
|
||
594 | */
|
||
595 | public Class getLayerClass() { |
||
596 | return FLyrRasterSE.class;
|
||
597 | } |
||
598 | 13259 | nacho | |
599 | 12597 | amunoz | /**
|
600 | * Elimina todas las entradas de la tabla de bandas.
|
||
601 | */
|
||
602 | private void clear() { |
||
603 | int rows = ((DefaultTableModel) getBandTable().getModel()).getRowCount(); |
||
604 | if (rows > 0) { |
||
605 | for (int i = 0; i < rows; i++) |
||
606 | ((DefaultTableModel) getBandTable().getModel()).removeRow(0); |
||
607 | } |
||
608 | } |
||
609 | 15804 | bsanchez | |
610 | |||
611 | |||
612 | 12597 | amunoz | class RadioColumnEditor extends AbstractCellEditor implements TableCellEditor { |
613 | final private static long serialVersionUID = -3370601314380922368L; |
||
614 | public JRadioButton theRadioButton; |
||
615 | |||
616 | public RadioColumnEditor() {
|
||
617 | super();
|
||
618 | theRadioButton = new JRadioButton(); |
||
619 | theRadioButton.addActionListener(new ActionListener() { |
||
620 | public void actionPerformed(ActionEvent event) { |
||
621 | fireEditingStopped(); |
||
622 | //setMode(mode);
|
||
623 | //onlyApply();
|
||
624 | } |
||
625 | }); |
||
626 | } |
||
627 | |||
628 | public Component getTableCellEditorComponent(JTable table, Object obj, boolean isSelected, int row, int col) { |
||
629 | theRadioButton.setHorizontalAlignment(SwingUtilities.CENTER);
|
||
630 | |||
631 | Boolean lValueAsBoolean = (Boolean) obj; |
||
632 | theRadioButton.setSelected(lValueAsBoolean.booleanValue()); |
||
633 | |||
634 | return theRadioButton;
|
||
635 | } |
||
636 | |||
637 | public Object getCellEditorValue() { |
||
638 | return new Boolean(theRadioButton.isSelected()); |
||
639 | } |
||
640 | } |
||
641 | |||
642 | class RadioColumnRenderer extends JRadioButton implements TableCellRenderer { |
||
643 | final private static long serialVersionUID = -3370601314380922368L; |
||
644 | |||
645 | public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { |
||
646 | if (value == null) { |
||
647 | this.setSelected(false); |
||
648 | } |
||
649 | |||
650 | Boolean ValueAsBoolean = (Boolean) value; |
||
651 | this.setSelected(ValueAsBoolean.booleanValue());
|
||
652 | this.setHorizontalAlignment(SwingConstants.CENTER); |
||
653 | |||
654 | return this; |
||
655 | } |
||
656 | } |
||
657 | 15804 | bsanchez | |
658 | // Modelo de la tabla que contiene las bandas
|
||
659 | class BandTableModel extends DefaultTableModel { |
||
660 | 12597 | amunoz | final private static long serialVersionUID = -3370601314380922368L; |
661 | // String de con las cabeceras de la tabla
|
||
662 | 15804 | bsanchez | |
663 | 12597 | amunoz | public BandTableModel() {
|
664 | super(new Object[0][2], columnNames); |
||
665 | } |
||
666 | |||
667 | public Class getColumnClass(int c) { |
||
668 | if (c < 1) { |
||
669 | return Boolean.class; |
||
670 | } |
||
671 | |||
672 | return String.class; |
||
673 | } |
||
674 | |||
675 | |||
676 | public void addNew() { |
||
677 | 15804 | bsanchez | super.addRow(new Object[] { new Boolean(false), ""}); |
678 | } |
||
679 | |||
680 | 12597 | amunoz | public void addRow(){ |
681 | addRow(new Object[] { new Boolean(false), ""}); |
||
682 | 15804 | bsanchez | |
683 | 12597 | amunoz | } |
684 | public void setValueAt(Object value, int row, int col) { |
||
685 | if ((col < 1) && ((Boolean) value).booleanValue()) { |
||
686 | for (int i = 0; i < getRowCount(); i++) { |
||
687 | if (i != row) {
|
||
688 | setValueAt(new Boolean(false), i, col); |
||
689 | } |
||
690 | } |
||
691 | } |
||
692 | |||
693 | super.setValueAt(value, row, col);
|
||
694 | 15804 | bsanchez | } |
695 | 12597 | amunoz | } |
696 | |||
697 | public void tableChanged(TableModelEvent arg0) { |
||
698 | 15804 | bsanchez | |
699 | 12597 | amunoz | } |
700 | 15804 | bsanchez | |
701 | 15781 | bsanchez | public void selected() { |
702 | refresh(); |
||
703 | } |
||
704 | } |