de.caff.gimmicks.swing

## Class ResizableFileChooser

- java.lang.Object
- - java.awt.Component
  - - java.awt.Container
    - - javax.swing.JComponent
      - - javax.swing.JFileChooser
        - - de.caff.gimmicks.swing.ResizableFileChooser

- All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

      public class ResizableFileChooser
      extends javax.swing.JFileChooser

  File chooser which keeps the size between calls.
  Author:
    Rammi
  See Also:
    Serialized Form

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class javax.swing.JFileChooser

      `javax.swing.JFileChooser.AccessibleJFileChooser`

    - ### Nested classes/interfaces inherited from class javax.swing.JComponent

      `javax.swing.JComponent.AccessibleJComponent`

    - ### Nested classes/interfaces inherited from class java.awt.Container

      `java.awt.Container.AccessibleAWTContainer`

    - ### Nested classes/interfaces inherited from class java.awt.Component

      `java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static SizePreferenceProperty` | `PP_FILE_CHOOSER_SIZE` Load/store this preference property to keep size changes between separate runs of the program.

    - ### Fields inherited from class javax.swing.JFileChooser

      `ACCEPT_ALL_FILE_FILTER_USED_CHANGED_PROPERTY, accessibleContext, ACCESSORY_CHANGED_PROPERTY, APPROVE_BUTTON_MNEMONIC_CHANGED_PROPERTY, APPROVE_BUTTON_TEXT_CHANGED_PROPERTY, APPROVE_BUTTON_TOOL_TIP_TEXT_CHANGED_PROPERTY, APPROVE_OPTION, APPROVE_SELECTION, CANCEL_OPTION, CANCEL_SELECTION, CHOOSABLE_FILE_FILTER_CHANGED_PROPERTY, CONTROL_BUTTONS_ARE_SHOWN_CHANGED_PROPERTY, CUSTOM_DIALOG, DIALOG_TITLE_CHANGED_PROPERTY, DIALOG_TYPE_CHANGED_PROPERTY, DIRECTORIES_ONLY, DIRECTORY_CHANGED_PROPERTY, ERROR_OPTION, FILE_FILTER_CHANGED_PROPERTY, FILE_HIDING_CHANGED_PROPERTY, FILE_SELECTION_MODE_CHANGED_PROPERTY, FILE_SYSTEM_VIEW_CHANGED_PROPERTY, FILE_VIEW_CHANGED_PROPERTY, FILES_AND_DIRECTORIES, FILES_ONLY, MULTI_SELECTION_ENABLED_CHANGED_PROPERTY, OPEN_DIALOG, SAVE_DIALOG, SELECTED_FILE_CHANGED_PROPERTY, SELECTED_FILES_CHANGED_PROPERTY`

    - ### Fields inherited from class javax.swing.JComponent

      `listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW`

    - ### Fields inherited from class java.awt.Component

      `BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT`

    - ### Fields inherited from interface java.awt.image.ImageObserver

      `ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ResizableFileChooser()` Constructs a `JFileChooser` pointing to the user's default directory.
    `ResizableFileChooser(DirectoryPreferenceProperty directoryPreferenceProperty)` Constructs a `JFileChooser` pointing to the user's default directory.
    `ResizableFileChooser(DirectoryPreferenceProperty directoryPreferenceProperty, java.io.File currentDirectory)` Constructs a `JFileChooser` using the given `File` as the path.
    `ResizableFileChooser(DirectoryPreferenceProperty directoryPreferenceProperty, java.io.File currentDirectory, javax.swing.filechooser.FileSystemView fsv)` Constructs a `JFileChooser` using the given current directory and `FileSystemView`.
    `ResizableFileChooser(DirectoryPreferenceProperty directoryPreferenceProperty, javax.swing.filechooser.FileSystemView fsv)` Constructs a `JFileChooser` using the given `FileSystemView`.
    `ResizableFileChooser(DirectoryPreferenceProperty directoryPreferenceProperty, java.lang.String currentDirectoryPath)` Constructs a `JFileChooser` using the given path.
    `ResizableFileChooser(DirectoryPreferenceProperty directoryPreferenceProperty, java.lang.String currentDirectoryPath, javax.swing.filechooser.FileSystemView fsv)` Constructs a `JFileChooser` using the given current directory path and `FileSystemView`.
    `ResizableFileChooser(java.io.File currentDirectory)` Constructs a `JFileChooser` using the given `File` as the path.
    `ResizableFileChooser(java.io.File currentDirectory, javax.swing.filechooser.FileSystemView fsv)` Constructs a `JFileChooser` using the given current directory and `FileSystemView`.
    `ResizableFileChooser(javax.swing.filechooser.FileSystemView fsv)` Constructs a `JFileChooser` using the given `FileSystemView`.
    `ResizableFileChooser(java.lang.String currentDirectoryPath)` Constructs a `JFileChooser` using the given path.
    `ResizableFileChooser(java.lang.String currentDirectoryPath, javax.swing.filechooser.FileSystemView fsv)` Constructs a `JFileChooser` using the given current directory path and `FileSystemView`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected javax.swing.JDialog` | `createDialog(java.awt.Component parent)` Creates and returns a new `JDialog` wrapping `this` centered on the `parent` in the `parent`'s frame.
    `int` | `showDialog(java.awt.Component parent, java.lang.String approveButtonText)` Pops a custom file chooser dialog with a custom approve button.

    - ### Methods inherited from class javax.swing.JFileChooser

      `accept, addActionListener, addChoosableFileFilter, approveSelection, cancelSelection, changeToParentDirectory, ensureFileIsVisible, fireActionPerformed, getAcceptAllFileFilter, getAccessibleContext, getAccessory, getActionListeners, getApproveButtonMnemonic, getApproveButtonText, getApproveButtonToolTipText, getChoosableFileFilters, getControlButtonsAreShown, getCurrentDirectory, getDescription, getDialogTitle, getDialogType, getDragEnabled, getFileFilter, getFileSelectionMode, getFileSystemView, getFileView, getIcon, getName, getSelectedFile, getSelectedFiles, getTypeDescription, getUI, getUIClassID, isAcceptAllFileFilterUsed, isDirectorySelectionEnabled, isFileHidingEnabled, isFileSelectionEnabled, isMultiSelectionEnabled, isTraversable, paramString, removeActionListener, removeChoosableFileFilter, rescanCurrentDirectory, resetChoosableFileFilters, setAcceptAllFileFilterUsed, setAccessory, setApproveButtonMnemonic, setApproveButtonMnemonic, setApproveButtonText, setApproveButtonToolTipText, setControlButtonsAreShown, setCurrentDirectory, setDialogTitle, setDialogType, setDragEnabled, setFileFilter, setFileHidingEnabled, setFileSelectionMode, setFileSystemView, setFileView, setMultiSelectionEnabled, setSelectedFile, setSelectedFiles, setup, showOpenDialog, showSaveDialog, updateUI`

    - ### Methods inherited from class javax.swing.JComponent

      `addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update`

    - ### Methods inherited from class java.awt.Container

      `add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree`

    - ### Methods inherited from class java.awt.Component

      `action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### PP_FILE_CHOOSER_SIZE

          public static final SizePreferenceProperty PP_FILE_CHOOSER_SIZE

      Load/store this preference property to keep size changes between separate runs of the program.

  - ### Constructor Detail

    - #### ResizableFileChooser

          public ResizableFileChooser()

      Constructs a `JFileChooser` pointing to the user's default directory. This default depends on the operating system. It is typically the "My Documents" folder on Windows, and the user's home directory on Unix.

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      java.lang.String currentDirectoryPath)

      Constructs a `JFileChooser` using the given path. Passing in a `null` string causes the file chooser to point to the user's default directory. This default depends on the operating system. It is typically the "My Documents" folder on Windows, and the user's home directory on Unix.
      Parameters:
        `currentDirectoryPath` - a `String` giving the path to a file or directory

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      java.io.File currentDirectory)

      Constructs a `JFileChooser` using the given `File` as the path. Passing in a `null` file causes the file chooser to point to the user's default directory. This default depends on the operating system. It is typically the "My Documents" folder on Windows, and the user's home directory on Unix.
      Parameters:
        `currentDirectory` - a `File` object specifying the path to a file or directory

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      javax.swing.filechooser.FileSystemView fsv)

      Constructs a `JFileChooser` using the given `FileSystemView`.
      Parameters:
        `fsv` - file system view, or `null` for default

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      java.io.File currentDirectory,
                                      @Nullable
                                      javax.swing.filechooser.FileSystemView fsv)

      Constructs a `JFileChooser` using the given current directory and `FileSystemView`.
      Parameters:
        `currentDirectory` - current directory, or `null` to use the default directory
        `fsv` - file system view, or `null` for default

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      java.lang.String currentDirectoryPath,
                                      @Nullable
                                      javax.swing.filechooser.FileSystemView fsv)

      Constructs a `JFileChooser` using the given current directory path and `FileSystemView`.
      Parameters:
        `currentDirectoryPath` - path of current directory, or `null` to use the default directory
        `fsv` - file system view, or `null` for default

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      DirectoryPreferenceProperty directoryPreferenceProperty)

      Constructs a `JFileChooser` pointing to the user's default directory. This default depends on the operating system. It is typically the "My Documents" folder on Windows, and the user's home directory on Unix.
      Parameters:
        `directoryPreferenceProperty` - preference property for storing/restoring the last directory used, or `null` to ignore

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      DirectoryPreferenceProperty directoryPreferenceProperty,
                                      @Nullable
                                      java.lang.String currentDirectoryPath)

      Constructs a `JFileChooser` using the given path. Passing in a `null` string causes the file chooser to point to the user's default directory. This default depends on the operating system. It is typically the "My Documents" folder on Windows, and the user's home directory on Unix.
      Parameters:
        `directoryPreferenceProperty` - preference property for storing/restoring the last directory used, or `null` to ignore
        `currentDirectoryPath` - a `String` giving the path to a file or directory

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      DirectoryPreferenceProperty directoryPreferenceProperty,
                                      @Nullable
                                      java.io.File currentDirectory)

      Constructs a `JFileChooser` using the given `File` as the path. Passing in a `null` file causes the file chooser to point to the user's default directory. This default depends on the operating system. It is typically the "My Documents" folder on Windows, and the user's home directory on Unix.
      Parameters:
        `directoryPreferenceProperty` - preference property for storing/restoring the last directory used, or `null` to ignore
        `currentDirectory` - a `File` object specifying the path to a file or directory

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      DirectoryPreferenceProperty directoryPreferenceProperty,
                                      javax.swing.filechooser.FileSystemView fsv)

      Constructs a `JFileChooser` using the given `FileSystemView`.
      Parameters:
        `directoryPreferenceProperty` - preference property for storing/restoring the last directory used, or `null` to ignore
        `fsv` - file system view, or `null` for default

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      DirectoryPreferenceProperty directoryPreferenceProperty,
                                      @Nullable
                                      java.io.File currentDirectory,
                                      @Nullable
                                      javax.swing.filechooser.FileSystemView fsv)

      Constructs a `JFileChooser` using the given current directory and `FileSystemView`.
      Parameters:
        `directoryPreferenceProperty` - preference property for storing/restoring the last directory used, or `null` to ignore
        `currentDirectory` - current directory, or `null` to use the default directory
        `fsv` - file system view, or `null` for default

    - #### ResizableFileChooser

          public ResizableFileChooser(@Nullable
                                      DirectoryPreferenceProperty directoryPreferenceProperty,
                                      @Nullable
                                      java.lang.String currentDirectoryPath,
                                      @Nullable
                                      javax.swing.filechooser.FileSystemView fsv)

      Constructs a `JFileChooser` using the given current directory path and `FileSystemView`.
      Parameters:
        `directoryPreferenceProperty` - preference property for storing/restoring the last directory used, or `null` to ignore
        `currentDirectoryPath` - path of current directory, or `null` to use the default directory
        `fsv` - file system view, or `null` for default

  - ### Method Detail

    - #### createDialog

          protected javax.swing.JDialog createDialog(@Nullable
                                                     java.awt.Component parent)
                                              throws java.awt.HeadlessException

      Creates and returns a new `JDialog` wrapping `this` centered on the `parent` in the `parent`'s frame. This method can be overriden to further manipulate the dialog, to disable resizing, set the location, etc. Example:

               class MyFileChooser extends JFileChooser {
                   protected JDialog createDialog(Component parent) throws HeadlessException {
                       JDialog dialog = super.createDialog(parent);
                       dialog.setLocation(300, 200);
                       dialog.setResizable(false);
                       return dialog;
                   }
               }

      Overrides:
        `createDialog` in class `javax.swing.JFileChooser`
      Parameters:
        `parent` - the parent component of the dialog; can be `null`
      Returns:
        a new `JDialog` containing this instance
      Throws:
        `java.awt.HeadlessException` - if GraphicsEnvironment.isHeadless() returns true.
      Since:
        1.4
      See Also:
        `GraphicsEnvironment.isHeadless()`

    - #### showDialog

          public int showDialog(@Nullable
                                java.awt.Component parent,
                                @Nullable
                                java.lang.String approveButtonText)
                         throws java.awt.HeadlessException

      Pops a custom file chooser dialog with a custom approve button.
      Overrides:
        `showDialog` in class `javax.swing.JFileChooser`
      Parameters:
        `parent` - the parent component of the dialog; can be `null`
        `approveButtonText` - the text of the `ApproveButton`
      Returns:
        the return state of the file chooser on popdown:
        - JFileChooser.CANCEL_OPTION
        - JFileChooser.APPROVE_OPTION
        - JFileChooser.ERROR_OPTION if an error occurs or the dialog is dismissed
      Throws:
        `java.awt.HeadlessException` - if GraphicsEnvironment.isHeadless() returns true.
      See Also:
        `GraphicsEnvironment.isHeadless()`