javax.swing.plaf.metal
Class MetalFileChooserUI

java.lang.Object
  extended byjavax.swing.plaf.ComponentUI
      extended byjavax.swing.plaf.FileChooserUI
          extended byjavax.swing.plaf.basic.BasicFileChooserUI
              extended byjavax.swing.plaf.metal.MetalFileChooserUI

public class MetalFileChooserUI
extends BasicFileChooserUI

Metal L&F implementation of a FileChooser.

Author:
Jeff Dinkins

Nested Class Summary
private  class MetalFileChooserUI.AlignedLabel
           
private static class MetalFileChooserUI.ButtonAreaLayout
          ButtonAreaLayout behaves in a similar manner to FlowLayout.
private  class MetalFileChooserUI.DelayedSelectionUpdater
           
(package private)  class MetalFileChooserUI.DetailsTableCellRenderer
           
(package private)  class MetalFileChooserUI.DetailsTableModel
           
protected  class MetalFileChooserUI.DirectoryComboBoxAction
          Acts when DirectoryComboBox has changed the selected item.
protected  class MetalFileChooserUI.DirectoryComboBoxModel
          Data model for a type-face selection combo-box.
(package private)  class MetalFileChooserUI.DirectoryComboBoxRenderer
           
(package private)  class MetalFileChooserUI.EditActionListener
           
protected  class MetalFileChooserUI.FileRenderer
           
protected  class MetalFileChooserUI.FilterComboBoxModel
          Data model for a type-face selection combo-box.
 class MetalFileChooserUI.FilterComboBoxRenderer
          Render different type sizes and styles.
(package private)  class MetalFileChooserUI.IndentIcon
           
protected  class MetalFileChooserUI.SingleClickListener
           
 
Nested classes inherited from class javax.swing.plaf.basic.BasicFileChooserUI
BasicFileChooserUI.AcceptAllFileFilter, BasicFileChooserUI.ApproveSelectionAction, BasicFileChooserUI.BasicFileView, BasicFileChooserUI.CancelSelectionAction, BasicFileChooserUI.ChangeToParentDirectoryAction, BasicFileChooserUI.DoubleClickListener, BasicFileChooserUI.GoHomeAction, BasicFileChooserUI.NewFolderAction, BasicFileChooserUI.SelectionListener, BasicFileChooserUI.UpdateAction
 
Field Summary
private  JButton approveButton
           
private  JPanel bottomPanel
           
private  JPanel buttonPanel
           
private  JButton cancelButton
           
private  JPanel centerPanel
           
private static int COLUMN_COLCOUNT
           
private static int COLUMN_FILEATTR
           
private static int COLUMN_FILEDATE
           
private static int COLUMN_FILENAME
           
private static int COLUMN_FILESIZE
           
private static int COLUMN_FILETYPE
           
private  int[] COLUMN_WIDTHS
           
private  JPanel currentViewPanel
           
private  JTable detailsTable
           
private  JToggleButton detailsViewButton
           
private  String detailsViewButtonAccessibleName
           
private  String detailsViewButtonToolTipText
           
private  JPanel detailsViewPanel
           
private  JComboBox directoryComboBox
           
private  Action directoryComboBoxAction
           
private  MetalFileChooserUI.DirectoryComboBoxModel directoryComboBoxModel
           
(package private)  JTextField editCell
           
(package private)  File editFile
           
private  FocusListener editorFocusListener
           
(package private)  int editX
           
private  String fileAttrHeaderText
           
private  String fileDateHeaderText
           
private  String fileNameHeaderText
           
private  int fileNameLabelMnemonic
           
private  String fileNameLabelText
           
private  JTextField fileNameTextField
           
private  String fileSizeHeaderText
           
private  int filesOfTypeLabelMnemonic
           
private  String filesOfTypeLabelText
           
private  String fileTypeHeaderText
           
private  JComboBox filterComboBox
           
private  MetalFileChooserUI.FilterComboBoxModel filterComboBoxModel
           
