/***********************************************************************
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/
**********************************************************************/
package keel.GraphInterKeel.datacf.editData;
import keel.GraphInterKeel.datacf.util.Dataset;
import keel.GraphInterKeel.datacf.util.EachRowEditor;
import keel.GraphInterKeel.datacf.util.VariableTable;
import java.util.Vector;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.TableColumn;
/**
* <p>
* @author Written by Juan Carlos Fern�ndez and Pedro Antonio Guti�rrez (University of C�rdoba) 23/10/2008
* @version 1.0
* @since JDK1.5
* </p>
*/
public class EditVariablePanel extends javax.swing.JPanel {
/**
* <p>
* Constructor that initializes the panel
* </p>
*/
public EditVariablePanel() {
initComponents();
}
/**
* <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;
variablejScrollPane = new javax.swing.JScrollPane();
jTable1 = new javax.swing.JTable();
buttonsjPanel = new javax.swing.JPanel();
addjButton = new javax.swing.JButton();
deletejButton = new javax.swing.JButton();
valueRangejPanel = new javax.swing.JPanel();
valueRangejLabel = new javax.swing.JLabel();
minjTextField = new javax.swing.JTextField();
comajLabel = new javax.swing.JLabel();
maxjTextField = new javax.swing.JTextField();
rightBracketjLabel = new javax.swing.JLabel();
nominalValuejLabel = new javax.swing.JLabel();
nominalValuejTextField = new javax.swing.JTextField();
addNominalValuejButton = new javax.swing.JButton();
deleteNominalValuejButton = new javax.swing.JButton();
leftBracketjLabel = new javax.swing.JLabel();
changejButton = new javax.swing.JButton();
rangeNominaljComboBox = new javax.swing.JComboBox();
setName("Form"); // NOI18N
variablejScrollPane.setName("variablejScrollPane"); // NOI18N
jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Name", "Type", "Range", "Input/Output"
}
));
jTable1.setName("jTable1"); // NOI18N
variablejScrollPane.setViewportView(jTable1);
buttonsjPanel.setName("buttonsjPanel"); // NOI18N
buttonsjPanel.setLayout(new java.awt.GridBagLayout());
addjButton.setText("Add Variable");
addjButton.setToolTipText("Add new variable");
addjButton.setEnabled(false);
addjButton.setMaximumSize(new java.awt.Dimension(105, 23));
addjButton.setMinimumSize(new java.awt.Dimension(105, 23));
addjButton.setName("addjButton"); // NOI18N
addjButton.setPreferredSize(new java.awt.Dimension(109, 23));
addjButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addjButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.ipadx = 4;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 10);
buttonsjPanel.add(addjButton, gridBagConstraints);
deletejButton.setText("Delete Variable");
deletejButton.setToolTipText("Delete variable");
deletejButton.setEnabled(false);
deletejButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
deletejButton.setName("deletejButton"); // NOI18N
deletejButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deletejButtonActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
buttonsjPanel.add(deletejButton, gridBagConstraints);
valueRangejPanel.setBorder(javax.swing.BorderFactory.createTitledBorder("Value Range and Nominal Values"));
valueRangejPanel.setName("valueRangejPanel"); // NOI18N
valueRangejLabel.setText("Value Range:");
valueRangejLabel.setEnabled(false);
valueRangejLabel.setName("valueRangejLabel"); // NOI18N
minjTextField.setEnabled(false);
minjTextField.setName("minjTextField"); // NOI18N
minjTextField.setPreferredSize(new java.awt.Dimension(60, 20));
comajLabel.setText(",");
comajLabel.setEnabled(false);
comajLabel.setName("comajLabel"); // NOI18N
maxjTextField.setEnabled(false);
maxjTextField.setName("maxjTextField"); // NOI18N
maxjTextField.setPreferredSize(new java.awt.Dimension(60, 20));
rightBracketjLabel.setText("]");
rightBracketjLabel.setEnabled(false);
rightBracketjLabel.setName("rightBracketjLabel"); // NOI18N
nominalValuejLabel.setText("Nominal Value:");
nominalValuejLabel.setEnabled(false);
nominalValuejLabel.setName("nominalValuejLabel"); // NOI18N
nominalValuejTextField.setEnabled(false);
nominalValuejTextField.setName("nominalValuejTextField"); // NOI18N
addNominalValuejButton.setText("Add");
addNominalValuejButton.setToolTipText("Add new nominal value");
addNominalValuejButton.setEnabled(false);
addNominalValuejButton.setName("addNominalValuejButton"); // NOI18N
addNominalValuejButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
addNominalValuejButtonActionPerformed(evt);
}
});
deleteNominalValuejButton.setText("Delete");
deleteNominalValuejButton.setToolTipText("Delete a nominal value");
deleteNominalValuejButton.setEnabled(false);
deleteNominalValuejButton.setName("deleteNominalValuejButton"); // NOI18N
deleteNominalValuejButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deleteNominalValuejButtonActionPerformed(evt);
}
});
leftBracketjLabel.setText("[");
leftBracketjLabel.setEnabled(false);
leftBracketjLabel.setName("leftBracketjLabel"); // NOI18N
changejButton.setText("Change Range");
changejButton.setToolTipText("Change Range Values");
changejButton.setEnabled(false);
changejButton.setName("changejButton"); // NOI18N
changejButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
changejButtonActionPerformed(evt);
}
});
rangeNominaljComboBox.setEnabled(false);
rangeNominaljComboBox.setName("rangeNominaljComboBox"); // NOI18N
javax.swing.GroupLayout valueRangejPanelLayout = new javax.swing.GroupLayout(valueRangejPanel);
valueRangejPanel.setLayout(valueRangejPanelLayout);
valueRangejPanelLayout.setHorizontalGroup(
valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(valueRangejPanelLayout.createSequentialGroup()
.addGroup(valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(valueRangejPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(valueRangejPanelLayout.createSequentialGroup()
.addComponent(leftBracketjLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(minjTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(comajLabel))
.addComponent(valueRangejLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(maxjTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 75, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rightBracketjLabel))
.addGroup(valueRangejPanelLayout.createSequentialGroup()
.addGap(67, 67, 67)
.addComponent(changejButton)))
.addGroup(valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(valueRangejPanelLayout.createSequentialGroup()
.addGap(63, 63, 63)
.addComponent(nominalValuejLabel))
.addGroup(valueRangejPanelLayout.createSequentialGroup()
.addGap(18, 18, 18)
.addGroup(valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(rangeNominaljComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(nominalValuejTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 133, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(deleteNominalValuejButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(addNominalValuejButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap(39, Short.MAX_VALUE))
);
valueRangejPanelLayout.setVerticalGroup(
valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(valueRangejPanelLayout.createSequentialGroup()
.addGroup(valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(valueRangejPanelLayout.createSequentialGroup()
.addComponent(valueRangejLabel)
.addGap(9, 9, 9)
.addGroup(valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(leftBracketjLabel)
.addComponent(minjTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(comajLabel)
.addComponent(maxjTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(rightBracketjLabel)
.addComponent(nominalValuejTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(addNominalValuejButton))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(valueRangejPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(changejButton)
.addComponent(rangeNominaljComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(deleteNominalValuejButton)))
.addComponent(nominalValuejLabel))
.addContainerGap(13, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(buttonsjPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 459, Short.MAX_VALUE)
.addComponent(variablejScrollPane, 0, 0, Short.MAX_VALUE)
.addComponent(valueRangejPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(variablejScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 173, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(valueRangejPanel, 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, 36, javax.swing.GroupLayout.PREFERRED_SIZE))
);
}// </editor-fold>//GEN-END:initComponents
private void deletejButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deletejButtonActionPerformed
this.deletejButton.setEnabled(false);
int column, i, j;
int temp = 0;
Object nuevo[][];
String nombres[];
column = this.jTable1.getSelectedRow();
if (this.editDataPanel.getData().getInputs().remove(this.editDataPanel.getData().getAttributeIndex(column))) {
this.editDataPanel.getData().setNentradas(((this.editDataPanel.getData().getNInputs()) - 1));
}
if (this.editDataPanel.getData().getOutputs().remove(this.editDataPanel.getData().getAttributeIndex(column))) {
this.editDataPanel.getData().setNOutputs(((this.editDataPanel.getData().getNOutputs()) - 1));
}
this.editDataPanel.getData().getRanges().remove(column);
this.editDataPanel.getData().getTypes().remove(column);
this.editDataPanel.getData().getAttributes().remove(column);
this.editDataPanel.getData().setNVariables((this.editDataPanel.getData().getNVariables()) - 1);
for (int x = 0; x < this.editDataPanel.getData().getNData(); x++) {
this.editDataPanel.getData().getPatternIndex(x).remove(column);
}
nuevo = new Object[this.editDataPanel.getTablaDataset().getData().length][((this.editDataPanel.getTablaDataset().getData()[0].length) - 1)];
for (i = 0; i < nuevo.length; i++) {
temp = 0;
for (j = 0; j < nuevo[i].length; j++) {
if (j == column && temp == 0) {
temp++;
}
nuevo[i][j] = (this.editDataPanel.getTablaDataset().getData())[i][j + temp];
}
}
temp = 0;
nombres = new String[((this.editDataPanel.getTablaDataset().getColumnCount()) - 1)];
for (i = 0; i < nombres.length; i++) {
if (i == column && temp == 0) {
temp++;
}
nombres[i] = new String(this.editDataPanel.getTablaDataset().getColumnName(i + temp));
}
this.editDataPanel.getTablaDataset().setData(nuevo);
this.editDataPanel.getTablaDataset().setColumnNames(nombres);
this.editDataPanel.getTablaDataset().setDatos(this.editDataPanel.getData());
this.editDataPanel.getScrollPane().getViewport().remove(this.editDataPanel.getJTable1());
this.editDataPanel.setJTable1(new JTable(this.editDataPanel.getTablaDataset()));
this.editDataPanel.getJTable1().getTableHeader().setReorderingAllowed(false);
this.editDataPanel.getJTable1().setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
this.editDataPanel.getJTable1().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.editDataPanel.getJTable1().setCellSelectionEnabled(true);
this.editDataPanel.getJTable1().setColumnSelectionAllowed(true);
//Refresh EditVariablePanel
this.refreshVariablePanel(this.editDataPanel.getData());
//Refresh EditDataPanel
this.editDataPanel.refreshDataPanel(this.editDataPanel.getData());
//Disable buttons
this.enabledRanges(false);
}//GEN-LAST:event_deletejButtonActionPerformed
private void addNominalValuejButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addNominalValuejButtonActionPerformed
this.deletejButton.setEnabled(false);
int row = jTable1.getSelectedRow();
String nuevo = new String(this.nominalValuejTextField.getText());
nuevo = (this.eliminateSpaces(nuevo));
if (nuevo.trim().equals("") == false) {
this.nominalValuejTextField.setText("");
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).add(nuevo);
JComboBox comboBox = new JComboBox();
for (int i = 0; i < this.editDataPanel.getData().getRange(row).size(); i++) {
comboBox.addItem(new String(this.editDataPanel.getData().getRangesEnum(row, i)));
}
EachRowEditor rowEditor = new EachRowEditor(jTable1);
rowEditor.setEditorAt(row, new DefaultCellEditor(comboBox));
this.jTable1.getColumnModel().getColumn(2).setCellEditor(rowEditor);
}
//Refresh EditVariablePanel
this.refreshVariablePanel(this.editDataPanel.getData());
//Disable buttons
this.enabledRanges(false);
//Refresh EditDataPanel
this.editDataPanel.refreshDataPanel(this.editDataPanel.getData());
}//GEN-LAST:event_addNominalValuejButtonActionPerformed
private void deleteNominalValuejButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteNominalValuejButtonActionPerformed
int row = jTable1.getSelectedRow();
int i;
if (this.rangeNominaljComboBox.getSelectedIndex() != -1) {
Vector aux;
Vector<String> aux2;
for (int w = 0; w < this.editDataPanel.getData().getDataVector().size(); w++) {
aux = this.editDataPanel.getData().getDataVector();
aux2 = ((Vector<String>) aux.get(w));
if (aux2.get(row).equals(this.rangeNominaljComboBox.getSelectedItem())) {
aux2.setElementAt("<null>", row);
}
}
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).remove(new String((String) (this.rangeNominaljComboBox.getSelectedItem())));
this.rangeNominaljComboBox.removeItemAt(this.rangeNominaljComboBox.getSelectedIndex());
JComboBox comboBox = new JComboBox();
for (i = 0; i < this.editDataPanel.getData().getRange(row).size(); i++) {
comboBox.addItem(new String(this.editDataPanel.getData().getRangesEnum(row, i)));
}
EachRowEditor rowEditor = new EachRowEditor(jTable1);
rowEditor.setEditorAt(row, new DefaultCellEditor(comboBox));
this.jTable1.getColumnModel().getColumn(2).setCellEditor(rowEditor);
}
//Refresh EditVariablePanel
this.refreshVariablePanel(this.editDataPanel.getData());
//Refresh EditDataPanel
this.editDataPanel.refreshDataPanel(this.editDataPanel.getData());
//Disable buttons
this.enabledRanges(false);
//if there is not ranges
if (this.editDataPanel.getData().getRange(row).size() == 0) {
JOptionPane.showMessageDialog(this, "Please, insert new nominal values for the variable " + "\"" + this.editDataPanel.getData().getAttributeIndex(row) + "\"", "Variable without range", 2);
}
}//GEN-LAST:event_deleteNominalValuejButtonActionPerformed
private void changejButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_changejButtonActionPerformed
int row = 0;
try {
row = jTable1.getSelectedRow();
Vector r = new Vector();
r = (Vector) this.editDataPanel.getData().getRanges().elementAt(row);
if (this.editDataPanel.getData().getAttributeTypeIndex(row).equalsIgnoreCase("integer")) {
int inferior = Integer.parseInt(minjTextField.getText());
int superior = Integer.parseInt(maxjTextField.getText());
Integer auxI = (Integer) r.get(0);
Integer auxS = (Integer) r.get(1);
if (inferior > auxI.intValue()) {
JOptionPane.showMessageDialog(this, "Incorrect Range", "Error", 2);
this.minjTextField.setText(auxI.toString());
this.maxjTextField.setText(auxS.toString());
return;
/*
for(int i=0; i<this.editDataPanel.getData().getNData(); i++)
{
String myString = this.editDataPanel.getData().getPatternIndex(i, row);
if(Integer.valueOf(myString).intValue()<inferior)
this.editDataPanel.tablaDataset.setValueAt(inferior, i, row);
}
*/
}
if (superior < auxS.intValue()) {
JOptionPane.showMessageDialog(this, "Incorrect Range", "Error", 2);
this.minjTextField.setText(auxI.toString());
this.maxjTextField.setText(auxS.toString());
return;
/*
for(int i=0; i<this.editDataPanel.getData().getNData(); i++)
{
String myString = this.editDataPanel.getData().getPatternIndex(i, row);
if(Integer.valueOf(myString).intValue()>superior)
this.editDataPanel.tablaDataset.setValueAt(inferior, i, row);
}
*/
}
} else {
double inferior = Double.parseDouble(minjTextField.getText());
double superior = Double.parseDouble(maxjTextField.getText());
Double auxI = (Double) r.get(0);
Double auxS = (Double) r.get(1);
if (inferior > auxI.doubleValue()) {
JOptionPane.showMessageDialog(this, "Incorrect Range", "Error", 2);
this.minjTextField.setText(auxI.toString());
this.maxjTextField.setText(auxS.toString());
return;
/*
for(int i=0; i<this.editDataPanel.getData().getNData(); i++)
{
String myString = this.editDataPanel.getData().getPatternIndex(i, row);
if(Integer.valueOf(myString).intValue()<inferior)
this.editDataPanel.tablaDataset.setValueAt(inferior, i, row);
}
*/
}
if (superior < auxS.doubleValue()) {
JOptionPane.showMessageDialog(this, "Incorrect Range", "Error", 2);
this.minjTextField.setText(auxI.toString());
this.maxjTextField.setText(auxS.toString());
return;
/*
for(int i=0; i<this.editDataPanel.getData().getNData(); i++)
{
String myString = this.editDataPanel.getData().getPatternIndex(i, row);
if(Integer.valueOf(myString).intValue()>superior)
this.editDataPanel.tablaDataset.setValueAt(inferior, i, row);
}
*/
}
}
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(this, "Please, insert a correct number", "Error", 2);
}
//Minimum!!!
try {
row = jTable1.getSelectedRow();
int n;
double m;
if (this.editDataPanel.getData().getAttributeTypeIndex(row).equalsIgnoreCase("integer")) {
n = Integer.parseInt(minjTextField.getText());
if (n > Integer.parseInt(maxjTextField.getText())) {
JOptionPane.showMessageDialog(this, "Please, insert a minimum number less than maximum", "Error", 2);
return;
}
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).removeAllElements();
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).add(new Integer(minjTextField.getText()));
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).add(new Integer(maxjTextField.getText()));
} else {
m = Double.parseDouble(minjTextField.getText());
if (m > Double.parseDouble(maxjTextField.getText())) {
JOptionPane.showMessageDialog(this, "Please, insert a minimum number less than maximum", "Error", 2);
return;
}
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).removeAllElements();
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).add(new Double(minjTextField.getText()));
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).add(new Double(maxjTextField.getText()));
}
} catch (NumberFormatException ex) {
System.out.println("EXCEPCION 1!!!!!!!!!!!!!!!!");
JOptionPane.showMessageDialog(this, "Please, insert a correct number", "Error", 2);
return;
}
//MAximum!!!
try {
row = jTable1.getSelectedRow();
int n;
double m;
if (this.editDataPanel.getData().getAttributeTypeIndex(row).equalsIgnoreCase("integer")) {
n = Integer.parseInt(maxjTextField.getText());
if (n < Integer.parseInt(minjTextField.getText())) {
JOptionPane.showMessageDialog(this, "Please, insert a number greater than min Interval", "Error", 2);
return;
}
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).removeAllElements();
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).add(new Integer(minjTextField.getText()));
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).add(new Integer(maxjTextField.getText()));
} else {
m = Double.parseDouble(maxjTextField.getText());
if (m < Double.parseDouble(minjTextField.getText())) {
JOptionPane.showMessageDialog(this, "Please, insert a number greater than min Interval", "Error", 2);
return;
}
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).removeAllElements();
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).add(new Double(minjTextField.getText()));
((Vector) (this.editDataPanel.getData().getRanges().elementAt(row))).add(new Double(maxjTextField.getText()));
}
} catch (NumberFormatException ex) {
System.out.println("EXCEPCION 2!!!!!!!!!!!!!!!!");
JOptionPane.showMessageDialog(this, "Please, insert a correct number", "Error", 2);
}
//Disable buttons
this.enabledRanges(false);
//Refresh EditVariablePanel
this.refreshVariablePanel(this.editDataPanel.getData());
//Refresh EditDataPanel
this.editDataPanel.refreshDataPanel(this.editDataPanel.getData());
}//GEN-LAST:event_changejButtonActionPerformed
private void addjButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addjButtonActionPerformed
this.counter++;
//Se añade la nueva variable
this.editDataPanel.getData().getInputs().addElement(new String("newInput" + counter)); //Nueva variable input
this.editDataPanel.getData().setNentradas(((this.editDataPanel.getData().getNInputs()) + 1));
this.editDataPanel.getData().setNVariables((this.editDataPanel.getData().getNVariables()) + 1);
Vector rangos = new Vector();
rangos.add(new Integer(0));
rangos.add(new Integer(0));
this.editDataPanel.getData().getRanges().addElement(rangos);
this.editDataPanel.getData().getTypes().addElement(new String("integer"));
this.editDataPanel.getData().getAttributes().addElement(new String("newInput" + counter));
Vector aux;
Vector<String> aux2;
for (int i = 0; i < editDataPanel.getData().getDataVector().size(); i++) {
aux = this.editDataPanel.getData().getDataVector();
aux2 = ((Vector<String>) aux.get(i));
aux2.addElement("0");
}
//Refresh EditVariablePanel
this.refreshVariablePanel(this.editDataPanel.getData());
//Refresh EditDataPanel
this.editDataPanel.refreshDataPanel(this.editDataPanel.getData());
//Disable buttons
this.enabledRanges(false);
}//GEN-LAST:event_addjButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton addNominalValuejButton;
private javax.swing.JButton addjButton;
private javax.swing.JPanel buttonsjPanel;
private javax.swing.JButton changejButton;
private javax.swing.JLabel comajLabel;
private javax.swing.JButton deleteNominalValuejButton;
private javax.swing.JButton deletejButton;
private javax.swing.JTable jTable1;
private javax.swing.JLabel leftBracketjLabel;
private javax.swing.JTextField maxjTextField;
private javax.swing.JTextField minjTextField;
private javax.swing.JLabel nominalValuejLabel;
private javax.swing.JTextField nominalValuejTextField;
private javax.swing.JComboBox rangeNominaljComboBox;
private javax.swing.JLabel rightBracketjLabel;
private javax.swing.JLabel valueRangejLabel;
private javax.swing.JPanel valueRangejPanel;
private javax.swing.JScrollPane variablejScrollPane;
// End of variables declaration//GEN-END:variables
// Edit Data Panel
protected EditDataPanel editDataPanel = null;
//Table for Variables
protected VariableTable variableTable = null;
// Count new variables added
protected int counter = 0;
/**
* <p>
* Set Edit Data Panel
* </p>
* @param editDataPanel Panel for editing data
*/
public void setEditDataPanel(EditDataPanel editDataPanel) {
this.editDataPanel = editDataPanel;
}
/**
* <p>
* Get Edit Data Panel
* </p>
* @return EditDataPanel The panel for editing data
*/
public EditDataPanel getEditDataPanel() {
return this.editDataPanel;
}
/**
* <p>
* Sets the table including the variables
* </p>
* @param table New VariableTable
*/
public void setVariableTable(VariableTable table) {
this.variableTable = table;
}
/**
* <p>
* Gets the current VariableTable
* </p>
* @return Current VariableTable
*/
public VariableTable getVariableTable() {
return this.variableTable;
}
/**
* <p>
* Gets the current JTable
* </p>
* @return Current JTable
*/
public JTable getJTable() {
return this.jTable1;
}
/**
* <p>
* Sets a new JTable
* </p>
* @param jtable The new JTable
*/
public void setJTable(JTable jtable) {
this.jTable1 = jtable;
}
/**
* <p>
* Method for eliminating the spaces of a string
* </p>
* @param in string to be processed
* @return String Processed String
*/
private String eliminateSpaces(String in) {
String out = new String();
String cachos[] = in.split(" ");
for (int i = 0; i < cachos.length; i++) {
out = out.concat(cachos[i]);
}
return out;
}
/**
* <p>
* Sets the counter value
* </p>
* @param value New value
*/
public void setCounter(int value) {
this.counter = value;
}
/**
* <p>
* Set if addButton is enabled or disabled
* </p>
* @param value boolean indicating if the button is enabled or disabled
*/
public void setStateAddButton(boolean value) {
this.addjButton.setEnabled(value);
}
/**
* <p>
* Enables or Disables Delete Button
* </p>
* @param state boolean indicating if the button is enabled or disabled
*/
public void setStateDeleteButton(boolean state) {
this.deletejButton.setEnabled(state);
}
/**
* <p>
* Refreshes the variable panel
* </p>
* @param dataSet New modified dataset
*/
public void refreshVariablePanel(Dataset dataSet) {
this.variableTable = new VariableTable(dataSet, this);
this.jTable1.setModel(this.variableTable);
this.jTable1.setFont(new java.awt.Font("Arial", 0, 11));
this.jTable1.getTableHeader().setReorderingAllowed(false);
this.jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
this.jTable1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.jTable1.setCellSelectionEnabled(true);
this.jTable1.setColumnSelectionAllowed(true);
this.rangeNominaljComboBox.removeAllItems();
this.minjTextField.setText("");
this.maxjTextField.setText("");
EachRowEditor rowEditor = new EachRowEditor(jTable1);
//Rellena con combo las casillas de Range en caso de que sea Nominal
for (int i = 0; i < dataSet.getNVariables(); i++) {
if (dataSet.getAttributeTypeIndex(i).equalsIgnoreCase("nominal")) {
Vector<String> values = new Vector();
for (int j = 0; j < dataSet.getRange(i).size(); j++) {
values.add(new String(dataSet.getRangesEnum(i, j)));
}
JComboBox combo = new JComboBox(values);
rowEditor.setEditorAt(i, new DefaultCellEditor(combo));
}
jTable1.getColumnModel().getColumn(2).setCellEditor(rowEditor);
}
//Rellena con combo las casillas Input/Ouput
TableColumn combo1 = this.jTable1.getColumnModel().getColumn(3);
JComboBox comboBox1 = new JComboBox();
comboBox1.addItem(new String("Input"));
comboBox1.addItem(new String("Output"));
combo1.setCellEditor(new DefaultCellEditor(comboBox1));
//Rellena con combo las casillas Type
TableColumn combo2 = this.jTable1.getColumnModel().getColumn(1);
JComboBox comboBox2 = new JComboBox();
comboBox2.addItem(new String("integer"));
comboBox2.addItem(new String("real"));
comboBox2.addItem(new String("nominal"));
combo2.setCellEditor(new DefaultCellEditor(comboBox2));
SelectionListener listener = new SelectionListener();
jTable1.getSelectionModel().addListSelectionListener(listener);
jTable1.getColumnModel().getSelectionModel().addListSelectionListener(listener);
this.variablejScrollPane.getViewport().remove(this.jTable1);
this.variablejScrollPane.getViewport().add(this.jTable1);
}
/**
* <p>
* Set if the range button is enabled or disabled
* </p>
* @param value boolean indicating if the button is enabled or disabled
*/
public void enabledRanges(boolean value) {
nominalValuejLabel.setEnabled(value);
nominalValuejTextField.setEnabled(value);
rangeNominaljComboBox.setEnabled(value);
addNominalValuejButton.setEnabled(value);
deleteNominalValuejButton.setEnabled(value);
valueRangejLabel.setEnabled(value);
minjTextField.setEnabled(value);
comajLabel.setEnabled(value);
maxjTextField.setEnabled(value);
rightBracketjLabel.setEnabled(value);
leftBracketjLabel.setEnabled(value);
changejButton.setEnabled(value);
}
// Private listener for rows
private class SelectionListener implements ListSelectionListener {
@Override
public void valueChanged(ListSelectionEvent e) {
// If cell selection is enabled, both column and column change events are fired
if (!e.getValueIsAdjusting() && e.getSource() == jTable1.getSelectionModel() && jTable1.getRowSelectionAllowed() && jTable1.getColumnSelectionAllowed()) {
// Row selection changed
ListSelectionModel csm = (ListSelectionModel) e.getSource();
if (!csm.isSelectionEmpty()) {
deletejButton.setEnabled(true);
int row = csm.getMinSelectionIndex();
if (row >= 0) {
if (editDataPanel.getData().getAttributeTypeIndex(row).equalsIgnoreCase("nominal")) {
nominalValuejLabel.setEnabled(true);
nominalValuejTextField.setEnabled(true);
rangeNominaljComboBox.setEnabled(true);
addNominalValuejButton.setEnabled(true);
deleteNominalValuejButton.setEnabled(true);
valueRangejLabel.setEnabled(false);
minjTextField.setEnabled(false);
comajLabel.setEnabled(false);
maxjTextField.setEnabled(false);
rightBracketjLabel.setEnabled(false);
leftBracketjLabel.setEnabled(false);
changejButton.setEnabled(false);
rangeNominaljComboBox.removeAllItems();
for (int i = 0; i < editDataPanel.getData().getRange(row).size(); i++) {
rangeNominaljComboBox.addItem(new String(editDataPanel.getData().getRangesEnum(row, i)));
}
} else {
nominalValuejLabel.setEnabled(false);
nominalValuejTextField.setEnabled(false);
rangeNominaljComboBox.setEnabled(false);
addNominalValuejButton.setEnabled(false);
deleteNominalValuejButton.setEnabled(false);
valueRangejLabel.setEnabled(true);
minjTextField.setEnabled(true);
comajLabel.setEnabled(true);
maxjTextField.setEnabled(true);
rightBracketjLabel.setEnabled(true);
leftBracketjLabel.setEnabled(true);
changejButton.setEnabled(true);
if (editDataPanel.getData().getAttributeTypeIndex(row).equalsIgnoreCase("integer")) {
minjTextField.setText(editDataPanel.getData().getRangesInt(row, 0).toString());
maxjTextField.setText(editDataPanel.getData().getRangesInt(row, 1).toString());
} else {
minjTextField.setText(editDataPanel.getData().getRangesReal(row, 0).toString());
maxjTextField.setText(editDataPanel.getData().getRangesReal(row, 1).toString());
}
}
}
} else {
}
} else // e.getValueIsAdjusting() --> true. Se estan metiendo datos en una variable nueva
{
//
}
}
}
}