/*
 * Copyright (C) 2008-2015 by Holger Arndt
 *
 * This file is part of the Universal Java Matrix Package (UJMP).
 * See the NOTICE file distributed with this work for additional
 * information regarding copyright ownership and licensing.
 *
 * UJMP is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * UJMP is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with UJMP; if not, write to the
 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
 * Boston, MA  02110-1301  USA
 */

package org.ujmp.gui.statusbar;

import java.text.NumberFormat;

import javax.swing.JLabel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;

import org.ujmp.gui.MatrixGUIObject;

public class MatrixStatisticsBar extends JLabel implements TableModelListener, ListSelectionListener {
	private static final long serialVersionUID = 3434122072016632576L;

	private MatrixGUIObject matrixGUIObject = null;

	private UpdateThread updateThread = null;

	public MatrixStatisticsBar(MatrixGUIObject m) {
		this.matrixGUIObject = m;
		m.addTableModelListener(this);
		m.getRowSelectionModel().addListSelectionListener(this);
		m.getColumnSelectionModel().addListSelectionListener(this);
		update();
	}

	public void update() {
		// if (updateThread != null) {
		// updateThread.interrupt();
		// }
		// updateThread = new UpdateThread(matrixGUIObject, this);
		// updateThread.start();
	}

	public void tableChanged(TableModelEvent e) {
		update();
	}

	public void valueChanged(ListSelectionEvent e) {
		update();
	}

}

class UpdateThread extends Thread {

	private MatrixGUIObject matrixGUIObject = null;

	private JLabel jLabel = null;

	private static final NumberFormat nf = NumberFormat.getNumberInstance();

	static {
		nf.setMinimumFractionDigits(2);
		nf.setMaximumFractionDigits(2);
	}

	public UpdateThread(MatrixGUIObject matrixGUIObject, JLabel jLabel) {
		this.matrixGUIObject = matrixGUIObject;
		this.jLabel = jLabel;
		this.setPriority(Thread.MIN_PRIORITY);
	}

	public void run() {
		// Takes a lot of time and does not work for recursive objects

		// jLabel.setText("calculating statistics...");
		//
		// long colMin = matrixGUIObject.getColumnSelectionModel()
		// .getMinSelectionIndex();
		// long colMax = matrixGUIObject.getColumnSelectionModel()
		// .getMaxSelectionIndex();
		// long rowMin = matrixGUIObject.getRowSelectionModel()
		// .getMinSelectionIndex();
		// long rowMax = matrixGUIObject.getRowSelectionModel()
		// .getMaxSelectionIndex();

		// Matrix m = null;
		//
		// if (colMin < 0 || colMax < 0 || rowMin < 0 || rowMax < 0) {
		// m = matrixGUIObject.getMatrix();
		// } else {
		// m = matrixGUIObject.getMatrix().subMatrix(Ret.LINK, rowMin, colMin,
		// rowMax, colMax);
		// }

		// long count = m.getValueCount();
		// double min = m.getMinValue();
		// double max = m.getMaxValue();
		// double mean = m.getMeanValue();
		// double std = m.getStdValue();
		// double sum = m.getValueSum();
		//
		// StringBuffer s = new StringBuffer();
		// s.append(count + " cells selected:");
		// s.append(" min=" + nf.format(min));
		// s.append(" max=" + nf.format(max));
		// s.append(" mean=" + nf.format(mean));
		// s.append(" std=" + nf.format(std));
		// s.append(" sum=" + nf.format(sum));
		// jLabel.setText(s.toString());
	}
}

 

Ads help maintain this website.