package util;
import java.io.File;
import javax.swing.JFileChooser;
public class JFileChooserRoot extends JFileChooser
{
/**
*
*/
private static final long serialVersionUID = -3990155911664621222L;
private File RootDirectory;
private boolean isInitialized = false;
public JFileChooserRoot(File RootDirectory)
{
super(RootDirectory);
this.RootDirectory = RootDirectory;
}
@Override
public void setCurrentDirectory(File dir)
{
File oldValue = super.getCurrentDirectory();
if (dir != null && !dir.exists()) {
dir = super.getCurrentDirectory();
}
if (dir == null) {
dir = getFileSystemView().getDefaultDirectory();
}
if (super.getCurrentDirectory() != null) {
/* Verify the toString of object */
if (super.getCurrentDirectory().equals(dir)) {
return;
}
}
File prev = null;
while (!isTraversable(dir) && prev != dir) {
prev = dir;
dir = getFileSystemView().getParentDirectory(dir);
}
if(isInitialized)
{
if(!dir.getPath().startsWith(RootDirectory.getPath()))
{
return;
}
}
else
{
isInitialized = true;
}
super.setCurrentDirectory(dir);
firePropertyChange(DIRECTORY_CHANGED_PROPERTY, oldValue, super.getCurrentDirectory());
}
}