/***********************************************************************
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;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.File;
import java.net.MalformedURLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import keel.GraphInterKeel.datacf.help.HelpContent;
import keel.GraphInterKeel.datacf.help.HelpFrame;
import keel.GraphInterKeel.datacf.editData.EditPanel;
import keel.GraphInterKeel.datacf.exportData.ExportPanel;
import keel.GraphInterKeel.datacf.importData.ImportPanel;
import keel.GraphInterKeel.datacf.partitionData.PartitionPanel;
import keel.GraphInterKeel.datacf.util.ButtonTabComponent;
import keel.GraphInterKeel.datacf.visualizeData.VisualizePanel;
/**
* <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 DataCFFrame extends javax.swing.JFrame {
/**
* <p>
* This is the main frame of Data Constructing and Formatting KEEL module
* </p>
*/
/**
* <p>
* Constructor that initializes the frame
* </p>
*/
public DataCFFrame() {
initComponents();
this.setIconImage(Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("/keel/GraphInterKeel/resources/ico/logo/logo.png")));
}
/**
* <p>
* 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.
* </p>
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
mainPanel = new javax.swing.JPanel();
verticalSplitPane = new javax.swing.JSplitPane();
workPanel = new javax.swing.JPanel();
selectorToolBar = new javax.swing.JToolBar();
importjButton = new javax.swing.JButton();
exportjButton = new javax.swing.JButton();
visualizejButton = new javax.swing.JButton();
editionjButton = new javax.swing.JButton();
partitionjButton = new javax.swing.JButton();
helpButton = new javax.swing.JButton();
selectorTabbedPane = new javax.swing.JTabbedPane();
startPanel = new javax.swing.JPanel();
buttonPanel = new javax.swing.JPanel();
exportjButton2 = new javax.swing.JButton();
editjButton2 = new javax.swing.JButton();
partitionjButton2 = new javax.swing.JButton();
visualizejButton2 = new javax.swing.JButton();
importjButton2 = new javax.swing.JButton();
helpButton2 = new javax.swing.JButton();
jLabel1 = new javax.swing.JLabel();
helpAuxPanel = new javax.swing.JPanel();
helpTabbedPane = new javax.swing.JTabbedPane();
statusPanel = new javax.swing.JPanel();
statusMessageLabel = new javax.swing.JLabel();
statusAnimationLabel = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Data Constructing & Formatting");
setMinimumSize(new java.awt.Dimension(800, 730));
setName("Form"); // NOI18N
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
mainPanel.setMinimumSize(new java.awt.Dimension(333, 333));
mainPanel.setName("mainPanel"); // NOI18N
verticalSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
verticalSplitPane.setMinimumSize(new java.awt.Dimension(333, 333));
verticalSplitPane.setName("verticalSplitPane"); // NOI18N
workPanel.setMinimumSize(new java.awt.Dimension(680, 508));
workPanel.setName("workPanel"); // NOI18N
selectorToolBar.setBorder(javax.swing.BorderFactory.createEtchedBorder());
selectorToolBar.setFloatable(false);
selectorToolBar.setOrientation(javax.swing.SwingConstants.VERTICAL);
selectorToolBar.setRollover(true);
selectorToolBar.setName("selectorToolBar"); // NOI18N
importjButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/import.png"))); // NOI18N
importjButton.setText("Import");
importjButton.setToolTipText("Import Data");
importjButton.setFocusable(false);
importjButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
importjButton.setIconTextGap(0);
importjButton.setName("importjButton"); // NOI18N
importjButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
importjButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
importjButtonActionPerformed(evt);
}
});
selectorToolBar.add(importjButton);
exportjButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/export.png"))); // NOI18N
exportjButton.setText("Export");
exportjButton.setToolTipText("Export Data");
exportjButton.setFocusable(false);
exportjButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
exportjButton.setIconTextGap(0);
exportjButton.setName("exportjButton"); // NOI18N
exportjButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
exportjButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exportjButtonActionPerformed(evt);
}
});
selectorToolBar.add(exportjButton);
visualizejButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/visualize.png"))); // NOI18N
visualizejButton.setText("Visualize");
visualizejButton.setToolTipText("Visualize Data");
visualizejButton.setFocusable(false);
visualizejButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
visualizejButton.setIconTextGap(0);
visualizejButton.setName("visualizejButton"); // NOI18N
visualizejButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
visualizejButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
visualizejButtonActionPerformed(evt);
}
});
selectorToolBar.add(visualizejButton);
editionjButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/edit.png"))); // NOI18N
editionjButton.setText("Edit");
editionjButton.setToolTipText("Edit Data");
editionjButton.setFocusable(false);
editionjButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
editionjButton.setIconTextGap(0);
editionjButton.setName("editionjButton"); // NOI18N
editionjButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
editionjButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editionjButtonActionPerformed(evt);
}
});
selectorToolBar.add(editionjButton);
partitionjButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/partition.png"))); // NOI18N
partitionjButton.setText("Partition");
partitionjButton.setToolTipText("Make Partitions");
partitionjButton.setFocusable(false);
partitionjButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
partitionjButton.setIconTextGap(0);
partitionjButton.setName("partitionjButton"); // NOI18N
partitionjButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
partitionjButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
partitionjButtonActionPerformed(evt);
}
});
selectorToolBar.add(partitionjButton);
helpButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/help.png"))); // NOI18N
helpButton.setText("Help");
helpButton.setToolTipText("Outline Help");
helpButton.setFocusable(false);
helpButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
helpButton.setIconTextGap(0);
helpButton.setName("helpButton"); // NOI18N
helpButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
helpButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
helpButtonActionPerformed(evt);
}
});
selectorToolBar.add(helpButton);
selectorTabbedPane.setMinimumSize(new java.awt.Dimension(412, 400));
selectorTabbedPane.setName("selectorTabbedPane"); // NOI18N
selectorTabbedPane.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
selectorTabbedPaneStateChanged(evt);
}
});
startPanel.setMinimumSize(new java.awt.Dimension(412, 200));
startPanel.setName("startPanel"); // NOI18N
buttonPanel.setMinimumSize(new java.awt.Dimension(600, 200));
buttonPanel.setName("buttonPanel"); // NOI18N
buttonPanel.setLayout(new java.awt.GridBagLayout());
exportjButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/64x64/export.png"))); // NOI18N
exportjButton2.setText("<html><b>Export Data</b><hr>This option allows you to export KEEL format files to other formats.</html>");
exportjButton2.setToolTipText("Export Data");
exportjButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
exportjButton2.setIconTextGap(6);
exportjButton2.setMargin(new java.awt.Insets(0, 5, 0, 5));
exportjButton2.setMaximumSize(new java.awt.Dimension(200, 200));
exportjButton2.setMinimumSize(new java.awt.Dimension(200, 200));
exportjButton2.setName("exportjButton2"); // NOI18N
exportjButton2.setPreferredSize(new java.awt.Dimension(160, 160));
exportjButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
exportjButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
exportjButton2ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
buttonPanel.add(exportjButton2, gridBagConstraints);
editjButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/64x64/edit.png"))); // NOI18N
editjButton2.setText("<html><b>Edit Data</b><hr>This option allows you to edit existing KEEL format datasets.</html>");
editjButton2.setToolTipText("Edit Data");
editjButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
editjButton2.setIconTextGap(6);
editjButton2.setMargin(new java.awt.Insets(0, 5, 0, 5));
editjButton2.setMaximumSize(new java.awt.Dimension(200, 200));
editjButton2.setMinimumSize(new java.awt.Dimension(200, 200));
editjButton2.setName("editjButton2"); // NOI18N
editjButton2.setPreferredSize(new java.awt.Dimension(160, 160));
editjButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
editjButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
editjButton2ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
buttonPanel.add(editjButton2, gridBagConstraints);
partitionjButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/64x64/partition.png"))); // NOI18N
partitionjButton2.setText("<html><b>Make Partitions</b><hr>This option allows you to make partitions of existing KEEL datasets.</html>");
partitionjButton2.setToolTipText("Make Partitions");
partitionjButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
partitionjButton2.setIconTextGap(6);
partitionjButton2.setMargin(new java.awt.Insets(0, 5, 0, 5));
partitionjButton2.setMaximumSize(new java.awt.Dimension(200, 200));
partitionjButton2.setMinimumSize(new java.awt.Dimension(200, 200));
partitionjButton2.setName("partitionjButton2"); // NOI18N
partitionjButton2.setPreferredSize(new java.awt.Dimension(160, 160));
partitionjButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
partitionjButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
partitionjButton2ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
buttonPanel.add(partitionjButton2, gridBagConstraints);
visualizejButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/64x64/visualize.png"))); // NOI18N
visualizejButton2.setText("<html><b>Visualize Data</b><hr>This option allows you to visualize existing KEEL format datasets.</html>");
visualizejButton2.setToolTipText("Visualize Data");
visualizejButton2.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
visualizejButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
visualizejButton2.setIconTextGap(6);
visualizejButton2.setMargin(new java.awt.Insets(0, 5, 0, 5));
visualizejButton2.setMaximumSize(new java.awt.Dimension(200, 200));
visualizejButton2.setMinimumSize(new java.awt.Dimension(200, 200));
visualizejButton2.setName("visualizejButton2"); // NOI18N
visualizejButton2.setPreferredSize(new java.awt.Dimension(160, 160));
visualizejButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
visualizejButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
visualizejButton2ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
buttonPanel.add(visualizejButton2, gridBagConstraints);
importjButton2.setBackground(new java.awt.Color(255, 255, 255));
importjButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/64x64/import.png"))); // NOI18N
importjButton2.setText("<html><b>Import Data</b><hr>Import other file formats to KEEL or add datasets to the Experiments module.</html>");
importjButton2.setToolTipText("Import Data");
importjButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
importjButton2.setIconTextGap(6);
importjButton2.setMargin(new java.awt.Insets(0, 5, 0, 5));
importjButton2.setMaximumSize(new java.awt.Dimension(200, 200));
importjButton2.setMinimumSize(new java.awt.Dimension(200, 200));
importjButton2.setName("importjButton2"); // NOI18N
importjButton2.setPreferredSize(new java.awt.Dimension(160, 160));
importjButton2.setVerifyInputWhenFocusTarget(false);
importjButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
importjButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
importjButton2ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
buttonPanel.add(importjButton2, gridBagConstraints);
helpButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/64x64/help.png"))); // NOI18N
helpButton2.setText("<html><b>Help</b><hr>This option shows you a complete manual of the application.</html>");
helpButton2.setToolTipText("Outline Help");
helpButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
helpButton2.setIconTextGap(6);
helpButton2.setMargin(new java.awt.Insets(0, 5, 0, 5));
helpButton2.setMaximumSize(new java.awt.Dimension(200, 200));
helpButton2.setMinimumSize(new java.awt.Dimension(200, 200));
helpButton2.setName("helpButton2"); // NOI18N
helpButton2.setPreferredSize(new java.awt.Dimension(160, 160));
helpButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
helpButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
helpButton2ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 1;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
buttonPanel.add(helpButton2, gridBagConstraints);
jLabel1.setFont(jLabel1.getFont().deriveFont(jLabel1.getFont().getStyle() | java.awt.Font.BOLD, jLabel1.getFont().getSize()+15));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/keel/GraphInterKeel/resources/ico/datacf/64x64/logo.png"))); // NOI18N
jLabel1.setText("KEEL: DATA CONSTRUCTING FORMATTING");
jLabel1.setName("jLabel1"); // NOI18N
javax.swing.GroupLayout startPanelLayout = new javax.swing.GroupLayout(startPanel);
startPanel.setLayout(startPanelLayout);
startPanelLayout.setHorizontalGroup(
startPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 788, Short.MAX_VALUE)
.addComponent(buttonPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 788, Short.MAX_VALUE)
);
startPanelLayout.setVerticalGroup(
startPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(startPanelLayout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(buttonPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 373, Short.MAX_VALUE))
);
selectorTabbedPane.addTab("START ", startPanel);
javax.swing.GroupLayout workPanelLayout = new javax.swing.GroupLayout(workPanel);
workPanel.setLayout(workPanelLayout);
workPanelLayout.setHorizontalGroup(
workPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(workPanelLayout.createSequentialGroup()
.addComponent(selectorToolBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(selectorTabbedPane, javax.swing.GroupLayout.DEFAULT_SIZE, 800, Short.MAX_VALUE))
);
workPanelLayout.setVerticalGroup(
workPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(selectorTabbedPane, 0, 0, Short.MAX_VALUE)
.addComponent(selectorToolBar, javax.swing.GroupLayout.DEFAULT_SIZE, 508, Short.MAX_VALUE)
);
verticalSplitPane.setLeftComponent(workPanel);
helpAuxPanel.setName("helpAuxPanel"); // NOI18N
helpTabbedPane.setMinimumSize(new java.awt.Dimension(0, 50));
helpTabbedPane.setName("helpTabbedPane"); // NOI18N
helpTabbedPane.setPreferredSize(new java.awt.Dimension(120, 50));
helpTabbedPane.addTab("User Manual", contenido);
javax.swing.GroupLayout helpAuxPanelLayout = new javax.swing.GroupLayout(helpAuxPanel);
helpAuxPanel.setLayout(helpAuxPanelLayout);
helpAuxPanelLayout.setHorizontalGroup(
helpAuxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 878, Short.MAX_VALUE)
.addGroup(helpAuxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(helpTabbedPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 878, Short.MAX_VALUE))
);
helpAuxPanelLayout.setVerticalGroup(
helpAuxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 149, Short.MAX_VALUE)
.addGroup(helpAuxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(helpTabbedPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE))
);
verticalSplitPane.setRightComponent(helpAuxPanel);
javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
mainPanel.setLayout(mainPanelLayout);
mainPanelLayout.setHorizontalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(verticalSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, 878, Short.MAX_VALUE)
);
mainPanelLayout.setVerticalGroup(
mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(verticalSplitPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
statusPanel.setMaximumSize(new java.awt.Dimension(333, 233333));
statusPanel.setMinimumSize(new java.awt.Dimension(333, 0));
statusPanel.setName("statusPanel"); // NOI18N
statusMessageLabel.setName("statusMessageLabel"); // NOI18N
statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
statusAnimationLabel.setMaximumSize(new java.awt.Dimension(0, 5));
statusAnimationLabel.setMinimumSize(new java.awt.Dimension(0, 5));
statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N
statusAnimationLabel.setPreferredSize(new java.awt.Dimension(0, 5));
javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel);
statusPanel.setLayout(statusPanelLayout);
statusPanelLayout.setHorizontalGroup(
statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(statusPanelLayout.createSequentialGroup()
.addContainerGap()
.addComponent(statusMessageLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 854, Short.MAX_VALUE)
.addComponent(statusAnimationLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
statusPanelLayout.setVerticalGroup(
statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, statusPanelLayout.createSequentialGroup()
.addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(statusMessageLabel)
.addComponent(statusAnimationLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(statusPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap(665, Short.MAX_VALUE)
.addComponent(statusPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(mainPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap()))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void importjButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_importjButtonActionPerformed
addImportTab(true, true);
}//GEN-LAST:event_importjButtonActionPerformed
private void exportjButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportjButtonActionPerformed
addExportTab();
}//GEN-LAST:event_exportjButtonActionPerformed
private void visualizejButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_visualizejButtonActionPerformed
addVisualizeTab();
}//GEN-LAST:event_visualizejButtonActionPerformed
private void editionjButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editionjButtonActionPerformed
addEditTab();
}//GEN-LAST:event_editionjButtonActionPerformed
private void partitionjButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_partitionjButtonActionPerformed
addPartitionTab();
}//GEN-LAST:event_partitionjButtonActionPerformed
private void helpButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpButtonActionPerformed
help();
}//GEN-LAST:event_helpButtonActionPerformed
private void exportjButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportjButton2ActionPerformed
addExportTab();
}//GEN-LAST:event_exportjButton2ActionPerformed
private void editjButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editjButton2ActionPerformed
addEditTab();
}//GEN-LAST:event_editjButton2ActionPerformed
private void partitionjButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_partitionjButton2ActionPerformed
addPartitionTab();
}//GEN-LAST:event_partitionjButton2ActionPerformed
private void visualizejButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_visualizejButton2ActionPerformed
addVisualizeTab();
}//GEN-LAST:event_visualizejButton2ActionPerformed
private void importjButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_importjButton2ActionPerformed
addImportTab(true, true);
}//GEN-LAST:event_importjButton2ActionPerformed
private void helpButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpButton2ActionPerformed
help();
}//GEN-LAST:event_helpButton2ActionPerformed
private void selectorTabbedPaneStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_selectorTabbedPaneStateChanged
// Get current tab
Component sel = selectorTabbedPane.getSelectedComponent();
if (sel instanceof VisualizePanel) {
this.contenido.muestraURL(this.getClass().getResource("/help/data_view.html"));
} else if (sel instanceof ImportPanel) {
this.contenido.muestraURL(this.getClass().getResource("/help/data_import.html"));
} else if (sel instanceof PartitionPanel) {
this.contenido.muestraURL(this.getClass().getResource("/help/data_partition.html"));
} else if (sel instanceof EditPanel) {
this.contenido.muestraURL(this.getClass().getResource("/help/data_edit.html"));
} else if (sel instanceof ExportPanel) {
this.contenido.muestraURL(this.getClass().getResource("/help/data_export.html"));
} else {
this.contenido.muestraURL(this.getClass().getResource("/help/data_clear.html"));
}
}//GEN-LAST:event_selectorTabbedPaneStateChanged
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
keel.GraphInterKeel.experiments.Experiments exp;
if (this.parent != null) {
this.parent.setVisible(true);
}
//if the parent of the frame is Experiments, then this windows has been invoked
//to make partitions. Therefore, the Experiments.dinDatasets panel must be reloaded
//to reflect those changes.
if (this.parent instanceof keel.GraphInterKeel.experiments.Experiments) {
//System.out.println("\t >>>>> Updating partitions from DataCF");
exp = ((keel.GraphInterKeel.experiments.Experiments) this.parent);
/********** reload the modified XML **********/
//first, lets clear current data in the panels
exp.panelDatasets.removeAllData();
exp.dinDatasets.removeAllData();
String root = "." + File.separatorChar + "data" +
File.separatorChar + "Datasets.xml";
File pathdata = new File(root);
java.net.URL internalResource = null;
try {
internalResource = pathdata.toURL();
} catch (MalformedURLException ex) {
Logger.getLogger(DataCFFrame.class.getName()).log(Level.SEVERE, null, ex);
}
exp.insertDirectoryData(internalResource, root);
//sort the data sets by name
exp.dinDatasets.sortDatasets();
exp.panelDatasets.sortDatasets();
//refresh the buttons in the panel
exp.dinDatasets.reload(exp.experimentType());
exp.panelDatasets.reload(exp.experimentType());
//recover the previous active data sets
exp.dinDatasets.reloadPreviousActiveDataSets();
exp.panelDatasets.reloadPreviousActiveDataSets();
}
}//GEN-LAST:event_formWindowClosing
/**
* Main Program
*
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
// Set System L&F
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (UnsupportedLookAndFeelException e) {
// handle exception
} catch (ClassNotFoundException e) {
// handle exception
} catch (InstantiationException e) {
// handle exception
} catch (IllegalAccessException e) {
// handle exception
}
new DataCFFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel buttonPanel;
private javax.swing.JButton editionjButton;
private javax.swing.JButton editjButton2;
private javax.swing.JButton exportjButton;
private javax.swing.JButton exportjButton2;
private javax.swing.JPanel helpAuxPanel;
private javax.swing.JButton helpButton;
private javax.swing.JButton helpButton2;
private javax.swing.JTabbedPane helpTabbedPane;
private javax.swing.JButton importjButton;
private javax.swing.JButton importjButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel mainPanel;
private javax.swing.JButton partitionjButton;
private javax.swing.JButton partitionjButton2;
private javax.swing.JTabbedPane selectorTabbedPane;
private javax.swing.JToolBar selectorToolBar;
private javax.swing.JPanel startPanel;
private javax.swing.JLabel statusAnimationLabel;
private javax.swing.JLabel statusMessageLabel;
private javax.swing.JPanel statusPanel;
private javax.swing.JSplitPane verticalSplitPane;
private javax.swing.JButton visualizejButton;
private javax.swing.JButton visualizejButton2;
private javax.swing.JPanel workPanel;
// End of variables declaration//GEN-END:variables
/**
* Help panel
*/
private HelpContent contenido = new HelpContent();
/**
* Parent frame
*/
protected JFrame parent = null;
/**
* <p>
* Sets parent
* </p>
* @param parent Frame parent
*/
public void setParent(JFrame parent) {
this.parent = parent;
}
/**
* <p>
* Adds Import Tab
* @param showInsertKeel Do you want to show the option to include the imported
* files in the experiment section?
* @param kfold Do you want to "kfold" be the default option for the partition
* type when importing partions?
* </p>
*/
public void addImportTab(boolean showInsertKeel, boolean kfold) {
this.statusMessageLabel.setText("This option allows you to import other format files to KEEL format");
for (int i = 0; i < selectorTabbedPane.getTabCount(); i++) {
if (selectorTabbedPane.getComponentAt(i) instanceof ImportPanel) {
selectorTabbedPane.setSelectedIndex(i);
return;
}
}
ImportPanel importPanel = new ImportPanel();
importPanel.setShowInsertKeel(showInsertKeel);
importPanel.setKfold(kfold);
importPanel.setParent(this);
importPanel.setDataCFView(this);
selectorTabbedPane.add(importPanel, "Import ");
selectorTabbedPane.setSelectedComponent(importPanel);
selectorTabbedPane.setTabComponentAt(selectorTabbedPane.getSelectedIndex(), new ButtonTabComponent(selectorTabbedPane));
}
/**
* <p>
* Adds Export Tab
* </p>
*/
public void addExportTab() {
this.statusMessageLabel.setText("This option allows you to export KEEL format files to other formats");
for (int i = 0; i < selectorTabbedPane.getTabCount(); i++) {
if (selectorTabbedPane.getComponentAt(i) instanceof ExportPanel) {
selectorTabbedPane.setSelectedIndex(i);
return;
}
}
ExportPanel exportPanel = new ExportPanel();
exportPanel.setParent(this);
selectorTabbedPane.add(exportPanel, "Export ");
selectorTabbedPane.setSelectedComponent(exportPanel);
selectorTabbedPane.setTabComponentAt(selectorTabbedPane.getSelectedIndex(), new ButtonTabComponent(selectorTabbedPane));
}
/**
* <p>
* Adds Visualize Tab
* </p>
*/
public void addVisualizeTab() {
this.statusMessageLabel.setText("This option allows you to visualize existing KEEL format datasets");
for (int i = 0; i < selectorTabbedPane.getTabCount(); i++) {
if (selectorTabbedPane.getComponentAt(i) instanceof VisualizePanel) {
selectorTabbedPane.setSelectedIndex(i);
return;
}
}
VisualizePanel visualizePanel = new VisualizePanel();
visualizePanel.setParent(this);
selectorTabbedPane.add(visualizePanel, "Visualize ");
selectorTabbedPane.setSelectedComponent(visualizePanel);
selectorTabbedPane.setTabComponentAt(selectorTabbedPane.getSelectedIndex(), new ButtonTabComponent(selectorTabbedPane));
}
/**
* <p>
* Adds Edit Tab
* </p>
*/
public void addEditTab() {
this.statusMessageLabel.setText("This option allows you to edit existing KEEL format datasets");
for (int i = 0; i < selectorTabbedPane.getTabCount(); i++) {
if (selectorTabbedPane.getComponentAt(i) instanceof EditPanel) {
selectorTabbedPane.setSelectedIndex(i);
return;
}
}
EditPanel editPanel = new EditPanel();
editPanel.setParent(this);
editPanel.setDataCFView(this);
selectorTabbedPane.add(editPanel, "Edit ");
selectorTabbedPane.setSelectedComponent(editPanel);
selectorTabbedPane.setTabComponentAt(selectorTabbedPane.getSelectedIndex(), new ButtonTabComponent(selectorTabbedPane));
}
/**
* <p>
* Adds Edit Tab
* </p>
*/
public void addEditTab(File file) {
this.statusMessageLabel.setText("This option allows you to edit existing KEEL format datasets");
for (int i = 0; i < selectorTabbedPane.getTabCount(); i++) {
if (selectorTabbedPane.getComponentAt(i) instanceof EditPanel) {
selectorTabbedPane.setSelectedIndex(i);
EditPanel editPanel =
(EditPanel) selectorTabbedPane.getComponentAt(i);
editPanel.loadFile(file, true);
return;
}
}
EditPanel editPanel = new EditPanel();
editPanel.setParent(this);
editPanel.setDataCFView(this);
editPanel.loadFile(file, true);
selectorTabbedPane.add(editPanel, "Edit ");
selectorTabbedPane.setSelectedComponent(editPanel);
selectorTabbedPane.setTabComponentAt(selectorTabbedPane.getSelectedIndex(), new ButtonTabComponent(selectorTabbedPane));
}
/**
* <p>
* Adds Partition Tab
* </p>
*/
public void addPartitionTab() {
this.statusMessageLabel.setText("This option allows you to make partitions of existing KEEL datasets");
for (int i = 0; i < selectorTabbedPane.getTabCount(); i++) {
if (selectorTabbedPane.getComponentAt(i) instanceof PartitionPanel) {
selectorTabbedPane.setSelectedIndex(i);
return;
}
}
PartitionPanel partitionPanel = new PartitionPanel();
partitionPanel.setParent(this);
selectorTabbedPane.add(partitionPanel, "Partition ");
selectorTabbedPane.setSelectedComponent(partitionPanel);
selectorTabbedPane.setTabComponentAt(selectorTabbedPane.getSelectedIndex(), new ButtonTabComponent(selectorTabbedPane));
}
/**
* <p>
* Adds Partiton Tab
* @param file File to partition
* </p>
*/
public void addPartitionTab(File file) {
this.statusMessageLabel.setText("This option allows you to make partitions of existing KEEL datasets");
for (int i = 0; i < selectorTabbedPane.getTabCount(); i++) {
if (selectorTabbedPane.getComponentAt(i) instanceof PartitionPanel) {
selectorTabbedPane.setSelectedIndex(i);
PartitionPanel partitionPanel =
(PartitionPanel) selectorTabbedPane.getComponentAt(i);
partitionPanel.getFileBrowserPanel().getFileChooser().setCurrentDirectory(file);
partitionPanel.getFileBrowserPanel().getFileChooser().setSelectedFile(file);
return;
}
}
PartitionPanel partitionPanel = new PartitionPanel();
partitionPanel.setParent(this);
partitionPanel.getFileBrowserPanel().getFileChooser().setCurrentDirectory(file);
partitionPanel.getFileBrowserPanel().getFileChooser().setSelectedFile(file);
selectorTabbedPane.add(partitionPanel, "Partition ");
selectorTabbedPane.setSelectedComponent(partitionPanel);
selectorTabbedPane.setTabComponentAt(selectorTabbedPane.getSelectedIndex(), new ButtonTabComponent(selectorTabbedPane));
}
/**
* <p>
* Shows help
* </p>
*/
public void help() {
this.statusMessageLabel.setText("This option shows a complete manual of the application");
// Show help
HelpFrame ayuda = new HelpFrame();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = ayuda.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
ayuda.setLocation((screenSize.width - frameSize.width) / 2,
(screenSize.height - frameSize.height) / 2);
ayuda.setVisible(true);
}
/**
* <p>
* Returns Selector ToolBar
* @return Selector ToolBar
* </p>
*/
public JToolBar getSelectorToolbar() {
return selectorToolBar;
}
/**
* <p>
* Returns Selector Tabbed Pane
* @return Tabbed Pane
* </p>
*/
public JTabbedPane getSelectorTabbedPane() {
return selectorTabbedPane;
}
}