Revision 11042 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/histogram/ui/HistogramPanel.java
HistogramPanel.java | ||
---|---|---|
50 | 50 |
public class HistogramPanel extends DefaultButtonsPanel { |
51 | 51 |
private static final long serialVersionUID = 2772897994667886753L; |
52 | 52 |
|
53 |
private HistogramPanelListener histogramPanelListener = getHistogramPanelListener(); |
|
54 |
private ArrayList comboSource = new ArrayList(); |
|
55 |
private boolean panelInizialited = false; |
|
53 |
/** |
|
54 |
* Objeto que controlara toda la carga pesada del panel |
|
55 |
*/ |
|
56 |
private HistogramPanelListener histogramPanelListener = null; |
|
56 | 57 |
|
57 |
public static int MAXBANDS = 10; |
|
58 |
private int HSUP = 60; |
|
58 |
/** |
|
59 |
* Array para la seleccion del origen |
|
60 |
*/ |
|
61 |
private ArrayList comboSource = new ArrayList(); |
|
59 | 62 |
|
63 |
/** |
|
64 |
* Variable para controlar si se dispararan los eventos del panel, |
|
65 |
* si es la primera vez no tiene porque disparar eventos. |
|
66 |
*/ |
|
67 |
public boolean panelInizialited = false; |
|
68 |
|
|
69 |
/** |
|
70 |
* Componentes graficos |
|
71 |
*/ |
|
60 | 72 |
private GraphicContainer graphicContainer = null; |
61 | 73 |
private JPanel pTable = null; |
62 | 74 |
private JComboBox jComboBoxOrigen = null; |
... | ... | |
65 | 77 |
private JButton jButtonClear = null; |
66 | 78 |
private JButton bTable = null; |
67 | 79 |
private TableContainer tableContainer = null; |
68 |
|
|
69 | 80 |
private JPanel cbSup = null; |
70 | 81 |
private JLabel lOrigin = null; |
71 | 82 |
private JLabel lBands = null; |
72 | 83 |
private JLabel lType = null; |
73 |
/** |
|
74 |
* Bandas que se est?n mostrando en el gr?fico. Se inicializa con las 3 bandas |
|
75 |
* RGB de la visualizaci?n. Este array puede tener m?s elementos ya que si las |
|
76 |
* bandas no son de visualizaci?n (bandas de la imagen en disco) tendr? un elemento |
|
77 |
* por cada una. |
|
78 |
*/ |
|
79 |
// public boolean[] showBands = {true, true, true}; |
|
80 |
|
|
81 |
/** |
|
82 |
* Tipo de histograma |
|
83 |
* 0 = acumulado |
|
84 |
* 1 = No acumulado |
|
85 |
*/ |
|
86 |
private int type = 0; |
|
87 |
|
|
88 |
/** |
|
89 |
* Tipo de fuente de datos para el histograma |
|
90 |
* 0 = Datos de la vista |
|
91 |
* 1 = extent de la vista y datos leidos desde la imagen |
|
92 |
* 2 = histograma de la imagen completa |
|
93 |
*/ |
|
94 |
private int histogramDataSource = 0; |
|
95 | 84 |
|
96 | 85 |
/** |
97 | 86 |
* Tipo de dato de la petici?n. Si la petici?n del histograma es de la vista el tipo |
... | ... | |
107 | 96 |
*/ |
108 | 97 |
public HistogramPanel() { |
109 | 98 |
super(ButtonsPanel.BUTTONS_CLOSE); |
99 |
histogramPanelListener = getHistogramPanelListener(); |
|
110 | 100 |
initialize(); |
111 | 101 |
} |
112 | 102 |
|
... | ... | |
222 | 212 |
|
223 | 213 |
cbSup = new JPanel(); |
224 | 214 |
|
225 |
cbSup.setPreferredSize(new java.awt.Dimension(0, HSUP));
|
|
215 |
cbSup.setPreferredSize(new java.awt.Dimension(0, 60));
|
|
226 | 216 |
|
227 | 217 |
cbSup.setLayout(new GridBagLayout()); |
228 | 218 |
cbSup.add(lOrigin, gridBagConstraints); |
... | ... | |
274 | 264 |
*utilizada para extensiones que necesitan histograma pero no pueden acceder a la fuente de datos. |
275 | 265 |
*/ |
276 | 266 |
public void setOnlyViewValue(){ |
277 |
getHistogramPanelListener().comboEventEnable = false;
|
|
267 |
getHistogramPanelListener().eventsEnabled = false;
|
|
278 | 268 |
getJComboBoxOrigen().removeAllItems(); |
279 | 269 |
getJComboBoxOrigen().addItem(Messages.getText("vista")); |
280 |
getHistogramPanelListener().comboEventEnable = panelInizialited;
|
|
270 |
getHistogramPanelListener().eventsEnabled = panelInizialited;
|
|
281 | 271 |
} |
282 | 272 |
|
283 | 273 |
/** |
... | ... | |
319 | 309 |
* @return javax.swing.JComboBox |
320 | 310 |
*/ |
321 | 311 |
public JComboBox getJComboBands() { |
322 |
getHistogramPanelListener().comboEventEnable = false;
|
|
312 |
getHistogramPanelListener().eventsEnabled = false;
|
|
323 | 313 |
if (jComboBands == null) { |
324 | 314 |
String lista [] = {Messages.getText("todas")}; |
325 | 315 |
jComboBands = new JComboBox(lista); |
326 | 316 |
jComboBands.addActionListener(getHistogramPanelListener()); |
327 | 317 |
jComboBands.setPreferredSize(new java.awt.Dimension(100,25)); |
328 | 318 |
} |
329 |
getHistogramPanelListener().comboEventEnable = panelInizialited;
|
|
319 |
getHistogramPanelListener().eventsEnabled = panelInizialited;
|
|
330 | 320 |
return jComboBands; |
331 | 321 |
} |
332 | 322 |
|
... | ... | |
335 | 325 |
* @param bands N?mero de bandas de la imagen |
336 | 326 |
*/ |
337 | 327 |
public void setBands(int bands){ |
338 |
getHistogramPanelListener().comboEventEnable = false;
|
|
328 |
getHistogramPanelListener().eventsEnabled = false;
|
|
339 | 329 |
getJComboBands().removeAllItems(); |
340 | 330 |
getJComboBands().addItem(Messages.getText("todas")); |
341 |
// showBands = new boolean[bands]; |
|
342 | 331 |
for(int i = 0; i < bands; i++){ |
343 | 332 |
getJComboBands().addItem("Band "+String.valueOf(i)); |
344 |
// showBands[i] = true; |
|
345 | 333 |
} |
346 |
getHistogramPanelListener().comboEventEnable = panelInizialited;
|
|
334 |
getHistogramPanelListener().eventsEnabled = panelInizialited;
|
|
347 | 335 |
} |
348 | 336 |
|
349 | 337 |
|
... | ... | |
378 | 366 |
* |
379 | 367 |
*/ |
380 | 368 |
public void setRGBInBandList(){ |
381 |
getHistogramPanelListener().comboEventEnable = false; |
|
382 |
// boolean[] list = {true, true, true}; |
|
383 |
// showBands = list; |
|
369 |
getHistogramPanelListener().eventsEnabled = false; |
|
384 | 370 |
getJComboBands().removeAllItems(); |
385 | 371 |
getJComboBands().addItem(Messages.getText("todas")); |
386 | 372 |
getJComboBands().addItem("R"); |
387 | 373 |
getJComboBands().addItem("G"); |
388 | 374 |
getJComboBands().addItem("B"); |
389 |
getHistogramPanelListener().comboEventEnable = panelInizialited;
|
|
375 |
getHistogramPanelListener().eventsEnabled = panelInizialited;
|
|
390 | 376 |
} |
391 |
|
|
392 |
/** |
|
393 |
* Obtiene el tipo de datos de la fuente de la imagen |
|
394 |
* @return tipo de datos de la fuente de la imagen |
|
395 |
*/ |
|
396 |
public int getHistogramDataSource() { |
|
397 |
return histogramDataSource; |
|
398 |
} |
|
399 | 377 |
|
400 | 378 |
/** |
401 |
* Asigna el tipo de datos de la fuente de la imagen |
|
402 |
* @param histogramDataSource tipo de datos de la fuente de la imagen |
|
403 |
*/ |
|
404 |
public void setHistogramDataSource(int histogramDataSource) { |
|
405 |
this.histogramDataSource = histogramDataSource; |
|
406 |
} |
|
407 |
|
|
408 |
/** |
|
409 |
* Obtiene el tipo de histograma a mostrar |
|
410 |
* @return acumulado/no acumulado |
|
411 |
*/ |
|
412 |
public int getType() { |
|
413 |
return type; |
|
414 |
} |
|
415 |
|
|
416 |
/** |
|
417 |
* Asigna el tipo de histograma a mostrar |
|
418 |
* @param type acumulado/no acumulado |
|
419 |
*/ |
|
420 |
public void setType(int type) { |
|
421 |
this.type = type; |
|
422 |
} |
|
423 |
|
|
424 |
/** |
|
425 | 379 |
* Obtiene el valor de los controles en el rango 0-255. Los controles dan un rango en tanto por cien 0-100 |
426 | 380 |
* pero para el calculo de estadisticas necesitamos un rango de valor de pixel. |
427 | 381 |
* @return Array con los valores de ambos controles. El primer valor del array es el control de la derecha |
... | ... | |
433 | 387 |
currentValues[0] = getGraphicContainer().getX2(); |
434 | 388 |
currentValues[1] = getGraphicContainer().getX1(); |
435 | 389 |
switch (requestDataType){ |
436 |
case RasterBuf.TYPE_BYTE: v[0] = (currentValues[0] * RasterUtilities.MAX_BYTE_BIT_VALUE) / 100; |
|
390 |
case RasterBuf.TYPE_BYTE: |
|
391 |
v[0] = (currentValues[0] * RasterUtilities.MAX_BYTE_BIT_VALUE) / 100; |
|
437 | 392 |
v[1] = (currentValues[1] * RasterUtilities.MAX_BYTE_BIT_VALUE) / 100; |
438 | 393 |
break; |
439 |
case RasterBuf.TYPE_SHORT: v[0] = (currentValues[0] * RasterUtilities.MAX_SHORT_BIT_VALUE) / 100; |
|
394 |
case RasterBuf.TYPE_SHORT: |
|
395 |
v[0] = (currentValues[0] * RasterUtilities.MAX_SHORT_BIT_VALUE) / 100; |
|
440 | 396 |
v[1] = (currentValues[1] * RasterUtilities.MAX_SHORT_BIT_VALUE) / 100; |
441 | 397 |
break; |
442 | 398 |
} |
... | ... | |
451 | 407 |
} |
452 | 408 |
|
453 | 409 |
public void setHistogramableSource(IHistogramable lyr, String name) { |
454 |
getHistogramPanelListener().comboEventEnable = false;
|
|
410 |
getHistogramPanelListener().eventsEnabled = false;
|
|
455 | 411 |
ArrayList aux = new ArrayList(); |
456 | 412 |
aux.add(lyr); |
457 | 413 |
aux.add(name); |
458 | 414 |
comboSource.add(aux); |
459 | 415 |
updateComboBoxSource(); |
460 |
getHistogramPanelListener().comboEventEnable = panelInizialited;
|
|
416 |
getHistogramPanelListener().eventsEnabled = panelInizialited;
|
|
461 | 417 |
} |
462 | 418 |
|
463 | 419 |
public ArrayList getComboSource() { |
... | ... | |
465 | 421 |
} |
466 | 422 |
|
467 | 423 |
private void updateComboBoxSource() { |
468 |
getHistogramPanelListener().comboEventEnable = false;
|
|
424 |
getHistogramPanelListener().eventsEnabled = false;
|
|
469 | 425 |
getJComboBoxOrigen().removeAllItems(); |
470 | 426 |
for (int i = 0; i < comboSource.size(); i++) { |
471 | 427 |
getJComboBoxOrigen().addItem(((ArrayList) comboSource.get(i)).get(1)); |
472 | 428 |
} |
473 |
getHistogramPanelListener().comboEventEnable = panelInizialited;
|
|
429 |
getHistogramPanelListener().eventsEnabled = panelInizialited;
|
|
474 | 430 |
} |
475 | 431 |
|
476 | 432 |
public void clearSources() { |
... | ... | |
478 | 434 |
updateComboBoxSource(); |
479 | 435 |
} |
480 | 436 |
|
437 |
public void refreshBands() { |
|
438 |
//En caso de que el histograma se monte a partir de los datos de la vista ponemos RGB en el combo |
|
439 |
int bandCount = getHistogramPanelListener().getHistogram().getNumBands(); |
|
440 |
if ((getJComboBoxOrigen().getSelectedIndex() == 0) && (bandCount == 3)) { |
|
441 |
setRGBInBandList(); |
|
442 |
} else { |
|
443 |
setBands(bandCount); |
|
444 |
} |
|
445 |
} |
|
446 |
|
|
481 | 447 |
public void firstRun() { |
482 |
panelInizialited = true; |
|
483 |
getHistogramPanelListener().comboEventEnable = true; |
|
484 | 448 |
getHistogramPanelListener().showHistogram(); |
485 | 449 |
} |
486 | 450 |
} |
Also available in: Unified diff