private  String homeFolderAccessibleName
           
private  String homeFolderToolTipText
           
private static Dimension hstrut11
           
private static Dimension hstrut5
           
(package private)  int lastIndex
           
private  JList list
           
private static int LIST_PREF_HEIGHT
           
private static Dimension LIST_PREF_SIZE
           
private static int LIST_PREF_WIDTH
           
private  ListSelectionModel listSelectionModel
           
private  JToggleButton listViewButton
           
private  String listViewButtonAccessibleName
           
private  String listViewButtonToolTipText
           
private  JPanel listViewPanel
           
private  JLabel lookInLabel
           
private  int lookInLabelMnemonic
           
private  String lookInLabelText
           
private static int MIN_HEIGHT
           
private static Dimension MIN_SIZE
           
private static int MIN_WIDTH
           
private  String newFolderAccessibleName
           
private  String newFolderToolTipText
           
private static int PREF_HEIGHT
           
private static Dimension PREF_SIZE
           
private static int PREF_WIDTH
           
private  String saveInLabelText
           
private static Insets shrinkwrap
           
(package private) static int space
           
private  String upFolderAccessibleName
           
private  String upFolderToolTipText
           
private  boolean useShellFolder
           
private static Dimension vstrut5
           
 
Fields inherited from class javax.swing.plaf.basic.BasicFileChooserUI
cancelButtonMnemonic, cancelButtonText, cancelButtonToolTipText, computerIcon, detailsViewIcon, directoryIcon, directoryOpenButtonMnemonic, directoryOpenButtonText, directoryOpenButtonToolTipText, fileIcon, floppyDriveIcon, hardDriveIcon, helpButtonMnemonic, helpButtonText, helpButtonToolTipText, homeFolderIcon, listViewIcon, newFolderIcon, openButtonMnemonic, openButtonText, openButtonToolTipText, saveButtonMnemonic, saveButtonText, saveButtonToolTipText, updateButtonMnemonic, updateButtonText, updateButtonToolTipText, upFolderIcon
 
Constructor Summary
MetalFileChooserUI(JFileChooser filechooser)
           
 
Method Summary
protected  void addControlButtons()
           
private  void applyEdit()
           
private  void cancelEdit()
           
protected  ActionMap createActionMap()
           
protected  JPanel createDetailsView(JFileChooser fc)
           
protected  MetalFileChooserUI.DirectoryComboBoxModel createDirectoryComboBoxModel(JFileChooser fc)
           
protected  MetalFileChooserUI.DirectoryComboBoxRenderer createDirectoryComboBoxRenderer(JFileChooser fc)
           
protected  MetalFileChooserUI.FilterComboBoxModel createFilterComboBoxModel()
           
protected  MetalFileChooserUI.FilterComboBoxRenderer createFilterComboBoxRenderer()
           
protected  JPanel createList(JFileChooser fc)
           
 ListSelectionListener createListSelectionListener(JFileChooser fc)
          Creates a selection listener for the list of files and directories.
 java.beans.PropertyChangeListener createPropertyChangeListener(JFileChooser fc)
           
private  MouseListener createSingleClickListener(JFileChooser fc, JList list)
           
static ComponentUI createUI(JComponent c)
          Returns an instance of the UI delegate for the specified component.
private  void doAccessoryChanged(java.beans.PropertyChangeEvent e)
           
private  void doApproveButtonMnemonicChanged(java.beans.PropertyChangeEvent e)
           
private  void doApproveButtonTextChanged(java.beans.PropertyChangeEvent e)
           
private  void doControlButtonsChanged(java.beans.PropertyChangeEvent e)
           
private  void doDialogTypeChanged(java.beans.PropertyChangeEvent e)
           
private  void doDirectoryChanged(java.beans.PropertyChangeEvent e)
           
private  void doFileSelectionModeChanged(java.beans.PropertyChangeEvent e)
           
private  void doFilterChanged(java.beans.PropertyChangeEvent e)
           
