package org.geogebra.desktop.gui.view.data;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.DefaultListModel;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import org.geogebra.common.main.GeoGebraColorConstants;
import org.geogebra.common.main.Localization;
import org.geogebra.desktop.awt.GColorD;
import org.geogebra.desktop.main.AppD;
public class LinearRegressionPanel extends JPanel
implements StatPanelInterface {
private static final long serialVersionUID = 1L;
private AppD app;
private DefaultTableModel model;
private DefaultListModel headerModel;
public LinearRegressionPanel(AppD app, DataAnalysisViewD statDialog) {
this.app = app;
this.setOpaque(true);
this.setBackground(Color.WHITE);
this.setLayout(new BorderLayout());
// north panel with regression equation
Box northPanel = Box.createVerticalBox();
northPanel.add(new JLabel(" ---- regresion equation ----"));
northPanel.add(new JLabel(" ----------------------------"));
// south panel with additional statistics
Box southPanel = Box.createVerticalBox();
southPanel.add(new JLabel(" ---- regresion equation ----"));
southPanel.add(new JLabel(" ----------------------------"));
// set up table
model = new DefaultTableModel();
headerModel = new DefaultListModel();
JTable table = new JTable(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
table.setGridColor(
GColorD.getAwtColor(GeoGebraColorConstants.TABLE_GRID_COLOR));
table.setShowGrid(true);
// table row header
JList rowHeader = new JList(headerModel);
rowHeader.setFixedCellWidth(50);
rowHeader.setFixedCellHeight(
table.getRowHeight() + table.getRowMargin());
rowHeader.setCellRenderer(new RowHeaderRenderer(table));
// add table to scroll pane
JScrollPane scroll = new JScrollPane(table);
scroll.setRowHeaderView(rowHeader);
this.add(scroll, BorderLayout.CENTER);
}
public void updateRegressionPanel() {
Localization loc = app.getLocalization();
String[] columnLabels = { loc.getMenu("Coefficient"),
loc.getMenu("StandardError.short"), loc.getMenu("TStatistic"),
loc.getMenu("Pvalue"), };
String[] rowLabels = { loc.getMenu("Intercept"),
loc.getMenu("Slope"), };
model.setColumnCount(0);
for (int i = 0; i < columnLabels.length; i++) {
model.addColumn(columnLabels[i]);
}
model.setRowCount(rowLabels.length);
headerModel.setSize(0);
for (int i = 0; i < rowLabels.length; i++) {
headerModel.addElement(rowLabels[i]);
}
}
class RowHeaderRenderer extends JLabel implements ListCellRenderer {
private static final long serialVersionUID = 1L;
RowHeaderRenderer(JTable table) {
JTableHeader header = table.getTableHeader();
setOpaque(true);
setBorder(BorderFactory.createLineBorder(Color.black));
setHorizontalAlignment(LEFT);
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(app.getPlainFont());
}
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setText((value == null) ? "" : value.toString());
return this;
}
}
@Override
public void updateFonts(Font font) {
// TODO Auto-generated method stub
}
@Override
public void setLabels() {
// TODO Auto-generated method stub
}
@Override
public void updatePanel() {
// TODO Auto-generated method stub
}
}