/*
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 AppSelector extends JDialog
implements ActionListener
{
public AppSelector(MakeGlossariesGUI application)
{
super(application, application.getLabel("appselect.title"), true);
app = application;
if (System.getProperty("os.name").toLowerCase().startsWith("win"))
{
exeSuffix = ".exe";
}
message = new JLabel(application.getLabel("appselect.pathlabel"));
message.setDisplayedMnemonic(application.getMnemonic("appselect.pathlabel"));
getContentPane().add(message, "North");
fileChooser = new JFileChooser();
fileField = new FileField(application, this, fileChooser);
getContentPane().add(fileField, "Center");
JPanel buttonPanel = new JPanel();
add(buttonPanel, "South");
buttonPanel.add(app.createOkayButton(this));
buttonPanel.add(app.createCancelButton(this));
pack();
Dimension dim = getSize();
dim.width += 50;
dim.height += 10;
setSize(dim);
setLocationRelativeTo(application);
}
public File findApp(String name)
{
return app.findApplication(name);
}
public File findApp(String name, String altName, String altName2)
{
return app.findApplication(name, altName, altName2);
}
public void actionPerformed(ActionEvent evt)
{
String action = evt.getActionCommand();
if (action == null) return;
if (action.equals("choose"))
{
if (fileChooser.showOpenDialog(this)
== JFileChooser.APPROVE_OPTION)
{
fileField.setFileName(fileChooser.getSelectedFile().getAbsolutePath());
}
}
else if (action.equals("okay"))
{
selectedFile = fileField.getFile();
if (selectedFile == null || selectedFile.equals(""))
{
app.error(this, app.getLabel("error.no_file"));
}
else
{
setVisible(false);
}
}
else if (action.equals("cancel"))
{
setVisible(false);
}
}
public File fetchApplicationPath(String appName, String messageText)
{
return fetchApplicationPath(appName, null, null, messageText);
}
public File fetchApplicationPath(String appName, String altAppName,
String altAppName2, String messageText)
{
selectedFile = null;
File file = findApp(appName, altAppName, altAppName2);
if (file != null)
{
fileChooser.setCurrentDirectory(file.getParentFile());
fileChooser.setSelectedFile(file);
fileField.setFileName(file.getAbsolutePath());
}
else
{
fileField.setFileName(appName+exeSuffix);
}
message.setText(messageText);
setVisible(true);
return selectedFile;
}
public File fetchApplicationPath(String messageText)
{
selectedFile = null;
fileChooser.setSelectedFile(null);
fileField.setFileName("");
message.setText(messageText);
setVisible(true);
return selectedFile;
}
private File selectedFile = null;
private JLabel message;
private FileField fileField;
private JFileChooser fileChooser;
private MakeGlossariesGUI app;
private String exeSuffix = "";
}