Revision 11042 trunk/extensions/extRasterTools-SE/src/org/gvsig/rastertools/histogram/ui/HistogramPanel.java

View differences:

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