You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
3.9 KiB
159 lines
3.9 KiB
//==============================================================================
|
|
//
|
|
// Copyright (c) 2002-
|
|
// Authors:
|
|
// * Andrew Hinton <ug60axh@cs.bham.ac.uk> (University of Birmingham)
|
|
//
|
|
//------------------------------------------------------------------------------
|
|
//
|
|
// This file is part of PRISM.
|
|
//
|
|
// PRISM 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 2 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// PRISM 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 PRISM; if not, write to the Free Software Foundation,
|
|
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
//
|
|
//==============================================================================
|
|
|
|
package settings;
|
|
|
|
import java.awt.*;
|
|
import java.io.*;
|
|
import javax.swing.*;
|
|
|
|
public class FileSetting extends Setting
|
|
{
|
|
private static FileRenderer renderer;
|
|
private static FileEditor editor;
|
|
|
|
private static FileSelector defaultSelector()
|
|
{
|
|
try {
|
|
return new FileSelector()
|
|
{
|
|
JFileChooser choose = new JFileChooser();
|
|
|
|
public File getFile(Frame parent, File defaultFile)
|
|
{
|
|
choose.setSelectedFile(defaultFile);
|
|
int choice = choose.showOpenDialog(parent);
|
|
if(choice == JFileChooser.CANCEL_OPTION) return null;
|
|
else return choose.getSelectedFile();
|
|
|
|
}
|
|
};
|
|
}
|
|
// Catch any problems that occur when running in headless mode
|
|
// (e.g. the command-line version of PRISM)
|
|
// (in this case, you don't need this object anyway)
|
|
catch (HeadlessException e) {
|
|
return null;
|
|
}
|
|
catch (Error e) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private boolean validFile;
|
|
private FileSelector selector;
|
|
|
|
/** Creates a new instance of FileSetting */
|
|
public FileSetting(String name, File value, String comment, SettingOwner owner, boolean editableWhenMultiple)
|
|
{
|
|
super(name, value, comment, owner, editableWhenMultiple);
|
|
if(value != null) validFile = value.isFile();
|
|
else validFile = false;
|
|
|
|
selector = defaultSelector();
|
|
}
|
|
|
|
public FileSetting(String name, File value, String comment, SettingOwner owner, boolean editableWhenMultiple, FontColorConstraint constraint)
|
|
{
|
|
super(name, value, comment, owner, editableWhenMultiple, constraint);
|
|
if(value != null) validFile = value.isFile();
|
|
else validFile = false;
|
|
|
|
selector = defaultSelector();
|
|
}
|
|
|
|
public void checkObjectWithConstraints(Object obj) throws SettingException
|
|
{
|
|
super.checkObjectWithConstraints(obj);
|
|
if(obj instanceof File)
|
|
{
|
|
File f = (File)obj;
|
|
if(f != null) validFile = f.isFile();
|
|
else validFile = false;
|
|
}
|
|
else
|
|
validFile = false;
|
|
}
|
|
|
|
public SettingEditor getSettingEditor()
|
|
{
|
|
if (editor == null) {
|
|
editor = new FileEditor();
|
|
}
|
|
return editor;
|
|
}
|
|
|
|
public SettingRenderer getSettingRenderer()
|
|
{
|
|
if (renderer == null) {
|
|
renderer = new FileRenderer();
|
|
}
|
|
return renderer;
|
|
}
|
|
|
|
public Class getValueClass()
|
|
{
|
|
return File.class;
|
|
}
|
|
|
|
public File getFileValue()
|
|
{
|
|
if(getValue() != null)
|
|
return (File)getValue();
|
|
else return null;
|
|
|
|
}
|
|
|
|
public boolean isValidFile()
|
|
{
|
|
return validFile;
|
|
}
|
|
|
|
public Object parseStringValue(String string) throws SettingException
|
|
{
|
|
return new File(string);
|
|
}
|
|
|
|
public String toString()
|
|
{
|
|
if(getFileValue() == null) return "";
|
|
else
|
|
{
|
|
return getFileValue().getPath();
|
|
}
|
|
}
|
|
|
|
public void setFileSelector(FileSelector selector)
|
|
{
|
|
this.selector = selector;
|
|
}
|
|
|
|
public FileSelector getFileSelector()
|
|
{
|
|
return selector;
|
|
}
|
|
|
|
}
|