org.pushingpixels.flamingo.api.common
Class AbstractFileViewPanel<T>

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by org.pushingpixels.flamingo.api.common.JCommandButtonPanel
                      extended by org.pushingpixels.flamingo.api.common.AbstractFileViewPanel<T>
Type Parameters:
T - Type tag.
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.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
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
javax.swing.JPanel.AccessibleJPanel
 
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
protected  java.util.Map<java.lang.String,JCommandButton> buttonMap
          Maps from file name to the buttons.
protected  java.util.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
accessibleContext, 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
AbstractFileViewPanel(CommandButtonDisplayState startingState, ProgressListener progressListener)
          Creates a new panel.
AbstractFileViewPanel(int startingDimension, ProgressListener progressListener)
          Creates a new panel.
 
Method Summary
 void cancelMainWorker()
          Cancels the pending processing.
protected abstract  void configureCommandButton(AbstractFileViewPanel.Leaf leaf, JCommandButton button, ResizableIcon icon)
          Configures the specified command button.
 java.util.Map<java.lang.String,JCommandButton> getButtonMap()
          Returns the button map.
protected abstract  java.io.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, java.io.InputStream stream, CommandButtonDisplayState state, java.awt.Dimension dimension)
          Returns the icon for the specified parameters.
 void setFolder(java.util.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, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, 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, transferFocusBackward, 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, hide, 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, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

buttonMap

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


progressListener

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


loadedSet

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

Constructor Detail

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 Detail

setFolder

public void setFolder(java.util.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 java.util.Map<java.lang.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,
                                                  java.io.InputStream stream,
                                                  CommandButtonDisplayState state,
                                                  java.awt.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 java.io.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.