/*
* SK's Minecraft Launcher
* Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors
* Please see LICENSE.txt for license information.
*/
package com.skcraft.launcher.swing;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
public class DirectoryField extends JPanel {
private static final long serialVersionUID = 5706210803738919578L;
private final JTextField textField;
private final JButton browseButton;
public DirectoryField() {
setLayout(new BoxLayout(this, BoxLayout.X_AXIS));
textField = new JTextField(30);
textField.setMaximumSize(textField.getPreferredSize());
add(textField);
add(Box.createHorizontalStrut(3));
browseButton = new JButton("Browse...");
browseButton.setPreferredSize(new Dimension(
browseButton.getPreferredSize().width,
textField.getPreferredSize().height));
add(browseButton);
browseButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
browse();
}
});
textField.setComponentPopupMenu(TextFieldPopupMenu.INSTANCE);
}
public JTextField getTextField() {
return textField;
}
public JButton getBrowseButton() {
return browseButton;
}
public void setPath(String path) {
getTextField().setText(path);
}
public String getPath() {
return getTextField().getText();
}
protected JFileChooser getFileChooser() {
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Select folder");
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
chooser.setFileFilter(new FileFilter() {
@Override
public boolean accept(File pathname) {
if (pathname.isDirectory()) return true;
return false;
}
@Override
public String getDescription() {
return "Directories";
}
});
return chooser;
}
public void browse() {
JFileChooser chooser = getFileChooser();
File f = new File(getPath());
if (f.exists() && f.isFile()) {
f = f.getParentFile();
}
chooser.setCurrentDirectory(f);
int returnVal = chooser.showOpenDialog(this);
if (returnVal == JFileChooser.APPROVE_OPTION) {
setPath(chooser.getSelectedFile().getPath());
}
}
@Override
public void setEnabled(boolean enabled) {
super.setEnabled(enabled);
getTextField().setEnabled(enabled);
getBrowseButton().setEnabled(enabled);
}
}