org.jfree.ui.action.AbstractFileSelectionAction Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jcommon Show documentation
Show all versions of jcommon Show documentation
JCommon is a free general purpose Java class library that is used in
several projects at www.jfree.org, including JFreeChart and
JFreeReport.
/* ========================================================================
* JCommon : a free general purpose class library for the Java(tm) platform
* ========================================================================
*
* (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
*
* Project Info: http://www.jfree.org/jcommon/index.html
*
* This library is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2.1 of the License, or
* (at your option) any later version.
*
* This library 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 Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
* USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
* in the United States and other countries.]
*
* ----------------------------
* AbstractFileSelectionAction.java
* ----------------------------
* (C)opyright 2002-2004, by Thomas Morgner and Contributors.
*
* Original Author: Thomas Morgner;
* Contributor(s): David Gilbert (for Object Refinery Limited);
*
* $Id: AbstractFileSelectionAction.java,v 1.4 2005/10/18 13:22:13 mungady Exp $
*
* Changes
* -------
* 21-Nov-2004 : Initial version
*
*/
package org.jfree.ui.action;
import java.awt.Component;
import java.io.File;
import javax.swing.JFileChooser;
import org.jfree.ui.ExtensionFileFilter;
import org.jfree.util.StringUtils;
/**
* A base class for all file operations. This implementation provides all methods
* to let the user select a file.
*
* @author Thomas Morgner
*/
public abstract class AbstractFileSelectionAction extends AbstractActionDowngrade {
/**
* The FileChooser that is used to perform the selection.
*/
private JFileChooser fileChooser;
/**
* The (optional) parent component.
*/
private Component parent;
/**
* Creates a new FileSelectionAction with the given optional parent component
* as parent for the file chooser dialog.
*
* @param parent the parent
*/
public AbstractFileSelectionAction(final Component parent) {
this.parent = parent;
}
/**
* Returns the file extension that should be used for the operation.
*
* @return the file extension.
*/
protected abstract String getFileExtension();
/**
* Returns a descriptive text describing the file extension.
*
* @return the file description.
*/
protected abstract String getFileDescription();
/**
* Returns the working directory that should be used when initializing
* the FileChooser.
*
* @return the working directory.
*/
protected File getCurrentDirectory() {
return new File(".");
}
/**
* Selects a file to use as target for the operation.
*
* @param selectedFile the selected file.
* @param dialogType the dialog type.
* @param appendExtension true, if the file extension should be added if
* necessary, false if the unmodified filename should be used.
*
* @return the selected and approved file or null, if the user canceled
* the operation
*/
protected File performSelectFile(final File selectedFile,
final int dialogType,
final boolean appendExtension) {
if (this.fileChooser == null) {
this.fileChooser = createFileChooser();
}
this.fileChooser.setSelectedFile(selectedFile);
this.fileChooser.setDialogType(dialogType);
final int option = this.fileChooser.showDialog(this.parent, null);
if (option == JFileChooser.APPROVE_OPTION) {
final File selFile = this.fileChooser.getSelectedFile();
String selFileName = selFile.getAbsolutePath();
if (StringUtils.endsWithIgnoreCase(selFileName, getFileExtension()) == false) {
selFileName = selFileName + getFileExtension();
}
return new File(selFileName);
}
return null;
}
/**
* Creates the file chooser.
*
* @return the initialized file chooser.
*/
protected JFileChooser createFileChooser() {
final JFileChooser fc = new JFileChooser();
fc.addChoosableFileFilter(
new ExtensionFileFilter(getFileDescription(), getFileExtension())
);
fc.setMultiSelectionEnabled(false);
fc.setCurrentDirectory(getCurrentDirectory());
return fc;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy