/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.dlect.ui.prefs; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; /** * * @author lee */ public class FolderChooser extends JDialog { private JTextField fileName; private JButton cancelButton; private JButton okButton; private final File folder; private boolean canceled = true; private String newFolderName = null; public FolderChooser(Window parent, File folder) { super(parent, ModalityType.APPLICATION_MODAL); this.setLocationRelativeTo(parent); this.folder = folder; initComponents(); } private void initComponents() { fileName = new JTextField(); cancelButton = new JButton("Cancel"); okButton = new JButton("OK"); this.setLayout(new GridBagLayout()); this.setTitle("Create New Folder"); this.getRootPane().setDefaultButton(okButton); this.setMinimumSize(new Dimension(200, 80)); fileName.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { fileNameUpdated(); } @Override public void removeUpdate(DocumentEvent e) { fileNameUpdated(); } @Override public void changedUpdate(DocumentEvent e) { fileNameUpdated(); } }); cancelButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cancelButtonActionPerformed(); } }); okButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { okButtonActionPerformed(); } }); GridBagConstraints c = new GridBagConstraints(); c.gridwidth = 2; c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.NORTH; c.weightx = 1.0; c.gridx = 0; c.gridy = 0; this.getContentPane().add(fileName, c); c.gridwidth = 1; c.gridy = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.SOUTHEAST; c.weightx = 1.0; this.getContentPane().add(cancelButton, c); c.gridx = 1; c.fill = GridBagConstraints.NONE; c.anchor = GridBagConstraints.EAST; c.weightx = 0.0; this.getContentPane().add(okButton, c); } private void okButtonActionPerformed() { canceled = false; if (!fileName.getText().isEmpty() && !new File(folder, fileName.getText()).exists()) { newFolderName = fileName.getText(); } else { newFolderName = null; } this.setVisible(false); } private void cancelButtonActionPerformed() { canceled = true; newFolderName = null; this.setVisible(false); } public String getNewFolderName() { return newFolderName; } public boolean isCanceled() { return canceled; } private void fileNameUpdated() { boolean en = !fileName.getText().isEmpty(); en &= !new File(folder, fileName.getText()).exists(); okButton.setEnabled(en); } }