/*
Copyright (C) 2013-2020 Nicola L.C. Talbot
www.dickimaw-books.com
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, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
package com.dickimawbooks.makeglossariesgui;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FileField extends JPanel
implements ActionListener
{
public FileField(MakeGlossariesGUI application,
Container parent, JFileChooser fileChooser)
{
this(application, parent, null, fileChooser, JFileChooser.FILES_ONLY);
}
public FileField(MakeGlossariesGUI application,
Container parent, JFileChooser fileChooser, int mode)
{
this(application, parent, null, fileChooser, mode);
}
public FileField(MakeGlossariesGUI application,
Container parent, String fileName, JFileChooser fileChooser)
{
this(application, parent, fileName, fileChooser, JFileChooser.FILES_ONLY);
}
public FileField(MakeGlossariesGUI application,
Container parent, String fileName, JFileChooser fileChooser, int mode)
{
super();
this.application = application;
this.fileChooser = fileChooser;
this.parent = parent;
this.mode = mode;
textField = new JTextField(fileName == null ? "" : fileName, 20);
add(textField);
button = new JButton("...");
button.setActionCommand("choose");
button.addActionListener(this);
add(button);
}
public void actionPerformed(ActionEvent evt)
{
String action = evt.getActionCommand();
if (action == null) return;
if (action.equals("choose"))
{
File file = getFile();
if (file != null)
{
fileChooser.setCurrentDirectory(file.getParentFile());
}
fileChooser.setSelectedFile(file);
fileChooser.setFileSelectionMode(mode);
fileChooser.setApproveButtonMnemonic(
application.getMnemonic("button.select"));
if (fileChooser.showDialog(parent,
application.getLabel("button.select"))
== JFileChooser.APPROVE_OPTION)
{
textField.setText(fileChooser.getSelectedFile().getAbsolutePath());
}
}
}
public boolean requestFocusInWindow()
{
return textField.requestFocusInWindow();
}
public JTextField getTextField()
{
return textField;
}
public File getFile()
{
String fileName = getFileName();
if (fileName == null || fileName.equals("")) return null;
return new File(fileName);
}
public String getFileName()
{
return textField.getText();
}
public void setFileName(String name)
{
textField.setText(name);
}
public void setFile(File file)
{
setFileName(file.getAbsolutePath());
File parent = file.getParentFile();
if (parent != null)
{
fileChooser.setCurrentDirectory(parent);
}
}
public void setEnabled(boolean flag)
{
super.setEnabled(flag);
textField.setEnabled(flag);
button.setEnabled(flag);
}
private JTextField textField;
private JButton button;
private JFileChooser fileChooser;
private Container parent;
private int mode;
private MakeGlossariesGUI application;
}