/***********************************************************************
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.util;
import keel.GraphInterKeel.util.Path;
import java.io.File;
import java.util.Collections;
import java.util.Vector;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JFileChooser;
/**
* <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>
*/
public class FileBrowserPanel extends javax.swing.JPanel {
/**
* <p>
* Class that implements a FileBrowser panel
* </p>
*/
/**
* <p>
* Constructor of the FileBrowser panel
* </p>
*/
public FileBrowserPanel() {
initComponents();
}
/**
* <p>
* Get a FileBrowser
* </p>
* @return FileBroser
*/
public JFileChooser getFileChooser() {
return jFileChooser1;
}
/**
* <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() {
jFileChooser1 = new javax.swing.JFileChooser();
jFileChooser1.setCurrentDirectory(Path.getFilePath());
setBorder(javax.swing.BorderFactory.createTitledBorder("Choose File"));
setName("Form"); // NOI18N
jFileChooser1.setBackground(new java.awt.Color(230, 230, 230));
jFileChooser1.setControlButtonsAreShown(false);
jFileChooser1.setName("jFileChooser1"); // NOI18N
jFileChooser1.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) {
jFileChooser1PropertyChange(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jFileChooser1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jFileChooser1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
);
}// </editor-fold>//GEN-END:initComponents
private void jFileChooser1PropertyChange(java.beans.PropertyChangeEvent evt) {//GEN-FIRST:event_jFileChooser1PropertyChange
if (!Path.getFilePath().equals(jFileChooser1.getCurrentDirectory())) {
Path.setFilePath(jFileChooser1.getCurrentDirectory());
}
}//GEN-LAST:event_jFileChooser1PropertyChange
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JFileChooser jFileChooser1;
// End of variables declaration//GEN-END:variables
/** Add nodes from under "dir" into curTop. Highly recursive. */
private DefaultMutableTreeNode addNodes(DefaultMutableTreeNode curTop, File dir) {
String curPath = dir.getPath();
DefaultMutableTreeNode curDir = new DefaultMutableTreeNode(curPath);
if (curTop != null) { // should only be null at root
curTop.add(curDir);
}
Vector ol = new Vector();
String[] tmp = dir.list();
for (int i = 0; i < tmp.length; i++) {
ol.addElement(tmp[i]);
}
Collections.sort(ol, String.CASE_INSENSITIVE_ORDER);
File f;
Vector files = new Vector();
// Make two passes, one for Dirs and one for Files. This is #1.
for (int i = 0; i < ol.size(); i++) {
String thisObject = (String) ol.elementAt(i);
String newPath;
if (curPath.equals(".")) {
newPath = thisObject;
} else {
newPath = curPath + File.separator + thisObject;
}
if ((f = new File(newPath)).isDirectory()) {
addNodes(curDir, f);
} else {
files.addElement(thisObject);
}
}
// Pass two: for files.
for (int fnum = 0; fnum < files.size(); fnum++) {
curDir.add(new DefaultMutableTreeNode(files.elementAt(fnum)));
}
return curDir;
}
}