private  void doMultiSelectionChanged(java.beans.PropertyChangeEvent e)
           
private  void doSelectedFileChanged(java.beans.PropertyChangeEvent e)
           
private  void doSelectedFilesChanged(java.beans.PropertyChangeEvent e)
           
private  void editFileName(int index)
           
 void ensureFileIsVisible(JFileChooser fc, File f)
           
private  void ensureIndexIsVisible(int i)
           
private  String fileNameString(File file)
           
private  String fileNameString(File[] files)
           
private  void fixNameColumnWidth(int viewWidth)
           
protected  ActionMap getActionMap()
           
protected  JButton getApproveButton(JFileChooser fc)
           
protected  JPanel getBottomPanel()
           
protected  JPanel getButtonPanel()
           
 String getDirectoryName()
           
private  int getEditIndex()
           
 String getFileName()
           
 Dimension getMaximumSize(JComponent c)
          Returns the maximum size of the JFileChooser.
 Dimension getMinimumSize(JComponent c)
          Returns the minimum size of the JFileChooser.
 Dimension getPreferredSize(JComponent c)
          Returns the preferred size of the specified JFileChooser.
private static void groupLabels(MetalFileChooserUI.AlignedLabel[] group)
           
 void installComponents(JFileChooser fc)
           
protected  void installListeners(JFileChooser fc)
           
protected  void installStrings(JFileChooser fc)
           
 void installUI(JComponent c)
          Configures the specified component appropriate for the look and feel.
protected  void removeControlButtons()
           
 void rescanCurrentDirectory(JFileChooser fc)
           
private  void resetEditIndex()
           
 void setDirectoryName(String dirname)
           
protected  void setDirectorySelected(boolean directorySelected)
          Property to remember whether a directory is currently selected in the UI.
private  void setEditIndex(int i)
           
 void setFileName(String filename)
           
(package private)  void setFileSelected()
           
 void uninstallComponents(JFileChooser fc)
           
 void uninstallUI(JComponent c)
          Reverses configuration which was done on the specified component during installUI.
private  void updateUseShellFolder()
           
 void valueChanged(ListSelectionEvent e)
           
 
Methods inherited from class javax.swing.plaf.basic.BasicFileChooserUI
clearIconCache, createDoubleClickListener, createModel, getAcceptAllFileFilter, getAccessoryPanel, getApproveButtonMnemonic, getApproveButtonText, getApproveButtonToolTipText, getApproveSelectionAction, getCancelSelectionAction, getChangeToParentDirectoryAction, getDialogTitle, getDirectory, getFileChooser, getFileView, getGoHomeAction, getModel, getNewFolderAction, getUpdateAction, installDefaults, installIcons, isDirectorySelected, setDirectory, uninstallDefaults, uninstallIcons, uninstallListeners, uninstallStrings
 
Methods inherited from class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount, paint, update
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

centerPanel

private JPanel centerPanel

lookInLabel

private JLabel lookInLabel

directoryComboBox

private JComboBox directoryComboBox

directoryComboBoxModel

private MetalFileChooserUI.DirectoryComboBoxModel directoryComboBoxModel

directoryComboBoxAction

private Action directoryComboBoxAction

filterComboBoxModel

private MetalFileChooserUI.FilterComboBoxModel filterComboBoxModel

fileNameTextField

private JTextField fileNameTextField

listViewButton

private JToggleButton listViewButton

detailsViewButton

private JToggleButton detailsViewButton

listViewPanel

private JPanel listViewPanel

detailsViewPanel

private JPanel detailsViewPanel

currentViewPanel

private JPanel currentViewPanel

editorFocusListener

private FocusListener editorFocusListener

useShellFolder

private boolean useShellFolder

listSelectionModel

private ListSelectionModel listSelectionModel

list

private JList list

detailsTable

private JTable detailsTable

approveButton

private JButton approveButton

cancelButton

private JButton cancelButton

buttonPanel

private JPanel buttonPanel

bottomPanel

