| /* FileDialog.java -- A filename selection dialog box |
| Copyright (C) 1999, 2000, 2001, 2002, 2004, 2005 Free Software Foundation, Inc. |
| |
| This file is part of GNU Classpath. |
| |
| GNU Classpath 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, or (at your option) |
| any later version. |
| |
| GNU Classpath 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 GNU Classpath; see the file COPYING. If not, write to the |
| Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
| 02110-1301 USA. |
| |
| Linking this library statically or dynamically with other modules is |
| making a combined work based on this library. Thus, the terms and |
| conditions of the GNU General Public License cover the whole |
| combination. |
| |
| As a special exception, the copyright holders of this library give you |
| permission to link this library with independent modules to produce an |
| executable, regardless of the license terms of these independent |
| modules, and to copy and distribute the resulting executable under |
| terms of your choice, provided that you also meet, for each linked |
| independent module, the terms and conditions of the license of that |
| module. An independent module is a module which is not derived from |
| or based on this library. If you modify this library, you may extend |
| this exception to your version of the library, but you are not |
| obligated to do so. If you do not wish to do so, delete this |
| exception statement from your version. */ |
| |
| |
| package java.awt; |
| |
| import java.awt.peer.FileDialogPeer; |
| import java.io.FilenameFilter; |
| import java.io.Serializable; |
| |
| /** |
| * This class implements a file selection dialog box widget. |
| * |
| * @author Aaron M. Renn (arenn@urbanophile.com) |
| * @author Tom Tromey (tromey@redhat.com) |
| */ |
| public class FileDialog extends Dialog implements Serializable |
| { |
| |
| /* |
| * Static Variables |
| */ |
| |
| /** |
| * Indicates that the purpose of the dialog is for opening a file. |
| */ |
| public static final int LOAD = 0; |
| |
| /** |
| * Indicates that the purpose of the dialog is for saving a file. |
| */ |
| public static final int SAVE = 1; |
| |
| // Serialization constant |
| private static final long serialVersionUID = 5035145889651310422L; |
| |
| /*************************************************************************/ |
| |
| /* |
| * Instance Variables |
| */ |
| |
| /** |
| * @serial The directory for this file dialog. |
| */ |
| private String dir; |
| |
| /** |
| * @serial The filename for this file dialog |
| */ |
| private String file; |
| |
| /** |
| * @serial The filter for selecting filenames to display |
| */ |
| private FilenameFilter filter; |
| |
| /** |
| * @serial The mode of this dialog, either <code>LOAD</code> or |
| * <code>SAVE</code>. |
| */ |
| private int mode; |
| |
| /*************************************************************************/ |
| |
| /* |
| * Constructors |
| */ |
| |
| /** |
| * Initializes a new instance of <code>FileDialog</code> with the specified |
| * parent. This dialog will have no title and will be for loading a file. |
| * |
| * @param parent The parent dialog for this. |
| * |
| * @since 1.5 |
| */ |
| public FileDialog(Dialog parent) |
| { |
| this(parent, "", LOAD); |
| } |
| |
| /** |
| * Initialized a new instance of <code>FileDialog</code> with the |
| * specified parent and title. This dialog will be for opening a file. |
| * |
| * @param parent The parent dialog for this. |
| * @param title The title for this dialog. |
| * |
| * @since 1.5 |
| */ |
| public FileDialog(Dialog parent, String title) |
| { |
| this(parent, title, LOAD); |
| } |
| |
| /** |
| * Initialized a new instance of <code>FileDialog</code> with the specified |
| * parent, title, and mode. |
| * |
| * @param parent The parent dialog for this. |
| * @param title The title for this dialog. |
| * @param mode The mode of the dialog, either <code>LOAD</code> or |
| * <code>SAVE</code>. |
| * @throws IllegalArgumentException - if illegal mode, if |
| * GraphicsEnvironment.isHeadless or if parent is null. |
| * |
| * @since 1.5 |
| */ |
| public FileDialog(Dialog parent, String title, int mode) |
| { |
| super(parent, title, true); |
| |
| // Other IllegalArgumentException cases are taken care of in Window.java |
| if (mode != LOAD && mode != SAVE) |
| throw new IllegalArgumentException ( |
| "Mode argument must be either LOAD or SAVE"); |
| |
| setMode(mode); |
| } |
| |
| /** |
| * Initializes a new instance of <code>FileDialog</code> with the |
| * specified parent. This dialog will have no title and will be for |
| * loading a file. |
| * |
| * @param parent The parent frame for this dialog. |
| */ |
| public |
| FileDialog(Frame parent) |
| { |
| this(parent, "", LOAD); |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Initialized a new instance of <code>FileDialog</code> with the |
| * specified parent and title. This dialog will be for opening a file. |
| * |
| * @param parent The parent frame for this dialog. |
| * @param title The title for this dialog. |
| */ |
| public |
| FileDialog(Frame parent, String title) |
| { |
| this(parent, title, LOAD); |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Initialized a new instance of <code>FileDialog</code> with the |
| * specified parent, title, and mode. |
| * |
| * @param parent The parent frame for this dialog. |
| * @param title The title for this dialog. |
| * @param mode The mode of the dialog, either <code>LOAD</code> or |
| * <code>SAVE</code>. |
| * |
| * @exception IllegalArgumentException If an illegal file dialog mode |
| * is supplied. |
| */ |
| public |
| FileDialog(Frame parent, String title, int mode) |
| { |
| super(parent, title, true); |
| |
| if ((mode != LOAD) && (mode != SAVE)) |
| throw new IllegalArgumentException ( |
| "Mode argument must be either LOAD or SAVE"); |
| |
| setMode (mode); |
| } |
| |
| /*************************************************************************/ |
| |
| /* |
| * Instance Methods |
| */ |
| |
| /** |
| * Returns the mode of this dialog, either <code>LOAD</code> or |
| * <code>SAVE</code>. |
| * |
| * @return The mode of this dialog. |
| */ |
| public int |
| getMode() |
| { |
| return(mode); |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Sets the mode of this dialog to either <code>LOAD</code> or |
| * <code>SAVE</code>. This method is only effective before the native |
| * peer is created. |
| * |
| * @param mode The new mode of this file dialog. |
| * |
| * @exception IllegalArgumentException If an illegal file dialog mode |
| * is supplied. |
| */ |
| public void |
| setMode(int mode) |
| { |
| if ((mode != LOAD) && (mode != SAVE)) |
| throw new IllegalArgumentException("Bad mode: " + mode); |
| |
| this.mode = mode; |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Returns the directory for this file dialog. |
| * |
| * @return The directory for this file dialog. |
| */ |
| public String |
| getDirectory() |
| { |
| return(dir); |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Sets the directory for this file dialog. |
| * |
| * @param dir The new directory for this file dialog. |
| */ |
| public synchronized void |
| setDirectory(String dir) |
| { |
| this.dir = dir; |
| if (peer != null) |
| { |
| FileDialogPeer f = (FileDialogPeer) peer; |
| f.setDirectory (dir); |
| } |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Returns the file that is selected in this dialog. |
| * |
| * @return The file that is selected in this dialog. |
| */ |
| public String |
| getFile() |
| { |
| return(file); |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Sets the selected file for this dialog. |
| * |
| * @param file The selected file for this dialog. |
| */ |
| public synchronized void |
| setFile(String file) |
| { |
| this.file = file; |
| if (peer != null) |
| { |
| FileDialogPeer f = (FileDialogPeer) peer; |
| f.setFile (file); |
| } |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Returns the filename filter being used by this dialog. |
| * |
| * @return The filename filter being used by this dialog. |
| */ |
| public FilenameFilter |
| getFilenameFilter() |
| { |
| return(filter); |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Sets the filename filter used by this dialog. |
| * |
| * @param filter The new filename filter for this file dialog box. |
| */ |
| public synchronized void |
| setFilenameFilter(FilenameFilter filter) |
| { |
| this.filter = filter; |
| if (peer != null) |
| { |
| FileDialogPeer f = (FileDialogPeer) peer; |
| f.setFilenameFilter (filter); |
| } |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Creates the native peer for this file dialog box. |
| */ |
| public void |
| addNotify() |
| { |
| if (peer == null) |
| peer = getToolkit ().createFileDialog (this); |
| super.addNotify (); |
| } |
| |
| /*************************************************************************/ |
| |
| /** |
| * Returns a debugging string for this object. |
| * |
| * @return A debugging string for this object. |
| */ |
| protected String |
| paramString() |
| { |
| return ("dir=" + dir + ",file=" + file + |
| ",mode=" + mode + "," + super.paramString()); |
| } |
| |
| } // class FileDialog |
| |