📄 basicfilechooserui.java
字号:
/* * @(#)BasicFileChooserUI.java 1.47 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.swing.plaf.basic;import javax.swing.*;import javax.swing.filechooser.*;import javax.swing.event.*;import javax.swing.plaf.*;import java.awt.*;import java.awt.event.*;import java.awt.datatransfer.*;import java.beans.*;import java.io.File;import java.io.IOException;import java.util.*;import java.util.regex.*;/** * Basic L&F implementation of a FileChooser. * * @version %i% %g% * @author Jeff Dinkins */public class BasicFileChooserUI extends FileChooserUI { /* FileView icons */ protected Icon directoryIcon = null; protected Icon fileIcon = null; protected Icon computerIcon = null; protected Icon hardDriveIcon = null; protected Icon floppyDriveIcon = null; protected Icon newFolderIcon = null; protected Icon upFolderIcon = null; protected Icon homeFolderIcon = null; protected Icon listViewIcon = null; protected Icon detailsViewIcon = null; protected int saveButtonMnemonic = 0; protected int openButtonMnemonic = 0; protected int cancelButtonMnemonic = 0; protected int updateButtonMnemonic = 0; protected int helpButtonMnemonic = 0; /** * The mnemonic keycode used for the approve button when a directory * is selected and the current selection mode is not DIRECTORIES_ONLY. * * @since 1.4 */ protected int directoryOpenButtonMnemonic = 0; protected String saveButtonText = null; protected String openButtonText = null; protected String cancelButtonText = null; protected String updateButtonText = null; protected String helpButtonText = null; /** * The label text displayed on the approve button when a directory * is selected and the current selection mode is not DIRECTORIES_ONLY. * * @since 1.4 */ protected String directoryOpenButtonText = null; private String openDialogTitleText = null; private String saveDialogTitleText = null; protected String saveButtonToolTipText = null; protected String openButtonToolTipText = null; protected String cancelButtonToolTipText = null; protected String updateButtonToolTipText = null; protected String helpButtonToolTipText = null; /** * The tooltip text displayed on the approve button when a directory * is selected and the current selection mode is not DIRECTORIES_ONLY. * * @since 1.4 */ protected String directoryOpenButtonToolTipText = null; // Some generic FileChooser functions private Action approveSelectionAction = new ApproveSelectionAction(); private Action cancelSelectionAction = new CancelSelectionAction(); private Action updateAction = new UpdateAction(); private Action newFolderAction = new NewFolderAction(); private Action goHomeAction = new GoHomeAction(); private Action changeToParentDirectoryAction = new ChangeToParentDirectoryAction(); private String newFolderErrorSeparator = null; private String newFolderErrorText = null; private String fileDescriptionText = null; private String directoryDescriptionText = null; private JFileChooser filechooser = null; private boolean directorySelected = false; private File directory = null; private PropertyChangeListener propertyChangeListener = null; private AcceptAllFileFilter acceptAllFileFilter = new AcceptAllFileFilter(); private FileFilter actualFileFilter = null; private GlobFilter globFilter = null; private BasicDirectoryModel model = null; private BasicFileView fileView = new BasicFileView(); // The accessoryPanel is a container to place the JFileChooser accessory component private JPanel accessoryPanel = null; public BasicFileChooserUI(JFileChooser b) { } public void installUI(JComponent c) { accessoryPanel = new JPanel(new BorderLayout()); filechooser = (JFileChooser) c; createModel(); clearIconCache(); installDefaults(filechooser); installComponents(filechooser); installListeners(filechooser); filechooser.applyComponentOrientation(filechooser.getComponentOrientation()); } public void uninstallUI(JComponent c) { uninstallListeners((JFileChooser) filechooser); uninstallComponents((JFileChooser) filechooser); uninstallDefaults((JFileChooser) filechooser); if(accessoryPanel != null) { accessoryPanel.removeAll(); } accessoryPanel = null; getFileChooser().removeAll(); } public void installComponents(JFileChooser fc) { } public void uninstallComponents(JFileChooser fc) { } protected void installListeners(JFileChooser fc) { propertyChangeListener = createPropertyChangeListener(fc); if(propertyChangeListener != null) { fc.addPropertyChangeListener(propertyChangeListener); } fc.addPropertyChangeListener(getModel()); InputMap inputMap = getInputMap(JComponent. WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); SwingUtilities.replaceUIInputMap(fc, JComponent. WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, inputMap); ActionMap actionMap = getActionMap(); SwingUtilities.replaceUIActionMap(fc, actionMap); } InputMap getInputMap(int condition) { if (condition == JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) { return (InputMap)UIManager.get("FileChooser.ancestorInputMap"); } return null; } ActionMap getActionMap() { return createActionMap(); } ActionMap createActionMap() { AbstractAction escAction = new AbstractAction() { public void actionPerformed(ActionEvent e) { getFileChooser().cancelSelection(); } public boolean isEnabled(){ return getFileChooser().isEnabled(); } }; ActionMap map = new ActionMapUIResource(); map.put("approveSelection", getApproveSelectionAction()); map.put("cancelSelection", escAction); map.put("Go Up", getChangeToParentDirectoryAction()); return map; } protected void uninstallListeners(JFileChooser fc) { if(propertyChangeListener != null) { fc.removePropertyChangeListener(propertyChangeListener); } fc.removePropertyChangeListener(getModel()); SwingUtilities.replaceUIInputMap(fc, JComponent. WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, null); SwingUtilities.replaceUIActionMap(fc, null); } protected void installDefaults(JFileChooser fc) { installIcons(fc); installStrings(fc); TransferHandler th = fc.getTransferHandler(); if (th == null || th instanceof UIResource) { fc.setTransferHandler(defaultTransferHandler); } } protected void installIcons(JFileChooser fc) { directoryIcon = UIManager.getIcon("FileView.directoryIcon"); fileIcon = UIManager.getIcon("FileView.fileIcon"); computerIcon = UIManager.getIcon("FileView.computerIcon"); hardDriveIcon = UIManager.getIcon("FileView.hardDriveIcon"); floppyDriveIcon = UIManager.getIcon("FileView.floppyDriveIcon"); newFolderIcon = UIManager.getIcon("FileChooser.newFolderIcon"); upFolderIcon = UIManager.getIcon("FileChooser.upFolderIcon"); homeFolderIcon = UIManager.getIcon("FileChooser.homeFolderIcon"); detailsViewIcon = UIManager.getIcon("FileChooser.detailsViewIcon"); listViewIcon = UIManager.getIcon("FileChooser.listViewIcon"); } protected void installStrings(JFileChooser fc) { Locale l = fc.getLocale(); newFolderErrorText = UIManager.getString("FileChooser.newFolderErrorText",l); newFolderErrorSeparator = UIManager.getString("FileChooser.newFolderErrorSeparator",l); fileDescriptionText = UIManager.getString("FileChooser.fileDescriptionText",l); directoryDescriptionText = UIManager.getString("FileChooser.directoryDescriptionText",l); saveButtonText = UIManager.getString("FileChooser.saveButtonText",l); openButtonText = UIManager.getString("FileChooser.openButtonText",l); saveDialogTitleText = UIManager.getString("FileChooser.saveDialogTitleText",l); openDialogTitleText = UIManager.getString("FileChooser.openDialogTitleText",l); cancelButtonText = UIManager.getString("FileChooser.cancelButtonText",l); updateButtonText = UIManager.getString("FileChooser.updateButtonText",l); helpButtonText = UIManager.getString("FileChooser.helpButtonText",l); directoryOpenButtonText = UIManager.getString("FileChooser.directoryOpenButtonText",l); saveButtonMnemonic = UIManager.getInt("FileChooser.saveButtonMnemonic"); openButtonMnemonic = UIManager.getInt("FileChooser.openButtonMnemonic"); cancelButtonMnemonic = UIManager.getInt("FileChooser.cancelButtonMnemonic"); updateButtonMnemonic = UIManager.getInt("FileChooser.updateButtonMnemonic"); helpButtonMnemonic = UIManager.getInt("FileChooser.helpButtonMnemonic"); directoryOpenButtonMnemonic = UIManager.getInt("FileChooser.directoryOpenButtonMnemonic"); saveButtonToolTipText = UIManager.getString("FileChooser.saveButtonToolTipText",l); openButtonToolTipText = UIManager.getString("FileChooser.openButtonToolTipText",l); cancelButtonToolTipText = UIManager.getString("FileChooser.cancelButtonToolTipText",l); updateButtonToolTipText = UIManager.getString("FileChooser.updateButtonToolTipText",l); helpButtonToolTipText = UIManager.getString("FileChooser.helpButtonToolTipText",l); directoryOpenButtonToolTipText = UIManager.getString("FileChooser.directoryOpenButtonToolTipText",l); } protected void uninstallDefaults(JFileChooser fc) { uninstallIcons(fc); uninstallStrings(fc); if (fc.getTransferHandler() instanceof UIResource) { fc.setTransferHandler(null); } } protected void uninstallIcons(JFileChooser fc) { directoryIcon = null; fileIcon = null; computerIcon = null; hardDriveIcon = null; floppyDriveIcon = null; newFolderIcon = null; upFolderIcon = null; homeFolderIcon = null; detailsViewIcon = null; listViewIcon = null; } protected void uninstallStrings(JFileChooser fc) { saveButtonText = null; openButtonText = null; cancelButtonText = null; updateButtonText = null; helpButtonText = null; directoryOpenButtonText = null; saveButtonToolTipText = null; openButtonToolTipText = null; cancelButtonToolTipText = null; updateButtonToolTipText = null; helpButtonToolTipText = null; directoryOpenButtonToolTipText = null; } protected void createModel() { model = new BasicDirectoryModel(getFileChooser()); } public BasicDirectoryModel getModel() { return model; } public PropertyChangeListener createPropertyChangeListener(JFileChooser fc) { return null; } public String getFileName() { return null; } public String getDirectoryName() { return null; } public void setFileName(String filename) { } public void setDirectoryName(String dirname) { } public void rescanCurrentDirectory(JFileChooser fc) { } public void ensureFileIsVisible(JFileChooser fc, File f) { } public JFileChooser getFileChooser() { return filechooser; } public JPanel getAccessoryPanel() { return accessoryPanel; } protected JButton getApproveButton(JFileChooser fc) { return null; } public String getApproveButtonToolTipText(JFileChooser fc) { String tooltipText = fc.getApproveButtonToolTipText(); if(tooltipText != null) { return tooltipText; } if(fc.getDialogType() == JFileChooser.OPEN_DIALOG) { return openButtonToolTipText; } else if(fc.getDialogType() == JFileChooser.SAVE_DIALOG) { return saveButtonToolTipText; } return null; } public void clearIconCache() { fileView.clearIconCache(); } // ******************************************** // ************ Create Listeners ************** // ******************************************** public ListSelectionListener createListSelectionListener(JFileChooser fc) { return new SelectionListener(); } protected class DoubleClickListener extends MouseAdapter { JList list; public DoubleClickListener(JList list) { this.list = list; } /** * The JList used for representing the files is created by subclasses, but the * selection is monitored in this class. The TransferHandler installed in the * JFileChooser is also installed in the file list as it is used as the actual * transfer source. The list is updated on a mouse enter to reflect the current * data transfer state of the file chooser. */ public void mouseEntered(MouseEvent e) { TransferHandler th1 = filechooser.getTransferHandler(); TransferHandler th2 = list.getTransferHandler(); if (th1 != th2) { list.setTransferHandler(th1); } if (filechooser.getDragEnabled() != list.getDragEnabled()) { list.setDragEnabled(filechooser.getDragEnabled()); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -