diff options
Diffstat (limited to 'libjava/classpath/javax/swing/plaf/basic/BasicFileChooserUI.java')
-rw-r--r-- | libjava/classpath/javax/swing/plaf/basic/BasicFileChooserUI.java | 1437 |
1 files changed, 0 insertions, 1437 deletions
diff --git a/libjava/classpath/javax/swing/plaf/basic/BasicFileChooserUI.java b/libjava/classpath/javax/swing/plaf/basic/BasicFileChooserUI.java deleted file mode 100644 index 347686d6ea8..00000000000 --- a/libjava/classpath/javax/swing/plaf/basic/BasicFileChooserUI.java +++ /dev/null @@ -1,1437 +0,0 @@ -/* BasicFileChooserUI.java -- - Copyright (C) 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 javax.swing.plaf.basic; - -import java.awt.Window; -import java.awt.event.ActionEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.MouseListener; -import java.beans.PropertyChangeListener; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Hashtable; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.Icon; -import javax.swing.JButton; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JFileChooser; -import javax.swing.JList; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.SwingUtilities; -import javax.swing.UIDefaults; -import javax.swing.UIManager; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; -import javax.swing.filechooser.FileFilter; -import javax.swing.filechooser.FileSystemView; -import javax.swing.filechooser.FileView; -import javax.swing.plaf.ComponentUI; -import javax.swing.plaf.FileChooserUI; -import javax.swing.plaf.metal.MetalIconFactory; - - -/** - * A UI delegate for the {@link JFileChooser} component under the - * {@link BasicLookAndFeel}. - */ -public class BasicFileChooserUI extends FileChooserUI -{ - /** - * A file filter that accepts all files. - */ - protected class AcceptAllFileFilter extends FileFilter - { - /** - * Creates a new instance. - */ - public AcceptAllFileFilter() - { - // Nothing to do here. - } - - /** - * Returns <code>true</code> always, as all files are accepted by this - * filter. - * - * @param f the file. - * - * @return Always <code>true</code>. - */ - public boolean accept(File f) - { - return true; - } - - /** - * Returns a description for this filter. - * - * @return A description for the file filter. - */ - public String getDescription() - { - return acceptAllFileFilterText; - } - } - - /** - * Handles a user action to approve the dialog selection. - * - * @see BasicFileChooserUI#getApproveSelectionAction() - */ - protected class ApproveSelectionAction extends AbstractAction - { - /** - * Creates a new ApproveSelectionAction object. - */ - protected ApproveSelectionAction() - { - super("approveSelection"); - } - - /** - * Sets the current selection and closes the dialog. - * - * @param e the action event. - */ - public void actionPerformed(ActionEvent e) - { - Object obj = null; - if (parentPath != null) - obj = new String(parentPath + getFileName()); - else - obj = filechooser.getSelectedFile(); - if (obj != null) - { - File f = filechooser.getFileSystemView().createFileObject(obj.toString()); - File currSelected = filechooser.getSelectedFile(); - if (filechooser.isTraversable(f)) - { - filechooser.setCurrentDirectory(currSelected); - filechooser.rescanCurrentDirectory(); - } - else - { - filechooser.approveSelection(); - closeDialog(); - } - } - else - { - File f = new File(filechooser.getCurrentDirectory(), getFileName()); - if ( selectedDir != null ) - f = selectedDir; - if (filechooser.isTraversable(f)) - { - filechooser.setCurrentDirectory(f); - filechooser.rescanCurrentDirectory(); - } - else - { - filechooser.setSelectedFile(f); - filechooser.approveSelection(); - closeDialog(); - } - } - } - } - - /** - * Provides presentation information about files and directories. - */ - protected class BasicFileView extends FileView - { - /** Storage for cached icons. */ - protected Hashtable<File, Icon> iconCache = new Hashtable<File, Icon>(); - - /** - * Creates a new instance. - */ - public BasicFileView() - { - // Nothing to do here. - } - - /** - * Adds an icon to the cache, associating it with the given file/directory. - * - * @param f the file/directory. - * @param i the icon. - */ - public void cacheIcon(File f, Icon i) - { - iconCache.put(f, i); - } - - /** - * Clears the icon cache. - */ - public void clearIconCache() - { - iconCache.clear(); - } - - /** - * Retrieves the icon associated with the specified file/directory, if - * there is one. - * - * @param f the file/directory. - * - * @return The cached icon (or <code>null</code>). - */ - public Icon getCachedIcon(File f) - { - return (Icon) iconCache.get(f); - } - - /** - * Returns a description of the given file/directory. In this - * implementation, the description is the same as the name returned by - * {@link #getName(File)}. - * - * @param f the file/directory. - * - * @return A description of the given file/directory. - */ - public String getDescription(File f) - { - return getName(f); - } - - /** - * Returns an icon appropriate for the given file or directory. - * - * @param f the file/directory. - * - * @return An icon. - */ - public Icon getIcon(File f) - { - Icon val = getCachedIcon(f); - if (val != null) - return val; - if (filechooser.isTraversable(f)) - val = directoryIcon; - else - val = fileIcon; - cacheIcon(f, val); - return val; - } - - /** - * Returns the name for the given file/directory. - * - * @param f the file/directory. - * - * @return The name of the file/directory. - */ - public String getName(File f) - { - String name = null; - if (f != null) - { - JFileChooser c = getFileChooser(); - FileSystemView v = c.getFileSystemView(); - name = v.getSystemDisplayName(f); - } - return name; - } - - /** - * Returns a localised description for the type of file/directory. - * - * @param f the file/directory. - * - * @return A type description for the given file/directory. - */ - public String getTypeDescription(File f) - { - if (filechooser.isTraversable(f)) - return dirDescText; - else - return fileDescText; - } - - /** - * Returns {@link Boolean#TRUE} if the given file/directory is hidden, - * and {@link Boolean#FALSE} otherwise. - * - * @param f the file/directory. - * - * @return {@link Boolean#TRUE} or {@link Boolean#FALSE}. - */ - public Boolean isHidden(File f) - { - return Boolean.valueOf(filechooser.getFileSystemView().isHiddenFile(f)); - } - } - - /** - * Handles an action to cancel the file chooser. - * - * @see BasicFileChooserUI#getCancelSelectionAction() - */ - protected class CancelSelectionAction extends AbstractAction - { - /** - * Creates a new <code>CancelSelectionAction</code> object. - */ - protected CancelSelectionAction() - { - super(null); - } - - /** - * Cancels the selection and closes the dialog. - * - * @param e the action event (ignored). - */ - public void actionPerformed(ActionEvent e) - { - filechooser.setSelectedFile(null); - filechooser.setSelectedFiles(null); - filechooser.cancelSelection(); - closeDialog(); - } - } - - /** - * An action to handle changes to the parent directory (for example, via - * a click on the "up folder" button). - * - * @see BasicFileChooserUI#getChangeToParentDirectoryAction() - */ - protected class ChangeToParentDirectoryAction extends AbstractAction - { - /** - * Creates a new <code>ChangeToParentDirectoryAction</code> object. - */ - protected ChangeToParentDirectoryAction() - { - super("Go Up"); - } - - /** - * Handles the action event. - * - * @param e the action event. - */ - public void actionPerformed(ActionEvent e) - { - filechooser.changeToParentDirectory(); - filechooser.revalidate(); - filechooser.repaint(); - } - } - - /** - * A mouse listener that handles double-click events. - * - * @see BasicFileChooserUI#createDoubleClickListener(JFileChooser, JList) - */ - protected class DoubleClickListener extends MouseAdapter - { - - /** DOCUMENT ME! */ - private Object lastSelected; - - /** DOCUMENT ME! */ - private JList list; - - /** - * Creates a new DoubleClickListener object. - * - * @param list DOCUMENT ME! - */ - public DoubleClickListener(JList list) - { - this.list = list; - lastSelected = list.getSelectedValue(); - setDirectorySelected(false); - } - - /** - * Handles a mouse click event. - * - * @param e the event. - */ - public void mouseClicked(MouseEvent e) - { - Object p = list.getSelectedValue(); - if (p == null) - return; - FileSystemView fsv = filechooser.getFileSystemView(); - if (e.getClickCount() >= 2 && lastSelected != null && - p.toString().equals(lastSelected.toString())) - { - File f = fsv.createFileObject(lastSelected.toString()); - if (filechooser.isTraversable(f)) - { - filechooser.setCurrentDirectory(f); - filechooser.rescanCurrentDirectory(); - } - else - { - filechooser.setSelectedFile(f); - filechooser.approveSelection(); - closeDialog(); - } - } - else // single click - { - String path = p.toString(); - File f = fsv.createFileObject(path); - filechooser.setSelectedFile(f); - - if (filechooser.isMultiSelectionEnabled()) - { - int[] inds = list.getSelectedIndices(); - File[] allFiles = new File[inds.length]; - for (int i = 0; i < inds.length; i++) - allFiles[i] = (File) list.getModel().getElementAt(inds[i]); - filechooser.setSelectedFiles(allFiles); - } - - if (filechooser.isTraversable(f)) - { - setDirectorySelected(true); - setDirectory(f); - } - else - { - setDirectorySelected(false); - setDirectory(null); - } - lastSelected = path; - parentPath = f.getParent(); - - if (f.isFile()) - setFileName(f.getName()); - else if (filechooser.getFileSelectionMode() != - JFileChooser.FILES_ONLY) - setFileName(path); - } - } - - /** - * Handles a mouse entered event (NOT IMPLEMENTED). - * - * @param e the mouse event. - */ - public void mouseEntered(MouseEvent e) - { - // FIXME: Implement - } - } - - /** - * An action that changes the file chooser to display the user's home - * directory. - * - * @see BasicFileChooserUI#getGoHomeAction() - */ - protected class GoHomeAction extends AbstractAction - { - /** - * Creates a new <code>GoHomeAction</code> object. - */ - protected GoHomeAction() - { - super("Go Home"); - } - - /** - * Sets the directory to the user's home directory, and repaints the - * file chooser component. - * - * @param e the action event (ignored). - */ - public void actionPerformed(ActionEvent e) - { - filechooser.setCurrentDirectory(filechooser.getFileSystemView() - .getHomeDirectory()); - filechooser.revalidate(); - filechooser.repaint(); - } - } - - /** - * An action that handles the creation of a new folder/directory. - * - * @see BasicFileChooserUI#getNewFolderAction() - */ - protected class NewFolderAction extends AbstractAction - { - /** - * Creates a new <code>NewFolderAction</code> object. - */ - protected NewFolderAction() - { - super("New Folder"); - } - - /** - * Handles the event by creating a new folder. - * - * @param e the action event (ignored). - */ - public void actionPerformed(ActionEvent e) - { - try - { - filechooser.getFileSystemView().createNewFolder(filechooser - .getCurrentDirectory()); - } - catch (IOException ioe) - { - return; - } - filechooser.rescanCurrentDirectory(); - filechooser.repaint(); - } - } - - /** - * A listener for selection events in the file list. - * - * @see BasicFileChooserUI#createListSelectionListener(JFileChooser) - */ - protected class SelectionListener implements ListSelectionListener - { - /** - * Creates a new <code>SelectionListener</code> object. - */ - protected SelectionListener() - { - // Nothing to do here. - } - - /** - * Sets the JFileChooser to the selected file on an update - * - * @param e DOCUMENT ME! - */ - public void valueChanged(ListSelectionEvent e) - { - JList list = (JList) e.getSource(); - Object f = list.getSelectedValue(); - if (f == null) - return; - File file = filechooser.getFileSystemView().createFileObject(f.toString()); - if (! filechooser.isTraversable(file)) - { - selectedDir = null; - filechooser.setSelectedFile(file); - } - else - { - selectedDir = file; - filechooser.setSelectedFile(null); - } - } - } - - /** - * DOCUMENT ME! - * - * @see BasicFileChooserUI#getUpdateAction() - */ - protected class UpdateAction extends AbstractAction - { - /** - * Creates a new UpdateAction object. - */ - protected UpdateAction() - { - super(null); - } - - /** - * NOT YET IMPLEMENTED. - * - * @param e the action event. - */ - public void actionPerformed(ActionEvent e) - { - // FIXME: implement this - } - } - - /** The localised mnemonic for the cancel button. */ - protected int cancelButtonMnemonic; - - /** The localised text for the cancel button. */ - protected String cancelButtonText; - - /** The localised tool tip text for the cancel button. */ - protected String cancelButtonToolTipText; - - /** An icon representing a computer. */ - protected Icon computerIcon; - - /** An icon for the "details view" button. */ - protected Icon detailsViewIcon; - - /** An icon representing a directory. */ - protected Icon directoryIcon; - - /** The localised Mnemonic for the open button. */ - protected int directoryOpenButtonMnemonic; - - /** The localised text for the open button. */ - protected String directoryOpenButtonText; - - /** The localised tool tip text for the open button. */ - protected String directoryOpenButtonToolTipText; - - /** An icon representing a file. */ - protected Icon fileIcon; - - /** An icon representing a floppy drive. */ - protected Icon floppyDriveIcon; - - /** An icon representing a hard drive. */ - protected Icon hardDriveIcon; - - /** The localised mnemonic for the "help" button. */ - protected int helpButtonMnemonic; - - /** The localised text for the "help" button. */ - protected String helpButtonText; - - /** The localised tool tip text for the help button. */ - protected String helpButtonToolTipText; - - /** An icon representing the user's home folder. */ - protected Icon homeFolderIcon; - - /** An icon for the "list view" button. */ - protected Icon listViewIcon; - - /** An icon for the "new folder" button. */ - protected Icon newFolderIcon = directoryIcon; - - /** The localised mnemonic for the "open" button. */ - protected int openButtonMnemonic; - - /** The localised text for the "open" button. */ - protected String openButtonText; - - /** The localised tool tip text for the "open" button. */ - protected String openButtonToolTipText; - - /** The localised mnemonic for the "save" button. */ - protected int saveButtonMnemonic; - - /** The localised text for the "save" button. */ - protected String saveButtonText; - - /** The localised tool tip text for the save button. */ - protected String saveButtonToolTipText; - - /** The localised mnemonic for the "update" button. */ - protected int updateButtonMnemonic; - - /** The localised text for the "update" button. */ - protected String updateButtonText; - - /** The localised tool tip text for the "update" button. */ - protected String updateButtonToolTipText; - - /** An icon for the "up folder" button. */ - protected Icon upFolderIcon; - - // -- begin private, but package local since used in inner classes -- - - /** The file chooser component represented by this UI delegate. */ - JFileChooser filechooser; - - /** The model for the directory list. */ - BasicDirectoryModel model; - - /** The file filter for all files. */ - FileFilter acceptAll = new AcceptAllFileFilter(); - - /** The default file view. */ - FileView fv = new BasicFileView(); - - /** The accept (open/save) button. */ - JButton accept; - - /** An optional accessory panel. */ - JPanel accessoryPanel = new JPanel(); - - /** A property change listener. */ - PropertyChangeListener propertyChangeListener; - - /** The text describing the filter for "all files". */ - String acceptAllFileFilterText; - - /** The text describing a directory type. */ - String dirDescText; - - /** The text describing a file type. */ - String fileDescText; - - /** Is a directory selected? */ - boolean dirSelected; - - /** The current directory. */ - File currDir; - - // FIXME: describe what is contained in the bottom panel - /** The bottom panel. */ - JPanel bottomPanel; - - /** The close panel. */ - JPanel closePanel; - - /** Text box that displays file name */ - JTextField entry; - - /** Current parent path */ - String parentPath; - - /** - * The action for the 'approve' button. - * @see #getApproveSelectionAction() - */ - private ApproveSelectionAction approveSelectionAction; - - /** - * The action for the 'cancel' button. - * @see #getCancelSelectionAction() - */ - private CancelSelectionAction cancelSelectionAction; - - /** - * The action for the 'go home' control button. - * @see #getGoHomeAction() - */ - private GoHomeAction goHomeAction; - - /** - * The action for the 'up folder' control button. - * @see #getChangeToParentDirectoryAction() - */ - private ChangeToParentDirectoryAction changeToParentDirectoryAction; - - /** - * The action for the 'new folder' control button. - * @see #getNewFolderAction() - */ - private NewFolderAction newFolderAction; - - /** - * The action for ???. // FIXME: what is this? - * @see #getUpdateAction() - */ - private UpdateAction updateAction; - - /** - * When in FILES_ONLY, mode a directory cannot be selected, so - * we save a reference to any it here. This is used to enter - * the directory on "Open" when in that mode. - */ - private File selectedDir; - - // -- end private -- - - /** - * Closes the dialog. - */ - void closeDialog() - { - Window owner = SwingUtilities.windowForComponent(filechooser); - if (owner instanceof JDialog) - ((JDialog) owner).dispose(); - } - - /** - * Creates a new <code>BasicFileChooserUI</code> object. - * - * @param b the file chooser component. - */ - public BasicFileChooserUI(JFileChooser b) - { - } - - /** - * Returns a UI delegate for the given component. - * - * @param c the component (should be a {@link JFileChooser}). - * - * @return A new UI delegate. - */ - public static ComponentUI createUI(JComponent c) - { - return new BasicFileChooserUI((JFileChooser) c); - } - - /** - * Installs the UI for the specified component. - * - * @param c the component (should be a {@link JFileChooser}). - */ - public void installUI(JComponent c) - { - if (c instanceof JFileChooser) - { - JFileChooser fc = (JFileChooser) c; - this.filechooser = fc; - fc.resetChoosableFileFilters(); - createModel(); - clearIconCache(); - installDefaults(fc); - installComponents(fc); - installListeners(fc); - - File path = filechooser.getCurrentDirectory(); - if (path != null) - parentPath = path.getParent(); - } - } - - /** - * Uninstalls this UI from the given component. - * - * @param c the component (should be a {@link JFileChooser}). - */ - public void uninstallUI(JComponent c) - { - model = null; - uninstallListeners(filechooser); - uninstallComponents(filechooser); - uninstallDefaults(filechooser); - filechooser = null; - } - - // FIXME: Indent the entries in the combobox - // Made this method package private to access it from within inner classes - // with better performance - void boxEntries() - { - ArrayList parentFiles = new ArrayList(); - File parent = filechooser.getCurrentDirectory(); - if (parent == null) - parent = filechooser.getFileSystemView().getDefaultDirectory(); - while (parent != null) - { - String name = parent.getName(); - if (name.equals("")) - name = parent.getAbsolutePath(); - - parentFiles.add(parentFiles.size(), name); - parent = parent.getParentFile(); - } - - if (parentFiles.size() == 0) - return; - - } - - /** - * Creates and install the subcomponents for the file chooser. - * - * @param fc the file chooser. - */ - public void installComponents(JFileChooser fc) - { - } - - /** - * Uninstalls the components from the file chooser. - * - * @param fc the file chooser. - */ - public void uninstallComponents(JFileChooser fc) - { - } - - /** - * Installs the listeners required by this UI delegate. - * - * @param fc the file chooser. - */ - protected void installListeners(JFileChooser fc) - { - propertyChangeListener = createPropertyChangeListener(filechooser); - if (propertyChangeListener != null) - filechooser.addPropertyChangeListener(propertyChangeListener); - fc.addPropertyChangeListener(getModel()); - } - - /** - * Uninstalls the listeners previously installed by this UI delegate. - * - * @param fc the file chooser. - */ - protected void uninstallListeners(JFileChooser fc) - { - if (propertyChangeListener != null) - { - filechooser.removePropertyChangeListener(propertyChangeListener); - propertyChangeListener = null; - } - fc.removePropertyChangeListener(getModel()); - } - - /** - * Installs the defaults for this UI delegate. - * - * @param fc the file chooser. - */ - protected void installDefaults(JFileChooser fc) - { - installIcons(fc); - installStrings(fc); - } - - /** - * Uninstalls the defaults previously added by this UI delegate. - * - * @param fc the file chooser. - */ - protected void uninstallDefaults(JFileChooser fc) - { - uninstallStrings(fc); - uninstallIcons(fc); - } - - /** - * Installs the icons for this UI delegate. - * - * @param fc the file chooser (ignored). - */ - protected void installIcons(JFileChooser fc) - { - UIDefaults defaults = UIManager.getLookAndFeelDefaults(); - computerIcon = MetalIconFactory.getTreeComputerIcon(); - detailsViewIcon = defaults.getIcon("FileChooser.detailsViewIcon"); - directoryIcon = new MetalIconFactory.TreeFolderIcon(); - fileIcon = new MetalIconFactory.TreeLeafIcon(); - floppyDriveIcon = MetalIconFactory.getTreeFloppyDriveIcon(); - hardDriveIcon = MetalIconFactory.getTreeHardDriveIcon(); - homeFolderIcon = defaults.getIcon("FileChooser.homeFolderIcon"); - listViewIcon = defaults.getIcon("FileChooser.listViewIcon"); - newFolderIcon = defaults.getIcon("FileChooser.newFolderIcon"); - upFolderIcon = defaults.getIcon("FileChooser.upFolderIcon"); - } - - /** - * Uninstalls the icons previously added by this UI delegate. - * - * @param fc the file chooser. - */ - protected void uninstallIcons(JFileChooser fc) - { - computerIcon = null; - detailsViewIcon = null; - directoryIcon = null; - fileIcon = null; - floppyDriveIcon = null; - hardDriveIcon = null; - homeFolderIcon = null; - listViewIcon = null; - newFolderIcon = null; - upFolderIcon = null; - } - - /** - * Installs the strings used by this UI delegate. - * - * @param fc the file chooser. - */ - protected void installStrings(JFileChooser fc) - { - UIDefaults defaults = UIManager.getLookAndFeelDefaults(); - - dirDescText = defaults.getString("FileChooser.directoryDescriptionText"); - fileDescText = defaults.getString("FileChooser.fileDescriptionText"); - - acceptAllFileFilterText = defaults.getString("FileChooser.acceptAllFileFilterText"); - cancelButtonText = "Cancel"; - cancelButtonToolTipText = "Abort file chooser dialog"; - cancelButtonMnemonic = new Integer((String) UIManager.get("FileChooser.cancelButtonMnemonic")).intValue(); - - directoryOpenButtonText = "Open"; - directoryOpenButtonToolTipText = "Open selected directory"; - directoryOpenButtonMnemonic - = new Integer((String) UIManager.get("FileChooser.directoryOpenButtonMnemonic")).intValue(); - - helpButtonText = "Help"; - helpButtonToolTipText = "FileChooser help"; - helpButtonMnemonic = new Integer((String) UIManager.get("FileChooser.helpButtonMnemonic")).intValue(); - - openButtonText = "Open"; - openButtonToolTipText = "Open selected file"; - openButtonMnemonic = new Integer((String) UIManager.get("FileChooser.openButtonMnemonic")).intValue(); - - saveButtonText = "Save"; - saveButtonToolTipText = "Save selected file"; - saveButtonMnemonic = new Integer((String) UIManager.get("FileChooser.saveButtonMnemonic")).intValue(); - - updateButtonText = "Update"; - updateButtonToolTipText = "Update directory listing"; - updateButtonMnemonic = new Integer((String) UIManager.get("FileChooser.updateButtonMnemonic")).intValue(); - } - - /** - * Uninstalls the strings previously added by this UI delegate. - * - * @param fc the file chooser. - */ - protected void uninstallStrings(JFileChooser fc) - { - acceptAllFileFilterText = null; - dirDescText = null; - fileDescText = null; - - cancelButtonText = null; - cancelButtonToolTipText = null; - - directoryOpenButtonText = null; - directoryOpenButtonToolTipText = null; - - helpButtonText = null; - helpButtonToolTipText = null; - - openButtonText = null; - openButtonToolTipText = null; - - saveButtonText = null; - saveButtonToolTipText = null; - - updateButtonText = null; - updateButtonToolTipText = null; - } - - /** - * Creates a new directory model. - */ - protected void createModel() - { - model = new BasicDirectoryModel(filechooser); - } - - /** - * Returns the directory model. - * - * @return The directory model. - */ - public BasicDirectoryModel getModel() - { - return model; - } - - /** - * Creates a listener to handle changes to the properties of the given - * file chooser component. - * - * @param fc the file chooser component. - * - * @return A new listener. - */ - public PropertyChangeListener createPropertyChangeListener(JFileChooser fc) - { - // The RI returns null here, so do we. - return null; - } - - /** - * Returns the current file name. - * - * @return The current file name. - */ - public String getFileName() - { - return entry.getText(); - } - - /** - * Returns the current directory name. - * - * @return The directory name. - * - * @see #setDirectoryName(String) - */ - public String getDirectoryName() - { - // XXX: I don't see a case where the thing returns something non-null.. - return null; - } - - /** - * Sets the file name. - * - * @param filename the file name. - * - * @see #getFileName() - */ - public void setFileName(String filename) - { - // FIXME: it might be the case that this method provides an access - // point for the JTextField (or whatever) a subclass is using... - //this.filename = filename; - } - - /** - * Sets the directory name (NOT IMPLEMENTED). - * - * @param dirname the directory name. - * - * @see #getDirectoryName() - */ - public void setDirectoryName(String dirname) - { - // FIXME: Implement - } - - /** - * Rescans the current directory. - * - * @param fc the file chooser. - */ - public void rescanCurrentDirectory(JFileChooser fc) - { - getModel().validateFileCache(); - } - - /** - * NOT YET IMPLEMENTED. - * - * @param fc the file chooser. - * @param f the file. - */ - public void ensureFileIsVisible(JFileChooser fc, File f) - { - // XXX: Not sure what this does. - } - - /** - * Returns the {@link JFileChooser} component that this UI delegate - * represents. - * - * @return The component represented by this UI delegate. - */ - public JFileChooser getFileChooser() - { - return filechooser; - } - - /** - * Returns the optional accessory panel. - * - * @return The optional accessory panel. - */ - public JPanel getAccessoryPanel() - { - return accessoryPanel; - } - - /** - * Returns the approve (open or save) button for the dialog. - * - * @param fc the file chooser. - * - * @return The button. - */ - protected JButton getApproveButton(JFileChooser fc) - { - return accept; - } - - /** - * Returns the tool tip text for the approve (open/save) button. This first - * checks the file chooser to see if a value has been explicitly set - if - * not, a default value appropriate for the type of file chooser is - * returned. - * - * @param fc the file chooser. - * - * @return The tool tip text. - */ - public String getApproveButtonToolTipText(JFileChooser fc) - { - if (fc.getApproveButtonToolTipText() != null) - return fc.getApproveButtonToolTipText(); - else if (fc.getDialogType() == JFileChooser.SAVE_DIALOG) - return saveButtonToolTipText; - else - return openButtonToolTipText; - } - - /** - * Clears the icon cache. - */ - public void clearIconCache() - { - if (fv instanceof BasicFileView) - ((BasicFileView) fv).clearIconCache(); - } - - /** - * Creates a new listener to handle selections in the file list. - * - * @param fc the file chooser component. - * - * @return A new instance of {@link SelectionListener}. - */ - public ListSelectionListener createListSelectionListener(JFileChooser fc) - { - return new SelectionListener(); - } - - /** - * Creates a new listener to handle double-click events. - * - * @param fc the file chooser component. - * @param list the list. - * - * @return A new instance of {@link DoubleClickListener}. - */ - protected MouseListener createDoubleClickListener(JFileChooser fc, JList list) - { - return new DoubleClickListener(list); - } - - /** - * Returns <code>true</code> if a directory is selected, and - * <code>false</code> otherwise. - * - * @return A boolean. - */ - protected boolean isDirectorySelected() - { - return dirSelected; - } - - /** - * Sets the flag that indicates whether the current directory is selected. - * - * @param selected the new flag value. - */ - protected void setDirectorySelected(boolean selected) - { - dirSelected = selected; - } - - /** - * Returns the current directory. - * - * @return The current directory. - */ - protected File getDirectory() - { - return currDir; - } - - /** - * Sets the current directory. - * - * @param f the directory. - */ - protected void setDirectory(File f) - { - currDir = f; - } - - /** - * Returns the "accept all" file filter. - * - * @param fc the file chooser component. - * - * @return The "accept all" file filter. - */ - public FileFilter getAcceptAllFileFilter(JFileChooser fc) - { - return acceptAll; - } - - /** - * Returns the default file view (NOT the file view from the file chooser, - * if there is one). - * - * @param fc the file chooser component. - * - * @return The file view. - * - * @see JFileChooser#getFileView() - */ - public FileView getFileView(JFileChooser fc) - { - return fv; - } - - /** - * Returns the dialog title. - * - * @param fc the file chooser (<code>null</code> not permitted). - * - * @return The dialog title. - * - * @see JFileChooser#getDialogTitle() - */ - public String getDialogTitle(JFileChooser fc) - { - String result = fc.getDialogTitle(); - if (result == null) - result = getApproveButtonText(fc); - return result; - } - - /** - * Returns the approve button mnemonic. - * - * @param fc the file chooser (<code>null</code> not permitted). - * - * @return The approve button mnemonic. - * - * @see JFileChooser#getApproveButtonMnemonic() - */ - public int getApproveButtonMnemonic(JFileChooser fc) - { - if (fc.getApproveButtonMnemonic() != 0) - return fc.getApproveButtonMnemonic(); - else if (fc.getDialogType() == JFileChooser.SAVE_DIALOG) - return saveButtonMnemonic; - else - return openButtonMnemonic; - } - - /** - * Returns the approve button text. - * - * @param fc the file chooser (<code>null</code> not permitted). - * - * @return The approve button text. - * - * @see JFileChooser#getApproveButtonText() - */ - public String getApproveButtonText(JFileChooser fc) - { - String result = fc.getApproveButtonText(); - if (result == null) - { - if (fc.getDialogType() == JFileChooser.SAVE_DIALOG) - result = saveButtonText; - else - result = openButtonText; - } - return result; - } - - /** - * Creates and returns a new action that will be used with the "new folder" - * button. - * - * @return A new instance of {@link NewFolderAction}. - */ - public Action getNewFolderAction() - { - if (newFolderAction == null) - newFolderAction = new NewFolderAction(); - return newFolderAction; - } - - /** - * Creates and returns a new action that will be used with the "home folder" - * button. - * - * @return A new instance of {@link GoHomeAction}. - */ - public Action getGoHomeAction() - { - if (goHomeAction == null) - goHomeAction = new GoHomeAction(); - return goHomeAction; - } - - /** - * Returns the action that handles events for the "up folder" control button. - * - * @return An instance of {@link ChangeToParentDirectoryAction}. - */ - public Action getChangeToParentDirectoryAction() - { - if (changeToParentDirectoryAction == null) - changeToParentDirectoryAction = new ChangeToParentDirectoryAction(); - return changeToParentDirectoryAction; - } - - /** - * Returns the action that handles events for the "approve" button. - * - * @return An instance of {@link ApproveSelectionAction}. - */ - public Action getApproveSelectionAction() - { - if (approveSelectionAction == null) - approveSelectionAction = new ApproveSelectionAction(); - return approveSelectionAction; - } - - /** - * Returns the action that handles events for the "cancel" button. - * - * @return An instance of {@link CancelSelectionAction}. - */ - public Action getCancelSelectionAction() - { - if (cancelSelectionAction == null) - cancelSelectionAction = new CancelSelectionAction(); - return cancelSelectionAction; - } - - /** - * Returns the update action (an instance of {@link UpdateAction}). - * - * @return An action. - */ - public Action getUpdateAction() - { - if (updateAction == null) - updateAction = new UpdateAction(); - return updateAction; - } -} |