All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.cmu.tetradapp.editor.DescriptiveStatisticsJTable Maven / Gradle / Ivy

The newest version!
///////////////////////////////////////////////////////////////////////////////
// For information as to what this class does, see the Javadoc, below.       //
// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,       //
// 2007, 2008, 2009, 2010, 2014, 2015, 2022 by Peter Spirtes, Richard        //
// Scheines, Joseph Ramsey, and Clark Glymour.                               //
//                                                                           //
// This program is free software; you can redistribute it and/or modify      //
// it under the terms of the GNU General Public License as published by      //
// the Free Software Foundation; either version 2 of the License, or         //
// (at your option) any later version.                                       //
//                                                                           //
// This program 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 General Public License for more details.                              //
//                                                                           //
// You should have received a copy of the GNU General Public License         //
// along with this program; if not, write to the Free Software               //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA //
///////////////////////////////////////////////////////////////////////////////
package edu.cmu.tetradapp.editor;

import edu.cmu.tetrad.data.DataModel;
import edu.cmu.tetrad.data.DataSet;
import edu.cmu.tetrad.util.JOptionUtils;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.TableColumnModelEvent;
import javax.swing.event.TableColumnModelListener;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumnModel;
import java.awt.*;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

/**
 * Displays a DataSet object as a JTable.
 *
 * @author josephramsey
 * @version $Id: $Id
 */
public class DescriptiveStatisticsJTable extends JTable implements DataModelContainer,
        PropertyChangeListener {

    /**
     * Constructor. Takes a DataSet as a model.
     *
     * @param model a {@link edu.cmu.tetrad.data.DataSet} object
     */
    public DescriptiveStatisticsJTable(DataSet model) {
        DescriptiveStatsModel dataModel = new DescriptiveStatsModel(model);
        setModel(dataModel);
        setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        int rowCount = this.dataModel.getRowCount();

        while (rowCount > 0) {
            rowCount /= 10;
        }

        FontMetrics metrics = getFontMetrics(getFont());
        setRowHeight(metrics.getHeight() + 3);

        setRowSelectionAllowed(true);
        getColumnModel().setColumnSelectionAllowed(true);

        for (int i = 0; i < getColumnModel().getColumnCount(); i++) {
            TableColumnModel columnModel1 = getColumnModel();

            if (i == 0) {
                columnModel1.getColumn(i).setCellRenderer(new LeftAlignRenderer());
            } else {
                columnModel1.getColumn(i).setCellRenderer(new RightAlignRenderer());
            }

            setRowSelectionAllowed(true);
        }

        getColumnModel().addColumnModelListener(new TableColumnModelListener() {
            public void columnAdded(TableColumnModelEvent e) {
            }

            public void columnRemoved(TableColumnModelEvent e) {
            }

            public void columnMoved(TableColumnModelEvent e) {
            }

            public void columnMarginChanged(ChangeEvent e) {
            }

            /**
             * Sets the selection of columns in the model to what's in the
             * display.
             */
            public void columnSelectionChanged(ListSelectionEvent e) {
                if (e.getValueIsAdjusting()) {
                    return;
                }

                ListSelectionModel selectionModel = (ListSelectionModel) e
                        .getSource();
                DataSet dataSet = getDataSet();
                dataSet.clearSelection();

                if (!getRowSelectionAllowed()) {
                    for (int i = 0; i < dataSet.getNumColumns(); i++) {
                        if (selectionModel.isSelectedIndex(i + 1)) {
                            dataSet.setSelected(dataSet.getVariable(i), true);
                        }
                    }
                }
            }
        });

        setTransferHandler(new TabularDataTransferHandler());

        addFocusListener(new FocusAdapter() {
            public void focusLost(FocusEvent e) {
                JTable table = (JTable) e.getSource();
                TableCellEditor editor = table.getCellEditor();
                if (editor != null) {
                    editor.stopCellEditing();
                }
            }
        });
    }

    /**
     * {@inheritDoc}
     */
    public void setValueAt(Object aValue, int row, int column) {
        try {
            super.setValueAt(aValue, row, column);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(JOptionUtils.centeringComp(), e
                    .getMessage(), "Error", JOptionPane.WARNING_MESSAGE);
        }
    }

    /**
     * 

getDataSet.

* * @return the underlying DataSet model. */ public DataSet getDataSet() { DescriptiveStatsModel tableModelTabularData = (DescriptiveStatsModel) getModel(); return tableModelTabularData.getDataSet(); } /** *

setDataSet.

* * @param data a {@link edu.cmu.tetrad.data.DataSet} object */ public void setDataSet(DataSet data) { TabularDataTable tableModelTabularData = (TabularDataTable) getModel(); tableModelTabularData.setDataSet(data); } /** *

getDataModel.

* * @return a {@link edu.cmu.tetrad.data.DataModel} object */ public DataModel getDataModel() { return getDataSet(); } /** * {@inheritDoc} */ public void propertyChange(PropertyChangeEvent evt) { firePropertyChange(evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); } /** * A cell renderer that right-aligns the text. */ public static class RightAlignRenderer extends DefaultTableCellRenderer { /** *

Constructor for RightAlignRenderer.

*/ public RightAlignRenderer() { setHorizontalAlignment(JLabel.RIGHT); } } /** * A cell renderer that left-aligns the text. */ public static class LeftAlignRenderer extends DefaultTableCellRenderer { /** *

Constructor for LeftAlignRenderer.

*/ public LeftAlignRenderer() { setHorizontalAlignment(JLabel.LEFT); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy