package org.geogebra.desktop.gui.view.data; import java.awt.BorderLayout; import java.awt.Font; import javax.swing.JPanel; import org.geogebra.common.gui.view.data.DataAnalysisModel; import org.geogebra.common.gui.view.data.DataVariable.GroupType; import org.geogebra.common.gui.view.data.StatTableModel; import org.geogebra.common.gui.view.data.StatTableModel.Stat; import org.geogebra.common.gui.view.data.StatTableModel.StatTableListener; import org.geogebra.common.kernel.algos.AlgoElement; import org.geogebra.common.kernel.geos.GeoElement; import org.geogebra.common.kernel.geos.GeoList; import org.geogebra.desktop.main.AppD; /** * Displays statistics for DataAnalysisView when in one variable or regression * mode. * * @author G. Sturr * */ public class BasicStatTable extends JPanel implements StatPanelInterface, StatTableListener { private static final long serialVersionUID = 1L; private StatTableModel model; protected DataAnalysisViewD daView; protected StatTable statTable; private AppD app; /************************************************* * Construct the panel * * @param app * @param statDialog * @param mode */ public BasicStatTable(AppD app, DataAnalysisViewD statDialog) { this(app, statDialog, true); } // END constructor public BasicStatTable(AppD app, DataAnalysisViewD statDialog, boolean defaultModel) { this.app = app; this.daView = statDialog; this.setLayout(new BorderLayout()); if (defaultModel) { setModel(new StatTableModel(app, this)); } } public void setModel(StatTableModel model) { this.model = model; initStatTable(); updateFonts(app.getPlainFont()); } protected void initStatTable() { statTable = new StatTable(getApp()); statTable.setStatTable(getModel().getRowCount(), getModel().getRowNames(), getModel().getColumnCount(), getModel().getColumnNames()); this.removeAll(); this.add(statTable, BorderLayout.CENTER); } public String[] getRowNames() { return getModel().getRowNames(); } public String[] getColumnNames() { return getModel().getColumnNames(); } public int getRowCount() { return getModel().getRowCount(); } public int getColumnCount() { return getModel().getColumnCount(); } // ======================================================= /** * Evaluates all statistics for the selected data list. If data source is * not valid, the result cells are set blank. * */ @Override public void updatePanel() { statTable.setStatTable(getModel().getRowCount(), getModel().getRowNames(), getModel().getColumnCount(), getModel().getColumnNames()); getModel().updatePanel(); } protected AlgoElement getAlgo(Stat algoName, GeoList dataList, GeoElement geoRegression) { return getModel().getAlgo(algoName, dataList, geoRegression); } protected AlgoElement getAlgoRawData(Stat stat, GeoList dataList, GeoElement geoRegression) { return getModel().getAlgoRawData(stat, dataList, geoRegression); } protected AlgoElement getAlgoFrequency(Stat stat, GeoList frequencyData, GeoElement geoRegression) { return getModel().getAlgoFrequency(stat, frequencyData, geoRegression); } protected AlgoElement getAlgoClass(StatTableModel.Stat stat, GeoList frequencyData, GeoElement geoRegression) { return getModel().getAlgoClass(stat, frequencyData, geoRegression); } @Override public void updateFonts(Font font) { statTable.updateFonts(font); } @Override public void setLabels() { statTable.setLabels(getModel().getRowNames(), getModel().getColumnNames()); } @Override public GeoList getDataSelected() { return daView.getController().getDataSelected(); } @Override public GeoElement getRegressionModel() { return daView.getRegressionModel(); } @Override public DataAnalysisModel.Regression getRegressionMode() { return daView.getModel().getRegressionMode(); } @Override public boolean isValidData() { return daView.getController().isValidData(); } @Override public void setValueAt(double value, int row, int col) { statTable.getModel().setValueAt(daView.getModel().format(value), row, col); } @Override public boolean isViewValid() { return daView == null || daView.getDataSource() == null; } @Override public int getMode() { return daView.getModel().getMode(); } @Override public GroupType groupType() { return daView.groupType(); } @Override public boolean isNumericData() { return daView.getDataSource().isNumericData(); } public AppD getApp() { return app; } public void setApp(AppD app) { this.app = app; } public StatTableModel getModel() { return model; } }