/***********************************************************************
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/
**********************************************************************/
/**
* <p>
* @author Written by Pedro Antonio Gutiérrez and Juan Carlos Fernández (University of Córdoba) 23/10/2008
* @version 1.0
* @since JDK1.5
* </p>
*/
package keel.GraphInterKeel.datacf.partitionData;
import javax.swing.JOptionPane;
public class HoldOutOptionsJDialog extends javax.swing.JDialog {
/**
* <p>
* Option dialog for Hold Out partition type
* </p>
*/
/**
* <p>
* Constructor that initializes the dialog
* </p>
*/
public HoldOutOptionsJDialog(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
this.setLocationRelativeTo(parent);
//this.setResizable(false);
}
/**
* <p>
* This method is called from within the constructor to
* initialize the form.
* </p>
* <p>
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
* </p>
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
holdOutjPanel = new javax.swing.JPanel();
this.setResizable(false);
partitionsjLabel = new javax.swing.JLabel();
percentagesjLabel = new javax.swing.JLabel();
holdOutjSpinner = new javax.swing.JSpinner();
holdOutjComboBox = new javax.swing.JComboBox();
buttonsjPanel = new javax.swing.JPanel();
acceptjButton = new javax.swing.JButton();
canceljButton = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setName("Form"); // NOI18N
setResizable(false);
holdOutjPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Hold-Out"));
holdOutjPanel.setName("holdOutjPanel"); // NOI18N
partitionsjLabel.setText("Number of Partitions");
partitionsjLabel.setName("partitionsjLabel"); // NOI18N
percentagesjLabel.setText("Percentages");
percentagesjLabel.setName("percentagesjLabel"); // NOI18N
holdOutjSpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(1), Integer.valueOf(1), null, Integer.valueOf(1)));
holdOutjSpinner.setToolTipText("Number of Training/Test Pairs to be Generated");
holdOutjSpinner.setName("holdOutjSpinner"); // NOI18N
holdOutjComboBox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "50% Training - 50% Test", "66% Training - 33% Test", "75% Training - 25% Test", "80% Training - 20% Test", "84% Training - 16% Test", "86% Training - 14% Test", "88% Training - 12% Test", "89% Training - 11% Test", "90% Training - 10% Test" }));
holdOutjComboBox.setToolTipText("Training/Test Percentages");
holdOutjComboBox.setName("holdOutjComboBox"); // NOI18N
javax.swing.GroupLayout holdOutjPanelLayout = new javax.swing.GroupLayout(holdOutjPanel);
holdOutjPanel.setLayout(holdOutjPanelLayout);
holdOutjPanelLayout.setHorizontalGroup(
holdOutjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, holdOutjPanelLayout.createSequentialGroup()
.addGap(19, 19, 19)
.addGroup(holdOutjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, holdOutjPanelLayout.createSequentialGroup()
.addComponent(percentagesjLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 93, Short.MAX_VALUE)
.addComponent(holdOutjComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, holdOutjPanelLayout.createSequentialGroup()
.addComponent(partitionsjLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 141, Short.MAX_VALUE)
.addComponent(holdOutjSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(20, 20, 20))
);
holdOutjPanelLayout.setVerticalGroup(
holdOutjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(holdOutjPanelLayout.createSequentialGroup()
.addGroup(holdOutjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(partitionsjLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 19, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(holdOutjSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(17, 17, 17)
.addGroup(holdOutjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(percentagesjLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(holdOutjComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
buttonsjPanel.setName("buttonsjPanel"); // NOI18N
buttonsjPanel.setLayout(new java.awt.GridBagLayout());
acceptjButton.setText("Accept");
acceptjButton.setToolTipText("Accept the Current Values");
acceptjButton.setName("acceptjButton"); // NOI18N
acceptjButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
acceptjButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(7, 0, 7, 124);
buttonsjPanel.add(acceptjButton, gridBagConstraints);
canceljButton.setText("Cancel");
canceljButton.setToolTipText("Discard the Current Values");
canceljButton.setName("canceljButton"); // NOI18N
canceljButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
canceljButtonActionPerformed(evt);
}
});
buttonsjPanel.add(canceljButton, new java.awt.GridBagConstraints());
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(holdOutjPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(buttonsjPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 384, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(holdOutjPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonsjPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void acceptjButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_acceptjButtonActionPerformed
try {
nOfPartitions = (Integer) holdOutjSpinner.getValue();
} catch (Exception ex) {
JOptionPane.showMessageDialog(this,
"Insert an integer number for the number of partitions, please" + ex.getLocalizedMessage(), "Error", 2);
nOfPartitions = 1;
return;
}
if (nOfPartitions <= 0) {
JOptionPane.showMessageDialog(this,
"Insert a positive number or the number of partitions, please", "Error", 2);
nOfPartitions = 1;
return;
}
totalFractions = holdOutjComboBox.getSelectedIndex() + 2;
setVisible(false);
}//GEN-LAST:event_acceptjButtonActionPerformed
private void canceljButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_canceljButtonActionPerformed
setVisible(false);
holdOutjSpinner.setValue(nOfPartitions);
holdOutjComboBox.setSelectedIndex(totalFractions - 2);
}//GEN-LAST:event_canceljButtonActionPerformed
/**
* Main method
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
HoldOutOptionsJDialog dialog = new HoldOutOptionsJDialog(new javax.swing.JFrame(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton acceptjButton;
private javax.swing.JPanel buttonsjPanel;
private javax.swing.JButton canceljButton;
private javax.swing.JComboBox holdOutjComboBox;
private javax.swing.JPanel holdOutjPanel;
private javax.swing.JSpinner holdOutjSpinner;
private javax.swing.JLabel partitionsjLabel;
private javax.swing.JLabel percentagesjLabel;
// End of variables declaration//GEN-END:variables
/** Number of partitions */
protected int nOfPartitions = 1;
/** Number of fractions */
protected int totalFractions = 2;
/**
* <p>
* Gets the number of fractions of the hold-out process. Two fractions
* correspond to a "50%Training/50%Testing" configuration, three fractions
* to "66%Training/33%Testing", four fractions to
* "75%Training/25%Testing"...
* </p>
* @return int Number of fractions
*/
public int getTotalFractions() {
return totalFractions;
}
/**
* <p>
* Gets the number of partitions to be performed, i.e. the number of times
* that a random division using the configuration selected is going
* to be performed.
* </p>
* @return int Number of partitions
*/
public int getNOfPartitions() {
return nOfPartitions;
}
}