private JPanel bottomPanel

filterComboBox

private JComboBox filterComboBox

hstrut5

private static final Dimension hstrut5

hstrut11

private static final Dimension hstrut11

vstrut5

private static final Dimension vstrut5

shrinkwrap

private static final Insets shrinkwrap

PREF_WIDTH

private static int PREF_WIDTH

PREF_HEIGHT

private static int PREF_HEIGHT

PREF_SIZE

private static Dimension PREF_SIZE

MIN_WIDTH

private static int MIN_WIDTH

MIN_HEIGHT

private static int MIN_HEIGHT

MIN_SIZE

private static Dimension MIN_SIZE

LIST_PREF_WIDTH

private static int LIST_PREF_WIDTH

LIST_PREF_HEIGHT

private static int LIST_PREF_HEIGHT

LIST_PREF_SIZE

private static Dimension LIST_PREF_SIZE

COLUMN_FILENAME

private static final int COLUMN_FILENAME
See Also:
Constant Field Values

COLUMN_FILESIZE

private static final int COLUMN_FILESIZE
See Also:
Constant Field Values

COLUMN_FILETYPE

private static final int COLUMN_FILETYPE
See Also:
Constant Field Values

COLUMN_FILEDATE

private static final int COLUMN_FILEDATE
See Also:
Constant Field Values

COLUMN_FILEATTR

private static final int COLUMN_FILEATTR
See Also:
Constant Field Values

COLUMN_COLCOUNT

private static final int COLUMN_COLCOUNT
See Also:
Constant Field Values

COLUMN_WIDTHS

private int[] COLUMN_WIDTHS

lookInLabelMnemonic

private int lookInLabelMnemonic

lookInLabelText

private String lookInLabelText

saveInLabelText

private String saveInLabelText

fileNameLabelMnemonic

private int fileNameLabelMnemonic

fileNameLabelText

private String fileNameLabelText

filesOfTypeLabelMnemonic

private int filesOfTypeLabelMnemonic

filesOfTypeLabelText

private String filesOfTypeLabelText

upFolderToolTipText

private String upFolderToolTipText

upFolderAccessibleName

private String upFolderAccessibleName

homeFolderToolTipText

private String homeFolderToolTipText

homeFolderAccessibleName

private String homeFolderAccessibleName

newFolderToolTipText

private String newFolderToolTipText

newFolderAccessibleName

private String newFolderAccessibleName

listViewButtonToolTipText

private String listViewButtonToolTipText

listViewButtonAccessibleName

private String listViewButtonAccessibleName

detailsViewButtonToolTipText

private String detailsViewButtonToolTipText

detailsViewButtonAccessibleName

private String detailsViewButtonAccessibleName

fileNameHeaderText

private String fileNameHeaderText

fileSizeHeaderText

private String fileSizeHeaderText

fileTypeHeaderText

private String fileTypeHeaderText

fileDateHeaderText

private String fileDateHeaderText

fileAttrHeaderText

private String fileAttrHeaderText

lastIndex

int lastIndex

editFile

File editFile

editX

int editX

editCell

JTextField editCell

space

static final int space
See Also:
Constant Field Values
Constructor Detail

MetalFileChooserUI

public MetalFileChooserUI(JFileChooser filechooser)
Method Detail

createUI

public static ComponentUI createUI(JComponent c)
Description copied from class: ComponentUI
Returns an instance of the UI delegate for the specified component. Each subclass must provide its own static createUI method that returns an instance of that UI delegate subclass. If the UI delegate subclass is stateless, it may return an instance that is shared by multiple components. If the UI delegate is stateful, then it should return a new instance per component. The default implementation of this method throws an error, as it should never be invoked.


installUI

