package ArrayDemos;

/**
 * StatisticsGenerator.java
 *
 *
 * Created: Tue Apr 10 13:12:20 2001
 *
 * @author Stuart C. Shapiro
 */

public class StatisticsGenerator {
    private NGP.Containers.Row _row;
    private HistogramColumn[] _bars;
    private NGP.Components.Label _minLabel, _meanLabel, _maxLabel;
    private int _min=0, _max=0;
    private float _mean=0F;

    public StatisticsGenerator (NGP.Containers.Row row,
				HistogramColumn[] bars){
	_row = row;
	_bars = bars;
	_minLabel = new NGP.Components.Label(_row, "Min: 0");
	_meanLabel = new NGP.Components.Label(_row, "Mean: 0");
	_maxLabel = new NGP.Components.Label(_row, "Max: 0");

    }

    public void increment(Bar bar, int dc) {
	if (dc>0) _min = minimum();
	else if (bar.getCount()<_min) _min--;
	_minLabel.setText("Min: " + _min);
	

	_mean += dc*1F/_bars.length;
	_meanLabel.setText("Mean: " + _mean);

	if (dc<0) _max = maximum();	
	else if (bar.getCount()>_max) _max++;
	_maxLabel.setText("Max: " + _max);
    }

    private int minimum(){
	int min = _bars[0].getCount();
	for (int i=1; i < _bars.length; i++)
	    if (_bars[i].getCount() < min) min = _bars[i].getCount();
	return min;
    }

    private int maximum(){
	int max = _bars[0].getCount();
	for (int i=1; i < _bars.length; i++)
	    if (_bars[i].getCount() > max) max = _bars[i].getCount();
	return max;
    }
}// StatisticsGenerator
