Package org.pushingpixels.flamingo.api.common

# Class AbstractFileViewPanel<T>

java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JPanel
org.pushingpixels.flamingo.api.common.JCommandButtonPanel
org.pushingpixels.flamingo.api.common.AbstractFileViewPanel<T>

Type Parameters:
  `T` - Type tag.

All Implemented Interfaces:
  `ImageObserver`, `MenuContainer`, `Serializable`, `Accessible`, `Scrollable`

public abstract class AbstractFileViewPanel<T> extends JCommandButtonPanel
Panel that hosts file-related command buttons with progress indication and cancellation capabilities.

See Also:
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`AbstractFileViewPanel.Leaf`
Information on the specific file.

## Nested classes/interfaces inherited from class org.pushingpixels.flamingo.api.common.JCommandButtonPanel

`JCommandButtonPanel.LayoutKind`

## Nested classes/interfaces inherited from class javax.swing.JPanel

`JPanel.AccessibleJPanel`

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

`JComponent.AccessibleJComponent`

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

`Container.AccessibleAWTContainer`

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

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

## Field Summary

Fields
Modifier and Type
Field
Description
`protected Map<String,JCommandButton>`
`buttonMap`
Maps from file name to the buttons.
`protected Set<JCommandButton>`
`loadedSet`
Contains the buttons with completely loaded images.
`protected ProgressListener`
`progressListener`
Progress listener to report back on loaded images.

### Fields inherited from class org.pushingpixels.flamingo.api.common.JCommandButtonPanel

`buttonGroup, buttons, currDimension, currState, groupTitles, isSingleSelectionMode, layoutKind, maxButtonColumns, maxButtonRows, toShowGroupLabels, uiClassID`

### 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

`accessibleContext, 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
Description
`AbstractFileViewPanel(int startingDimension, ProgressListener progressListener)`
Creates a new panel.
`AbstractFileViewPanel(CommandButtonDisplayState startingState, ProgressListener progressListener)`
Creates a new panel.

## Method Summary

Modifier and Type
Method
Description
`void`
`cancelMainWorker()`
Cancels the pending processing.
`protected abstract void`
`configureCommandButton(AbstractFileViewPanel.Leaf leaf, JCommandButton button, ResizableIcon icon)`
Configures the specified command button.
`Map<String,JCommandButton>`
`getButtonMap()`
Returns the button map.
`protected abstract InputStream`
`getLeafContent(T leaf)`
Returns the input stream with the file contents.
`int`
`getLoadedIconCount()`
Returns the number of loaded icons.
`protected abstract ResizableIcon`
`getResizableIcon(AbstractFileViewPanel.Leaf leaf, InputStream stream, CommandButtonDisplayState state, Dimension dimension)`
Returns the icon for the specified parameters.
`void`
`setFolder(List<StringValuePair<T>> leafs)`
Sets the current entries to show.
`protected abstract boolean`
`toShowFile(StringValuePair<T> pair)`
Returns indication whether the specified file should be shown on this panel.

### Methods inherited from class org.pushingpixels.flamingo.api.common.JCommandButtonPanel

`addButtonGroup, addButtonGroup, addButtonToGroup, addButtonToGroup, addButtonToLastGroup, addChangeListener, fireStateChanged, getButtonCount, getGroupButtons, getGroupCount, getGroupTitleAt, getLayoutKind, getMaxButtonColumns, getMaxButtonRows, getPreferredScrollableViewportSize, getScrollableBlockIncrement, getScrollableTracksViewportHeight, getScrollableTracksViewportWidth, getScrollableUnitIncrement, getSelectedButton, getUIClassID, isToShowGroupLabels, removeAllGroups, removeButtonFromGroup, removeButtonGroup, removeChangeListener, setIconDimension, setIconState, setLayoutKind, setMaxButtonColumns, setMaxButtonRows, setSingleSelectionMode, setToShowGroupLabels, updateUI`

### Methods inherited from class javax.swing.JPanel

`getAccessibleContext, getUI, paramString, setUI`

### 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, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, 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 Details

### buttonMap

protected Map<String,JCommandButton> buttonMap
Maps from file name to the buttons.

### progressListener

protected ProgressListener progressListener
Progress listener to report back on loaded images.

### loadedSet

protected Set<JCommandButton> loadedSet
Contains the buttons with completely loaded images.

## Constructor Details

### AbstractFileViewPanel

public AbstractFileViewPanel(int startingDimension, ProgressListener progressListener)
Creates a new panel.

Parameters:
  `startingDimension` - Initial dimension for icons.
  `progressListener` - Progress listener to report back on loaded icons.

### AbstractFileViewPanel

public AbstractFileViewPanel(CommandButtonDisplayState startingState, ProgressListener progressListener)
Creates a new panel.

Parameters:
  `startingState` - Initial state for icons.
  `progressListener` - Progress listener to report back on loaded icons.

## Method Details

### setFolder

public void setFolder(List<StringValuePair<T>> leafs)
Sets the current entries to show. The current contents of the panel are discarded. For each matching entry determined by the `toShowFile(StringValuePair)` call, a new `JCommandButton` hosting an the matching implementation of `ResizableIcon` is added to the panel.

Parameters:
  `leafs` - Information on the entries to show in the panel.

### getLoadedIconCount

public int getLoadedIconCount()
Returns the number of loaded icons.

Returns:
  The number of loaded icons.

### cancelMainWorker

public void cancelMainWorker()
Cancels the pending processing.

### getButtonMap

public Map<String,JCommandButton> getButtonMap()
Returns the button map.

Returns:
  Unmodifiable view on the button map.

### toShowFile

protected abstract boolean toShowFile(StringValuePair<T> pair)
Returns indication whether the specified file should be shown on this panel.

Parameters:
  `pair` - Information on the file.
Returns:
  `true` if the specified file should be shown on this panel, `false` otherwise.

### getResizableIcon

protected abstract ResizableIcon getResizableIcon(AbstractFileViewPanel.Leaf leaf, InputStream stream, CommandButtonDisplayState state, Dimension dimension)
Returns the icon for the specified parameters.

Parameters:
  `leaf` - Information on the file.
  `stream` - Input stream with the file contents.
  `state` - Icon state.
  `dimension` - Icon dimension.
Returns:
  File icon.

### configureCommandButton

protected abstract void configureCommandButton(AbstractFileViewPanel.Leaf leaf, JCommandButton button, ResizableIcon icon)
Configures the specified command button. Can be used to wire additional behavior, such as tooltips or action listeners if the specific view panel implementation requires it.

Parameters:
  `leaf` - Information on the file "behind" the button.
  `button` - Button to configure.
  `icon` - Button icon.

### getLeafContent

protected abstract InputStream getLeafContent(T leaf)
Returns the input stream with the file contents.

Parameters:
  `leaf` - Leaf (file behind a command button on this panel).
Returns:
  Input stream with the file contents.