public void installUI(JComponent c)
Description copied from class: ComponentUI
Configures the specified component appropriate for the look and feel. This method is invoked when the ComponentUI instance is being installed as the UI delegate on the specified component. This method should completely configure the component for the look and feel, including the following:
  1. Install any default property values for color, fonts, borders, icons, opacity, etc. on the component. Whenever possible, property values initialized by the client program should not be overridden.
  2. Install a LayoutManager on the component if necessary.
  3. Create/add any required sub-components to the component.
  4. Create/install event listeners on the component.
  5. Create/install a PropertyChangeListener on the component in order to detect and respond to component property changes appropriately.
  6. Install keyboard UI (mnemonics, traversal, etc.) on the component.
  7. Initialize any appropriate instance data.

Overrides:
installUI in class BasicFileChooserUI

uninstallComponents

public void uninstallComponents(JFileChooser fc)
Overrides:
uninstallComponents in class BasicFileChooserUI

installComponents

public void installComponents(JFileChooser fc)
Overrides:
installComponents in class BasicFileChooserUI

updateUseShellFolder

private void updateUseShellFolder()

getButtonPanel

protected JPanel getButtonPanel()

getBottomPanel

protected JPanel getBottomPanel()

installStrings

protected void installStrings(JFileChooser fc)
Overrides:
installStrings in class BasicFileChooserUI

installListeners

protected void installListeners(JFileChooser fc)
Overrides:
installListeners in class BasicFileChooserUI

getActionMap

protected ActionMap getActionMap()

createActionMap

protected ActionMap createActionMap()

createList

protected JPanel createList(JFileChooser fc)

createDetailsView

protected JPanel createDetailsView(JFileChooser fc)

fixNameColumnWidth

private void fixNameColumnWidth(int viewWidth)

createListSelectionListener

public ListSelectionListener createListSelectionListener(JFileChooser fc)
Creates a selection listener for the list of files and directories.

Overrides:
createListSelectionListener in class BasicFileChooserUI
Parameters:
fc - a JFileChooser
Returns:
a ListSelectionListener

createSingleClickListener

private MouseListener createSingleClickListener(JFileChooser fc,
                                                JList list)

getEditIndex

private int getEditIndex()

setEditIndex

private void setEditIndex(int i)

resetEditIndex

private void resetEditIndex()

cancelEdit

private void cancelEdit()

editFileName

private void editFileName(int index)

applyEdit

private void applyEdit()

uninstallUI

public void uninstallUI(JComponent c)
Description copied from class: ComponentUI
Reverses configuration which was done on the specified component during installUI. This method is invoked when this UIComponent instance is being removed as the UI delegate for the specified component. This method should undo the configuration performed in installUI, being careful to leave the JComponent instance in a clean state (no extraneous listeners, look-and-feel-specific property objects, etc.). This should include the following:
  1. Remove any UI-set borders from the component.
  2. Remove any UI-set layout managers on the component.
  3. Remove any UI-added sub-components from the component.
  4. Remove any UI-added event/property listeners from the component.
  5. Remove any UI-installed keyboard UI from the component.
  6. Nullify any allocated instance data objects to allow for GC.

Overrides:
uninstallUI in class BasicFileChooserUI

getPreferredSize

public Dimension getPreferredSize(JComponent c)
Returns the preferred size of the specified JFileChooser. The preferred size is at least as large, in both height and width, as the preferred size recommended by the file chooser's layout manager.

Overrides:
getPreferredSize in class ComponentUI
Parameters:
c - a JFileChooser
Returns:
a Dimension specifying the preferred width and height of the file chooser
See Also:
JComponent.getPreferredSize(), LayoutManager.preferredLayoutSize(java.awt.Container)

getMinimumSize

public Dimension getMinimumSize(JComponent c)
Returns the minimum size of the JFileChooser.

Overrides:
getMinimumSize in class ComponentUI
Parameters:
c - a JFileChooser
Returns:
a Dimension specifying the minimum width and height of the file chooser
See Also:
JComponent.getMinimumSize(), LayoutManager.minimumLayoutSize(java.awt.Container), ComponentUI.getPreferredSize(javax.swing.JComponent)

getMaximumSize

public Dimension getMaximumSize(JComponent c)
Returns the maximum size of the JFileChooser.

