/*********************************************************************** 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.visualizeData; import keel.GraphInterKeel.datacf.util.Attribute; import keel.GraphInterKeel.datacf.util.KeelFileFilter; import keel.GraphInterKeel.datacf.util.Dataset; import org.core.Files; import keel.GraphInterKeel.util.Path; import java.io.File; import java.util.Vector; import javax.swing.JFileChooser; import javax.swing.JFrame; /** * <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 VisualizePanel extends javax.swing.JPanel { /** * <p> * Class for visualizing dataset * </p> */ /** * <p> * Constructor that initializes the panel * </p> */ public VisualizePanel() { 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() { visualizationjTabbedPane = new javax.swing.JTabbedPane(); visualizePanelDataset = new keel.GraphInterKeel.datacf.visualizeData.VisualizePanelDataset(); visualizePanelAttribute = new keel.GraphInterKeel.datacf.visualizeData.VisualizePanelAttribute(); visualizePanelCharts2D = new keel.GraphInterKeel.datacf.visualizeData.VisualizePanelCharts2D(); loadDatasetjPanel = new javax.swing.JPanel(); loadjLabel = new javax.swing.JLabel(); pathLoadjTextField = new javax.swing.JTextField(); browserjButton = new javax.swing.JButton(); setName("Form"); // NOI18N visualizationjTabbedPane.setName("visualizationjTabbedPane"); // NOI18N visualizePanelDataset.setName("visualizePanelDataset"); // NOI18N visualizationjTabbedPane.addTab("DataSet View", visualizePanelDataset); visualizePanelAttribute.setName("visualizePanelAttribute"); // NOI18N visualizationjTabbedPane.addTab("Attribute Info", visualizePanelAttribute); visualizePanelCharts2D.setName("visualizePanelCharts2D"); // NOI18N visualizationjTabbedPane.addTab("Charts 2D", visualizePanelCharts2D); loadDatasetjPanel.setName("loadDatasetjPanel"); // NOI18N loadjLabel.setText("Load Dataset:"); loadjLabel.setName("loadjLabel"); // NOI18N pathLoadjTextField.setEditable(false); pathLoadjTextField.setName("pathLoadjTextField"); // NOI18N browserjButton.setText("..."); browserjButton.setToolTipText("Open dataset to visualize"); browserjButton.setName("browserjButton"); // NOI18N browserjButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { browserjButtonActionPerformed(evt); } }); javax.swing.GroupLayout loadDatasetjPanelLayout = new javax.swing.GroupLayout(loadDatasetjPanel); loadDatasetjPanel.setLayout(loadDatasetjPanelLayout); loadDatasetjPanelLayout.setHorizontalGroup( loadDatasetjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadDatasetjPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(loadjLabel) .addGap(12, 12, 12) .addComponent(pathLoadjTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 282, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(browserjButton) .addContainerGap(242, Short.MAX_VALUE)) ); loadDatasetjPanelLayout.setVerticalGroup( loadDatasetjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(loadDatasetjPanelLayout.createSequentialGroup() .addContainerGap() .addGroup(loadDatasetjPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(pathLoadjTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(browserjButton) .addComponent(loadjLabel)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, 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(loadDatasetjPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(visualizationjTabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, 669, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(loadDatasetjPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(visualizationjTabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, 428, Short.MAX_VALUE)) ); }// </editor-fold>//GEN-END:initComponents private void browserjButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browserjButtonActionPerformed this.visualizePanelAttribute.enabledTable(true); JFileChooser chooser = new JFileChooser(); KeelFileFilter fileFilter = new KeelFileFilter(); fileFilter.addExtension("dat"); fileFilter.setFilterName("Data Files"); chooser.setFileFilter(fileFilter); chooser.setCurrentDirectory(Path.getFilePath()); int opcion = chooser.showOpenDialog(this); Path.setFilePath(chooser.getCurrentDirectory()); String cadena = null; if (opcion == JFileChooser.APPROVE_OPTION) { try { cadena = Path.getPath() + File.separator + chooser.getSelectedFile().getName(); data = new Dataset(cadena); } catch (Exception exc) { } // Show file content String cont = Files.readFile(cadena); this.visualizePanelDataset.setTextData(cont); this.visualizePanelDataset.setCaret(0); // Fill table and combobox with attributes if (this.visualizePanelAttribute.getTMtablaAtributos().getRowCount() != 0) { this.visualizePanelAttribute.clearTable(); //this.visualizePanelAttribute.getTMtablaAtributos().clearTable(); } this.visualizePanelCharts2D.deteleteAttributes1(); this.visualizePanelCharts2D.deteleteAttributes2(); Vector att = data.getAttributes(); Vector tipos = data.getTypes(); Vector in = data.getInputs(); Vector out = data.getOutputs(); for (int i = 0; i < att.size(); i++) { // Table Attribute a = null; Vector nuevoAtributo = new Vector(); nuevoAtributo.add(att.elementAt(i)); nuevoAtributo.add(tipos.elementAt(i)); if (in.contains(att.elementAt(i))) { nuevoAtributo.add(new String("input")); } else if (out.contains(att.elementAt(i))) { nuevoAtributo.add(new String("output")); } else { nuevoAtributo.add(new String("")); } this.visualizePanelAttribute.getTMtablaAtributos().insertRow(nuevoAtributo, a); // Combobox if (data.getAttributeTypeIndex(i).equals("nominal")) { this.visualizePanelCharts2D.addAtribute1((new String(att.elementAt(i).toString() + " (nominal)"))); this.visualizePanelCharts2D.addAtribute2((new String(att.elementAt(i).toString() + " (nominal)"))); if (out.contains(att.elementAt(i))) { outAttribute = i; } } else { this.visualizePanelCharts2D.addAtribute1(new String(att.elementAt(i).toString())); this.visualizePanelCharts2D.addAtribute2(new String(att.elementAt(i).toString())); if (out.contains(att.elementAt(i))) { outAttribute = -1; } } } this.visualizePanelAttribute.setLeftValueRank(""); this.visualizePanelAttribute.setRightValueRank(""); this.visualizePanelAttribute.setValueAverage(""); this.visualizePanelAttribute.setValueVariance(""); this.visualizePanelAttribute.setNominalValues(""); this.visualizePanelAttribute.setChart(null); this.visualizePanelAttribute.setNominalValues(""); this.visualizePanelAttribute.setImage(null); this.visualizePanelCharts2D.setChart(null); this.visualizePanelCharts2D.setImage(null); this.visualizePanelCharts2D.enablePNG(false); this.visualizePanelCharts2D.enablePDF(false); this.pathLoadjTextField.setText(Path.getPath()); } }//GEN-LAST:event_browserjButtonActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton browserjButton; private javax.swing.JPanel loadDatasetjPanel; private javax.swing.JLabel loadjLabel; private javax.swing.JTextField pathLoadjTextField; private javax.swing.JTabbedPane visualizationjTabbedPane; private keel.GraphInterKeel.datacf.visualizeData.VisualizePanelAttribute visualizePanelAttribute; private keel.GraphInterKeel.datacf.visualizeData.VisualizePanelCharts2D visualizePanelCharts2D; private keel.GraphInterKeel.datacf.visualizeData.VisualizePanelDataset visualizePanelDataset; // End of variables declaration//GEN-END:variables /** Parent Frame */ protected JFrame parent = null; /** Dataset */ protected Dataset data; /** Output attribute */ protected int outAttribute = -1; /** * <p> * Sets the parent JFrame * </p> * @param parent Parent JFrame */ public void setParent(JFrame parent) { this.parent = parent; } /** * <p> * Gets a Datasets * </p> * @return Dataset */ public Dataset getData() { return this.data; } /** * <p> * Sets a Dataset * </p> * @param data */ public void setData(Dataset data) { this.data = data; } /** * <p> * Sets output attribute * </p> * @param value Index of the output attribute */ public void setOutAttribute(int value) { this.outAttribute = value; } /** * <p> * Returns the index of the output attribute * </p> * @return int Index of the output attribute */ public int getOutAttribute() { return this.outAttribute; } }