/***********************************************************************
This file is part of KEEL-software, the Data Mining tool for regression,
classification, clustering, pattern mining and so on.
Copyright (C) 2004-2010
F. Herrera (herrera@decsai.ugr.es)
L. S�nchez (luciano@uniovi.es)
J. Alcal�-Fdez (jalcala@decsai.ugr.es)
S. Garc�a (sglopez@ujaen.es)
A. Fern�ndez (alberto.fernandez@ujaen.es)
J. Luengo (julianlm@decsai.ugr.es)
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 3 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, see http://www.gnu.org/licenses/
**********************************************************************/
/**
* File: StatisticalF.java.
*
* Main frame of the statistical module
*
* @author Written by Joaquin Derrac (University of Granada) 29/04/2010
* @author Modified by Joaquin Derrac (University of Granada) 1/12/2010
* @author Modified by Joaquin Derrac (University of Granada) 7/5/2012
* @version 1.2
* @since JDK1.5
*/
package keel.GraphInterKeel.statistical;
import java.awt.Toolkit;
import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.table.TableColumn;
import keel.GraphInterKeel.statistical.help.HelpContent;
import keel.GraphInterKeel.statistical.tests.Contrast;
import keel.GraphInterKeel.statistical.tests.Friedman;
import keel.GraphInterKeel.statistical.tests.Multiple;
import keel.GraphInterKeel.statistical.tests.Wilcoxon;
public class StatisticalF extends javax.swing.JFrame {
protected JFrame parent = null;
private HelpContent content = new HelpContent();
private int testType;
private int objective;
private statTableModel model;
private StatCellEditor editor;
private statTableRenderer renderer;
private final static int FRIEDMAN = 0;
private final static int FRIEDMAN_ALIGNED = 1;
private final static int QUADE = 2;
private final static int CONTRAST = 3;
private final static int MULTIPLE = 4;
private final static int WILCOXON = 5;
public final static int MINDATA = 4;
public final static int MAXDATA = 500;
public final static int MINALG = 2;
public final static int MINALGF = 3;
public final static int MAXALG = 50;
public final static int MAXIMIZE = 1;
public final static int MINIMIZE = 2;
public static String lastPath;
/**
* Builder
*/
public StatisticalF() {
this.setResizable(false);
TableColumn column;
initComponents();
lastPath=".";
testType = FRIEDMAN;
objective = MAXIMIZE;
model = new statTableModel();
editor = new StatCellEditor();
renderer = new statTableRenderer();
model.initComponents();
dataTable.setCellEditor(editor);
dataTable.setDefaultRenderer(Double.class, renderer);
dataTable.setModel(model);
for (int i = 0; i < dataTable.getColumnModel().getColumnCount(); i++) {
column = dataTable.getColumnModel().getColumn(i);
if (i == 0) {
column.setPreferredWidth(80); //first column is bigger
column.setMinWidth(80);
} else {
column.setPreferredWidth(75);
column.setMinWidth(75);
}
}
this.content.muestraURL(this.getClass().getResource("/help/stat/stat_help.html"));
ExcelAdapter myAd = new ExcelAdapter(dataTable);
//set frame icon
this.setIconImage(Toolkit.getDefaultToolkit().getImage(StatisticalF.class.getResource("/keel/GraphInterKeel/resources/ico/logo/logo.gif")));
//set the form visible
this.setVisible(true);
}//end-method
/**
* <p>
* Sets parent
* </p>
* @param parent Frame parent
*/
public void setParent(JFrame parent) {
this.parent = parent;
}//end-method
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
buttonGroup2 = new javax.swing.ButtonGroup();
divider = new javax.swing.JSplitPane();
mainPanel = new javax.swing.JPanel();
optionsPanel = new javax.swing.JPanel();
checkIman = new javax.swing.JCheckBox();
checkBonferroni = new javax.swing.JCheckBox();
checkHolm = new javax.swing.JCheckBox();
checkHochberg = new javax.swing.JCheckBox();
checkFinner = new javax.swing.JCheckBox();
checkRom = new javax.swing.JCheckBox();
checkHolland = new javax.swing.JCheckBox();
checkHommel = new javax.swing.JCheckBox();
checkLi = new javax.swing.JCheckBox();
checkNemenyi = new javax.swing.JCheckBox();
checkShaffer = new javax.swing.JCheckBox();
checkBergman = new javax.swing.JCheckBox();
radioPanel = new javax.swing.JPanel();
radioBFriedman = new javax.swing.JRadioButton();
radioBAligned = new javax.swing.JRadioButton();
radioBContrast = new javax.swing.JRadioButton();
radioBQuade = new javax.swing.JRadioButton();
radioBMultiple = new javax.swing.JRadioButton();
radioBWilcoxon = new javax.swing.JRadioButton();
buttonPanel = new javax.swing.JPanel();
loadButton = new javax.swing.JButton();
clearButton = new javax.swing.JButton();
analysisButton = new javax.swing.JButton();
exportButton = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
dimensionsButton = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
methodsField = new javax.swing.JTextField();
datasetsField = new javax.swing.JTextField();
scrollTable = new javax.swing.JScrollPane();
dataTable = new javax.swing.JTable();
measurePanel = new javax.swing.JPanel();
radioBMaximize = new javax.swing.JRadioButton();
radioBMinimize = new javax.swing.JRadioButton();
auxHelpPanel = new javax.swing.JPanel();
helpPanel = new javax.swing.JTabbedPane();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(keel.GraphInterKeel.datacf.DataCFApp.class).getContext().getResourceMap(StatisticalF.class);
setTitle(resourceMap.getString("MainForm.title")); // NOI18N
setName("Form"); // NOI18N
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
divider.setDividerLocation(525);
divider.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
divider.setName("divider"); // NOI18N
mainPanel.setMinimumSize(new java.awt.Dimension(800, 300));
mainPanel.setName("mainPanel"); // NOI18N
mainPanel.setPreferredSize(new java.awt.Dimension(800, 525));
optionsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("optionsPanel.border.title"))); // NOI18N
optionsPanel.setToolTipText(resourceMap.getString("optionsPanel.toolTipText")); // NOI18N
optionsPanel.setName("optionsPanel"); // NOI18N
checkIman.setText(resourceMap.getString("checkIman.text")); // NOI18N
checkIman.setName("checkIman"); // NOI18N
checkBonferroni.setText(resourceMap.getString("checkBonferroni.text")); // NOI18N
checkBonferroni.setName("checkBonferroni"); // NOI18N
checkHolm.setText(resourceMap.getString("checkHolm.text")); // NOI18N
checkHolm.setName("checkHolm"); // NOI18N
checkHochberg.setText(resourceMap.getString("checkHochberg.text")); // NOI18N
checkHochberg.setName("checkHochberg"); // NOI18N
checkFinner.setText(resourceMap.getString("checkFinner.text")); // NOI18N
checkFinner.setName("checkFinner"); // NOI18N
checkRom.setText(resourceMap.getString("checkRom.text")); // NOI18N
checkRom.setName("checkRom"); // NOI18N
checkHolland.setText(resourceMap.getString("checkHolland.text")); // NOI18N
checkHolland.setName("checkHolland"); // NOI18N
checkHommel.setText(resourceMap.getString("checkHommel.text")); // NOI18N
checkHommel.setName("checkHommel"); // NOI18N
checkLi.setText(resourceMap.getString("checkLi.text")); // NOI18N
checkLi.setName("checkLi"); // NOI18N
checkNemenyi.setText(resourceMap.getString("checkNemenyi.text")); // NOI18N
checkNemenyi.setEnabled(false);
checkNemenyi.setName("checkNemenyi"); // NOI18N
checkShaffer.setText(resourceMap.getString("checkShaffer.text")); // NOI18N
checkShaffer.setEnabled(false);
checkShaffer.setName("checkShaffer"); // NOI18N
checkBergman.setText(resourceMap.getString("checkBergman.text")); // NOI18N
checkBergman.setEnabled(false);
checkBergman.setName("checkBergman"); // NOI18N
javax.swing.GroupLayout optionsPanelLayout = new javax.swing.GroupLayout(optionsPanel);
optionsPanel.setLayout(optionsPanelLayout);
optionsPanelLayout.setHorizontalGroup(
optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(optionsPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(checkBonferroni, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(checkIman, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(optionsPanelLayout.createSequentialGroup()
.addComponent(checkHolm, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(56, 56, 56))
.addGroup(optionsPanelLayout.createSequentialGroup()
.addComponent(checkHochberg, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(34, 34, 34)))
.addGap(18, 18, 18)
.addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(checkRom)
.addComponent(checkFinner)
.addComponent(checkHolland, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(checkHommel))
.addGap(35, 35, 35)
.addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(checkLi)
.addComponent(checkNemenyi, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(checkShaffer)
.addComponent(checkBergman))
.addGap(13, 13, 13))
);
optionsPanelLayout.setVerticalGroup(
optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(optionsPanelLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(optionsPanelLayout.createSequentialGroup()
.addComponent(checkHommel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(checkHolland)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(checkRom)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(checkFinner))
.addGroup(optionsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(optionsPanelLayout.createSequentialGroup()
.addComponent(checkLi)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(checkNemenyi)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(checkShaffer)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(checkBergman))
.addGroup(optionsPanelLayout.createSequentialGroup()
.addComponent(checkIman)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(checkBonferroni)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(checkHolm)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(checkHochberg)))))
);
radioPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("radioPanel.border.title"))); // NOI18N
radioPanel.setToolTipText(resourceMap.getString("radioPanel.toolTipText")); // NOI18N
radioPanel.setName("radioPanel"); // NOI18N
buttonGroup1.add(radioBFriedman);
radioBFriedman.setSelected(true);
radioBFriedman.setText(resourceMap.getString("radioBFriedman.text")); // NOI18N
radioBFriedman.setName("radioBFriedman"); // NOI18N
radioBFriedman.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioBFriedmanActionPerformed(evt);
}
});
buttonGroup1.add(radioBAligned);
radioBAligned.setText(resourceMap.getString("radioBAligned.text")); // NOI18N
radioBAligned.setName("radioBAligned"); // NOI18N
radioBAligned.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioBAlignedActionPerformed(evt);
}
});
buttonGroup1.add(radioBContrast);
radioBContrast.setText(resourceMap.getString("radioBContrast.text")); // NOI18N
radioBContrast.setName("radioBContrast"); // NOI18N
radioBContrast.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioBContrastActionPerformed(evt);
}
});
buttonGroup1.add(radioBQuade);
radioBQuade.setText(resourceMap.getString("radioBQuade.text")); // NOI18N
radioBQuade.setName("radioBQuade"); // NOI18N
radioBQuade.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioBQuadeActionPerformed(evt);
}
});
buttonGroup1.add(radioBMultiple);
radioBMultiple.setText(resourceMap.getString("radioBMultiple.text")); // NOI18N
radioBMultiple.setName("radioBMultiple"); // NOI18N
radioBMultiple.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioBMultipleActionPerformed(evt);
}
});
buttonGroup1.add(radioBWilcoxon);
radioBWilcoxon.setText(resourceMap.getString("radioBWilcoxon.text")); // NOI18N
radioBWilcoxon.setName("radioBWilcoxon"); // NOI18N
radioBWilcoxon.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioBWilcoxonActionPerformed(evt);
}
});
javax.swing.GroupLayout radioPanelLayout = new javax.swing.GroupLayout(radioPanel);
radioPanel.setLayout(radioPanelLayout);
radioPanelLayout.setHorizontalGroup(
radioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, radioPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(radioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(radioBQuade)
.addComponent(radioBFriedman)
.addComponent(radioBAligned))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(radioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(radioPanelLayout.createSequentialGroup()
.addComponent(radioBMultiple)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, radioPanelLayout.createSequentialGroup()
.addComponent(radioBContrast)
.addGap(50, 50, 50))
.addGroup(radioPanelLayout.createSequentialGroup()
.addComponent(radioBWilcoxon)
.addContainerGap())))
);
radioPanelLayout.setVerticalGroup(
radioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(radioPanelLayout.createSequentialGroup()
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(radioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(radioBFriedman)
.addComponent(radioBMultiple))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(radioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(radioBQuade)
.addComponent(radioBContrast))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(radioPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(radioBAligned)
.addComponent(radioBWilcoxon)))
);
buttonPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder());
buttonPanel.setName("buttonPanel"); // NOI18N
loadButton.setText(resourceMap.getString("loadButton.text")); // NOI18N
loadButton.setName("loadButton"); // NOI18N
loadButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
loadButtonActionPerformed(evt);
}
});
clearButton.setText(resourceMap.getString("clearButton.text")); // NOI18N
clearButton.setName("clearButton"); // NOI18N
clearButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
clearButtonActionPerformed(evt);
}
});
analysisButton.setText(resourceMap.getString("analysisButton.text")); // NOI18N
analysisButton.setName("analysisButton"); // NOI18N
analysisButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
analysisButtonActionPerformed(evt);
}
});
exportButton.setText(resourceMap.getString("exportButton.text")); // NOI18N
exportButton.setName("exportButton"); // NOI18N
exportButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exportButtonActionPerformed(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
jPanel1.setName("jPanel1"); // NOI18N
dimensionsButton.setText(resourceMap.getString("dimensionsButton.text")); // NOI18N
dimensionsButton.setName("dimensionsButton"); // NOI18N
dimensionsButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
dimensionsButtonActionPerformed(evt);
}
});
jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
jLabel1.setName("jLabel1"); // NOI18N
jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
jLabel2.setName("jLabel2"); // NOI18N
methodsField.setText(resourceMap.getString("methodsField.text")); // NOI18N
methodsField.setName("methodsField"); // NOI18N
datasetsField.setText(resourceMap.getString("datasetsField.text")); // NOI18N
datasetsField.setName("datasetsField"); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(dimensionsButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 67, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(methodsField, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(datasetsField, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(methodsField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(datasetsField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)))
.addComponent(dimensionsButton, javax.swing.GroupLayout.DEFAULT_SIZE, 46, Short.MAX_VALUE))
.addContainerGap())
);
javax.swing.GroupLayout buttonPanelLayout = new javax.swing.GroupLayout(buttonPanel);
buttonPanel.setLayout(buttonPanelLayout);
buttonPanelLayout.setHorizontalGroup(
buttonPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(buttonPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(buttonPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(buttonPanelLayout.createSequentialGroup()
.addComponent(loadButton, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(10, 10, 10)
.addComponent(exportButton, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(clearButton))
.addGroup(buttonPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(analysisButton, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
buttonPanelLayout.setVerticalGroup(
buttonPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(buttonPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(buttonPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(clearButton, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(exportButton, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(loadButton, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(analysisButton, javax.swing.GroupLayout.DEFAULT_SIZE, 34, Short.MAX_VALUE)
.addContainerGap())
);
scrollTable.setName("scrollTable"); // NOI18N
dataTable.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
dataTable.setName("dataTable"); // NOI18N
dataTable.setRowSelectionAllowed(false);
dataTable.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);
dataTable.getTableHeader().setReorderingAllowed(false);
scrollTable.setViewportView(dataTable);
measurePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("measurePanel.border.title"))); // NOI18N
measurePanel.setName("measurePanel"); // NOI18N
buttonGroup2.add(radioBMaximize);
radioBMaximize.setSelected(true);
radioBMaximize.setText(resourceMap.getString("radioBMaximize.text")); // NOI18N
radioBMaximize.setName("radioBMaximize"); // NOI18N
radioBMaximize.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioBMaximizeActionPerformed(evt);
}
});
buttonGroup2.add(radioBMinimize);
radioBMinimize.setText(resourceMap.getString("radioBMinimize.text")); // NOI18N
radioBMinimize.setName("radioBMinimize"); // NOI18N
radioBMinimize.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
radioBMinimizeActionPerformed(evt);
}
});
javax.swing.GroupLayout measurePanelLayout = new javax.swing.GroupLayout(measurePanel);
measurePanel.setLayout(measurePanelLayout);
measurePanelLayout.setHorizontalGroup(
measurePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, measurePanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(radioBMaximize)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 104, Short.MAX_VALUE)
.addComponent(radioBMinimize)
.addGap(63, 63, 63))
);
measurePanelLayout.setVerticalGroup(
measurePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(measurePanelLayout.createSequentialGroup()
.addGroup(measurePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(radioBMinimize)
.addComponent(radioBMaximize))
.addContainerGap(7, Short.MAX_VALUE))
);
javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(radioPanel, 0, 323, Short.MAX_VALUE)
.addComponent(optionsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(measurePanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(scrollTable, javax.swing.GroupLayout.DEFAULT_SIZE, 436, Short.MAX_VALUE)
.addContainerGap())
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(mainPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(scrollTable, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 494, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, mainPanelLayout.createSequentialGroup()
.addComponent(radioPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(optionsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(measurePanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(19, Short.MAX_VALUE))
);
divider.setTopComponent(mainPanel);
auxHelpPanel.setMinimumSize(new java.awt.Dimension(800, 25));
auxHelpPanel.setName("auxHelpPanel"); // NOI18N
auxHelpPanel.setPreferredSize(new java.awt.Dimension(800, 75));
helpPanel.setName("helpTabbedPane"); // NOI18N
helpPanel.addTab("User Manual", content);
javax.swing.GroupLayout auxHelpPanelLayout = new javax.swing.GroupLayout(auxHelpPanel);
auxHelpPanel.setLayout(auxHelpPanelLayout);
auxHelpPanelLayout.setHorizontalGroup(
auxHelpPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(helpPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 798, Short.MAX_VALUE)
);
auxHelpPanelLayout.setVerticalGroup(
auxHelpPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(auxHelpPanelLayout.createSequentialGroup()
.addComponent(helpPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 194, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
divider.setRightComponent(auxHelpPanel);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(divider, javax.swing.GroupLayout.PREFERRED_SIZE, 800, javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(divider, javax.swing.GroupLayout.DEFAULT_SIZE, 726, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
if (this.parent != null) {
this.parent.setVisible(true);
}
}//GEN-LAST:event_formWindowClosing
private void radioBFriedmanActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioBFriedmanActionPerformed
testType = FRIEDMAN;
setOneAllChecks();
unsetMultipleChecks();
radioBMaximize.setEnabled(true);
radioBMinimize.setEnabled(true);
}//GEN-LAST:event_radioBFriedmanActionPerformed
private void radioBQuadeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioBQuadeActionPerformed
testType = QUADE;
setOneAllChecks();
unsetMultipleChecks();
radioBMaximize.setEnabled(true);
radioBMinimize.setEnabled(true);
}//GEN-LAST:event_radioBQuadeActionPerformed
private void radioBAlignedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioBAlignedActionPerformed
testType = FRIEDMAN_ALIGNED;
setOneAllChecks();
unsetMultipleChecks();
radioBMaximize.setEnabled(true);
radioBMinimize.setEnabled(true);
}//GEN-LAST:event_radioBAlignedActionPerformed
private void radioBMultipleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioBMultipleActionPerformed
testType = MULTIPLE;
unsetOneAllChecks();
setMultipleChecks();
radioBMaximize.setEnabled(true);
radioBMinimize.setEnabled(true);
}//GEN-LAST:event_radioBMultipleActionPerformed
private void radioBContrastActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioBContrastActionPerformed
testType = CONTRAST;
unsetOneAllChecks();
unsetMultipleChecks();
radioBMaximize.setEnabled(false);
radioBMinimize.setEnabled(false);
}//GEN-LAST:event_radioBContrastActionPerformed
private void dimensionsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dimensionsButtonActionPerformed
int newData;
int newMethod;
int code;
int salvar = JOptionPane.YES_OPTION;
salvar = JOptionPane.showConfirmDialog(this,
"This will erase all data. Are you sure?", "Set dimensions",
JOptionPane.YES_NO_OPTION);
if (salvar == JOptionPane.YES_OPTION) {
try {
newData = Integer.parseInt(datasetsField.getText());
newMethod = Integer.parseInt(methodsField.getText());
} catch (NumberFormatException e) {
newData = 0;
newMethod = 0;
}
code = adequateDimensions(newMethod, newData);
switch (code) {
case 0:
model.resizeTable(newData, newMethod);
break;
case 1:
JOptionPane.showMessageDialog(this, "Error setting dimensions:\n" +
"The number of datsets must be between " + MINDATA + " and " + MAXDATA + " .", "Error", JOptionPane.ERROR_MESSAGE);
break;
case 2:
JOptionPane.showMessageDialog(this, "Error setting dimensions:\n" +
"The number of algorithms must be between " + MINALG + " and " + MAXALG + " .", "Error", JOptionPane.ERROR_MESSAGE);
break;
}
scrollTable.repaint();
}
}//GEN-LAST:event_dimensionsButtonActionPerformed
private void clearButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_clearButtonActionPerformed
int salvar = JOptionPane.YES_OPTION;
salvar = JOptionPane.showConfirmDialog(this,
"This will erase all data. Are you sure?", "Clear data",
JOptionPane.YES_NO_OPTION);
if (salvar == JOptionPane.YES_OPTION) {
model.resetData();
}
}//GEN-LAST:event_clearButtonActionPerformed
private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportButtonActionPerformed
File saveFile = null;
String contents;
String path;
JFileChooser chooser = new JFileChooser(lastPath);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setDialogTitle("Select a name to export the file");
CSVFileFilter filter = new CSVFileFilter();
filter.addExtension("csv");
filter.setFilterName("CSV Files");
chooser.setFileFilter(filter);
chooser.setAcceptAllFileFilterUsed(true);
int returnVal = chooser.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
saveFile = chooser.getSelectedFile();
lastPath=chooser.getSelectedFile().getParent();
} else {
return;
}
try {
path = saveFile.getCanonicalPath();
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "Error exporting data:\n" + ex.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);
return;
}
if (!path.endsWith(".csv")) {
path += ".csv";
}
contents = model.generateCSVOutput();
Files.writeFile(path, contents);
JOptionPane.showMessageDialog(this, "Data succesfully exported to " + path + " file.", "Export data", JOptionPane.INFORMATION_MESSAGE);
}//GEN-LAST:event_exportButtonActionPerformed
private void loadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_loadButtonActionPerformed
File loadFile = null;
int errorCode;
String contents;
String path;
JFileChooser chooser = new JFileChooser(lastPath);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setDialogTitle("Select a CSV file to load");
CSVFileFilter filter = new CSVFileFilter();
filter.addExtension("csv");
filter.setFilterName("CSV Files");
chooser.setFileFilter(filter);
chooser.setAcceptAllFileFilterUsed(true);
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
loadFile = chooser.getSelectedFile();
lastPath=chooser.getSelectedFile().getParent();
} else {
return;
}
try {
path = loadFile.getCanonicalPath();
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "Error loading data:\n" + ex.getLocalizedMessage(), "Error", JOptionPane.ERROR_MESSAGE);
return;
}
if (!path.endsWith(".csv")) {
JOptionPane.showMessageDialog(this, "Error loading data:\n "+path+" is not a .csv file" , "Error", JOptionPane.ERROR_MESSAGE);
return;
}
contents = Files.readFile(path);
errorCode = model.loadCSVData(contents);
switch (errorCode) {
case 0:
JOptionPane.showMessageDialog(this, "Data succesfully loaded.", "Load data", JOptionPane.INFORMATION_MESSAGE);
break;
case 1:
JOptionPane.showMessageDialog(this, "Error loading data:\n" + "Data is not in CSV format", "Error", JOptionPane.ERROR_MESSAGE);
break;
case 2:
JOptionPane.showMessageDialog(this, "Error loading data:\n" + "Data must contain results of " + MINALG + " algorithms, at least ", "Error", JOptionPane.ERROR_MESSAGE);
break;
case 3:
JOptionPane.showMessageDialog(this, "Error loading data:\n" + "Data must contain results in " + MINDATA + " data sets, at least ", "Error", JOptionPane.ERROR_MESSAGE);
break;
case 4:
JOptionPane.showMessageDialog(this, "Error loading data:\n" + "Data must contain results of less than " + (MAXALG + 1) + " algorithms.", "Error", JOptionPane.ERROR_MESSAGE);
break;
case 5:
JOptionPane.showMessageDialog(this, "Error loading data:\n" + "Data must contain results of less than " + (MAXDATA + 1) + " data sets.", "Error", JOptionPane.ERROR_MESSAGE);
break;
}
methodsField.setText("" + (model.getColumnCount() - 1));
datasetsField.setText("" + (model.getRowCount()));
}//GEN-LAST:event_loadButtonActionPerformed
private void analysisButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_analysisButtonActionPerformed
File saveFile = null;
String path;
JFileChooser chooser = new JFileChooser(lastPath);
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.setDialogTitle("Select a name for the resuls file");
CSVFileFilter filter = new CSVFileFilter();
filter.addExtension("tex");
filter.setFilterName("TeX Files");
chooser.setFileFilter(filter);
chooser.setAcceptAllFileFilterUsed(true);
int returnVal = chooser.showSaveDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
saveFile = chooser.getSelectedFile();
lastPath = chooser.getSelectedFile().getParent();
} else {
return;
}
try {
path = saveFile.getCanonicalPath();
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "Error generating results file.", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
if (!path.endsWith(".tex")) {
path += ".tex";
}
//Prepare configuration
Configuration.setPath(path);
Configuration.setNAlgorithms(model.getColumnCount() - 1);
Configuration.setNDatasets(model.getRowCount());
Configuration.setObjective(objective);
Configuration.setIman(checkIman.isSelected());
Configuration.setBonferroni(checkBonferroni.isSelected());
Configuration.setHolm(checkHolm.isSelected());
Configuration.setHochberg(checkHochberg.isSelected());
Configuration.setHommel(checkHommel.isSelected());
Configuration.setHolland(checkHolland.isSelected());
Configuration.setRom(checkRom.isSelected());
Configuration.setFinner(checkFinner.isSelected());
Configuration.setLi(checkLi.isSelected());
Configuration.setNemenyi(checkNemenyi.isSelected());
Configuration.setShaffer(checkShaffer.isSelected());
Configuration.setBergman(checkBergman.isSelected());
//Launch tests
String algorithmNames[] = new String[model.getColumnCount() - 1];
for (int i = 0; i < algorithmNames.length; i++) {
algorithmNames[i] = model.getColumnName(i + 1);
algorithmNames[i] = formatLatex(algorithmNames[i]);
}
double data[][] = new double[algorithmNames.length][model.getRowCount()];
for (int i = 0; i < algorithmNames.length; i++) {
for (int j = 0; j < model.getRowCount(); j++) {
data[i][j] = (Double) model.getValueAt(j, i + 1);
}
}
String location;
location="Results file in .tex format can be found in "+path;
switch (testType) {
case FRIEDMAN:
if(algorithmNames.length<MINALGF){
JOptionPane.showMessageDialog(this, "Friedman test must include at least "+MINALGF+" algorithms.", "Error", JOptionPane.ERROR_MESSAGE);
}else{
Friedman.doFriedman(data, algorithmNames);
JOptionPane.showMessageDialog(this, "Friedman test performed succesfully.\n"+location, "Analysis performed", JOptionPane.INFORMATION_MESSAGE);
}
break;
case FRIEDMAN_ALIGNED:
if(algorithmNames.length<MINALGF){
JOptionPane.showMessageDialog(this, "Friedman Aligned test must include at least "+MINALGF+" algorithms.", "Error", JOptionPane.ERROR_MESSAGE);
}else{
Friedman.doFriedmanAligned(data, algorithmNames);
JOptionPane.showMessageDialog(this, "Friedman Aligned test performed succesfully.\n"+location, "Analysis performed", JOptionPane.INFORMATION_MESSAGE);
}
break;
case QUADE:
if(algorithmNames.length<MINALGF){
JOptionPane.showMessageDialog(this, "Quade test must include at least "+MINALGF+" algorithms.", "Error", JOptionPane.ERROR_MESSAGE);
}else{
Friedman.doQuade(data, algorithmNames);
JOptionPane.showMessageDialog(this, "Quade test performed succesfully.\n"+location, "Analysis performed", JOptionPane.INFORMATION_MESSAGE);
}
break;
case MULTIPLE:
if(algorithmNames.length<MINALGF){
JOptionPane.showMessageDialog(this, "Friedman NxN test must include at least "+MINALGF+" algorithms.", "Error", JOptionPane.ERROR_MESSAGE);
break;
}else{
Multiple.doMultiple(data, algorithmNames);
JOptionPane.showMessageDialog(this, "Friedman NxN test performed succesfully.\n"+location, "Analysis performed", JOptionPane.INFORMATION_MESSAGE);
}
break;
case CONTRAST:
Contrast.doContrast(data, algorithmNames);
JOptionPane.showMessageDialog(this, "Contrast estimation performed succesfully.\n"+location, "Analysis performed", JOptionPane.INFORMATION_MESSAGE);
break;
case WILCOXON:
Wilcoxon.doWilcoxon(data, algorithmNames);
JOptionPane.showMessageDialog(this, "Wilcoxon test performed succesfully.\n"+location, "Analysis performed", JOptionPane.INFORMATION_MESSAGE);
break;
}
}//GEN-LAST:event_analysisButtonActionPerformed
private void radioBMaximizeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioBMaximizeActionPerformed
objective = MAXIMIZE;
}//GEN-LAST:event_radioBMaximizeActionPerformed
private void radioBMinimizeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioBMinimizeActionPerformed
objective = MINIMIZE;
}//GEN-LAST:event_radioBMinimizeActionPerformed
private void radioBWilcoxonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioBWilcoxonActionPerformed
testType = WILCOXON;
unsetOneAllChecks();
unsetMultipleChecks();
radioBMaximize.setEnabled(true);
radioBMinimize.setEnabled(true);
}//GEN-LAST:event_radioBWilcoxonActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new StatisticalF().setVisible(true);
}
});
}//end-method
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton analysisButton;
private javax.swing.JPanel auxHelpPanel;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.ButtonGroup buttonGroup2;
private javax.swing.JPanel buttonPanel;
private javax.swing.JCheckBox checkBergman;
private javax.swing.JCheckBox checkBonferroni;
private javax.swing.JCheckBox checkFinner;
private javax.swing.JCheckBox checkHochberg;
private javax.swing.JCheckBox checkHolland;
private javax.swing.JCheckBox checkHolm;
private javax.swing.JCheckBox checkHommel;
private javax.swing.JCheckBox checkIman;
private javax.swing.JCheckBox checkLi;
private javax.swing.JCheckBox checkNemenyi;
private javax.swing.JCheckBox checkRom;
private javax.swing.JCheckBox checkShaffer;
private javax.swing.JButton clearButton;
private javax.swing.JTable dataTable;
private javax.swing.JTextField datasetsField;
private javax.swing.JButton dimensionsButton;
private javax.swing.JSplitPane divider;
private javax.swing.JButton exportButton;
private javax.swing.JTabbedPane helpPanel;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JButton loadButton;
private javax.swing.JPanel mainPanel;
private javax.swing.JPanel measurePanel;
private javax.swing.JTextField methodsField;
private javax.swing.JPanel optionsPanel;
private javax.swing.JRadioButton radioBAligned;
private javax.swing.JRadioButton radioBContrast;
private javax.swing.JRadioButton radioBFriedman;
private javax.swing.JRadioButton radioBMaximize;
private javax.swing.JRadioButton radioBMinimize;
private javax.swing.JRadioButton radioBMultiple;
private javax.swing.JRadioButton radioBQuade;
private javax.swing.JRadioButton radioBWilcoxon;
private javax.swing.JPanel radioPanel;
private javax.swing.JScrollPane scrollTable;
// End of variables declaration//GEN-END:variables
/**
* Enables all checks for one vs all tests
*/
private void setOneAllChecks() {
checkIman.setEnabled(true);
checkBonferroni.setEnabled(true);
checkHolm.setEnabled(true);
checkHochberg.setEnabled(true);
checkHommel.setEnabled(true);
checkHolland.setEnabled(true);
checkRom.setEnabled(true);
checkFinner.setEnabled(true);
checkLi.setEnabled(true);
}//end-method
/**
* Disables all checks for one vs all tests
*/
private void unsetOneAllChecks() {
checkIman.setEnabled(false);
checkBonferroni.setEnabled(false);
checkHolm.setEnabled(false);
checkHochberg.setEnabled(false);
checkHommel.setEnabled(false);
checkHolland.setEnabled(false);
checkRom.setEnabled(false);
checkFinner.setEnabled(false);
checkLi.setEnabled(false);
}//end-method
/**
* Enables all checks for multiple tests
*/
private void setMultipleChecks() {
checkNemenyi.setEnabled(true);
checkShaffer.setEnabled(true);
checkBergman.setEnabled(true);
checkIman.setEnabled(true);
checkHolm.setEnabled(true);
}//end-method
/**
* Disables all checks for multiple tests
*/
private void unsetMultipleChecks() {
checkNemenyi.setEnabled(false);
checkShaffer.setEnabled(false);
checkBergman.setEnabled(false);
}//end-method
/**
* Test if the dimensions selected are right
*
* @param cols Columns desired
* @param rows Rows desired
*
* @return 0 if the dimensions selected are right, > 0 if not
*/
private int adequateDimensions(int cols, int rows) {
if ((cols >= MINALG) && (cols <= MAXALG)) {
if ((rows >= MINDATA) && (rows <= MAXDATA)) {
return 0;
} else {
return 1;
}
} else {
return 2;
}
}//end-method
/**
* replaces characters non adequate for LaTeX formatting
*
* @param text String to scan
*
* @return A string replaced
*/
private String formatLatex(String text){
String output=text.replaceAll("_","-");
return output;
}//end-method
}//end-class