Overrides:
getMaximumSize in class ComponentUI
Parameters:
c - a JFileChooser
Returns:
a Dimension specifying the maximum width and height of the file chooser
See Also:
JComponent.getMaximumSize(), LayoutManager2.maximumLayoutSize(java.awt.Container)

setFileSelected

void setFileSelected()

fileNameString

private String fileNameString(File file)

fileNameString

private String fileNameString(File[] files)

doSelectedFileChanged

private void doSelectedFileChanged(java.beans.PropertyChangeEvent e)

doSelectedFilesChanged

private void doSelectedFilesChanged(java.beans.PropertyChangeEvent e)

doDirectoryChanged

private void doDirectoryChanged(java.beans.PropertyChangeEvent e)

doFilterChanged

private void doFilterChanged(java.beans.PropertyChangeEvent e)

doFileSelectionModeChanged

private void doFileSelectionModeChanged(java.beans.PropertyChangeEvent e)

doMultiSelectionChanged

private void doMultiSelectionChanged(java.beans.PropertyChangeEvent e)

doAccessoryChanged

private void doAccessoryChanged(java.beans.PropertyChangeEvent e)

doApproveButtonTextChanged

private void doApproveButtonTextChanged(java.beans.PropertyChangeEvent e)

doDialogTypeChanged

private void doDialogTypeChanged(java.beans.PropertyChangeEvent e)

doApproveButtonMnemonicChanged

private void doApproveButtonMnemonicChanged(java.beans.PropertyChangeEvent e)

doControlButtonsChanged

private void doControlButtonsChanged(java.beans.PropertyChangeEvent e)

createPropertyChangeListener

public java.beans.PropertyChangeListener createPropertyChangeListener(JFileChooser fc)
Overrides:
createPropertyChangeListener in class BasicFileChooserUI

removeControlButtons

protected void removeControlButtons()

addControlButtons

protected void addControlButtons()

ensureIndexIsVisible

private void ensureIndexIsVisible(int i)

ensureFileIsVisible

public void ensureFileIsVisible(JFileChooser fc,
                                File f)
Overrides:
ensureFileIsVisible in class BasicFileChooserUI

rescanCurrentDirectory

public void rescanCurrentDirectory(JFileChooser fc)
Overrides:
rescanCurrentDirectory in class BasicFileChooserUI

getFileName

public String getFileName()
Overrides:
getFileName in class BasicFileChooserUI

setFileName

public void setFileName(String filename)
Overrides:
setFileName in class BasicFileChooserUI

setDirectorySelected

protected void setDirectorySelected(boolean directorySelected)
Property to remember whether a directory is currently selected in the UI. This is normally called by the UI on a selection event.

Overrides:
setDirectorySelected in class BasicFileChooserUI
Parameters:
directorySelected - if a directory is currently selected.
Since:
1.4

getDirectoryName

public String getDirectoryName()
Overrides:
getDirectoryName in class BasicFileChooserUI

setDirectoryName

public void setDirectoryName(String dirname)
Overrides:
setDirectoryName in class BasicFileChooserUI

createDirectoryComboBoxRenderer

protected MetalFileChooserUI.DirectoryComboBoxRenderer createDirectoryComboBoxRenderer(JFileChooser fc)

createDirectoryComboBoxModel

protected MetalFileChooserUI.DirectoryComboBoxModel createDirectoryComboBoxModel(JFileChooser fc)

createFilterComboBoxRenderer

protected MetalFileChooserUI.FilterComboBoxRenderer createFilterComboBoxRenderer()

createFilterComboBoxModel

protected MetalFileChooserUI.FilterComboBoxModel createFilterComboBoxModel()

valueChanged

public void valueChanged(ListSelectionEvent e)

getApproveButton

protected JButton getApproveButton(JFileChooser fc)
Overrides:
getApproveButton in class BasicFileChooserUI

groupLabels

private static void groupLabels(MetalFileChooserUI.AlignedLabel[] group)