Class IconBox

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

    class IconBox
    extends javax.swing.JComponent
    Component which displays the contents of a ListModel as icons. Custom icon and tooltip generation are supported by use of a separate renderer object.
    Since:
    26 Nov 2008
    Author:
    Mark Taylor
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      (package private) static interface  IconBox.CellRenderer
      Defines how list model elements will be rendered as icons and tooltips.
      private class  IconBox.DefaultRenderer
      Default renderer.
      private static class  IconBox.Entry
      Convenience struct-type class which aggregates an icon and a tooltip.
      • 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 Description
      private java.awt.Color disabledBg_  
      private static javax.swing.ListModel EMPTY_LIST_MODEL  
      private java.awt.Color enabledBg_  
      private java.util.List entryList_  
      private int gap_  
      private java.awt.Dimension maxSize_  
      private java.awt.Dimension minSize_  
      private javax.swing.ListModel model_  
      private javax.swing.event.ListDataListener modelListener_  
      private java.awt.Dimension prefSize_  
      private IconBox.CellRenderer renderer_  
      private boolean reversed_  
      private boolean trailing_  
      private int transSize_  
      private boolean vertical_  
      • 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
      IconBox​(int transSize)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static javax.swing.ListModel createEmptyListModel()
      Constructs an immutable list model with no content.
      private IconBox.Entry createEntry​(int index)
      Constructs an Entry object from an object contained in the ListModel, using the currently installed renderer.
      int getIndexAt​(java.awt.Point point)
      Returns the index of the list model element whose icon is displayed at a given point in this component.
      java.awt.Dimension getMaximumSize()  
      java.awt.Dimension getMinimumSize()  
      javax.swing.ListModel getModel()
      Returns the list model used by this component.
      java.awt.Dimension getPreferredSize()  
      IconBox.CellRenderer getRenderer()
      Returns the object which turns list model contents into display things.
      boolean getReversed()
      Returns the first-to-last ordering of the icons in this component.
      java.lang.String getToolTipText​(java.awt.event.MouseEvent evt)  
      boolean getTrailing()
      Returns the alignment of the icons in this component.
      int getTransverseSize()
      Returns the transverse dimension in pixels of this box.
      boolean getVertical()
      Returns whether icons will be lined up horizontally or vertically.
      protected void paintComponent​(java.awt.Graphics g)  
      private void refreshState()
      Refreshes the list-related state from scratch.
      void setEnabled​(boolean enabled)  
      void setMaximumSize​(java.awt.Dimension maxSize)  
      void setMinimumSize​(java.awt.Dimension minSize)  
      void setModel​(javax.swing.ListModel model)
      Sets the list model for use with this component.
      void setPreferredSize​(java.awt.Dimension prefSize)  
      void setRenderer​(IconBox.CellRenderer renderer)
      Sets the object which is used to turn list model contents into the icons and tooltips displayed by this component.
      void setReversed​(boolean reversed)
      Sets the first-to-last ordering of the icons in this component.
      void setTrailing​(boolean trailing)
      Sets the alignment of the icons in this component.
      void setTransverseSize​(int transSize)
      Sets the transverse dimension in pixels of this box.
      void setVertical​(boolean vertical)
      Sets whether icons will be lined up in a horizontal or vertical line.
      • 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, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, 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, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setNextFocusableComponent, setOpaque, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
      • 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, getAccessibleContext, 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 Detail

      • entryList_

        private final java.util.List entryList_
      • modelListener_

        private final javax.swing.event.ListDataListener modelListener_
      • enabledBg_

        private final java.awt.Color enabledBg_
      • disabledBg_

        private final java.awt.Color disabledBg_
      • vertical_

        private boolean vertical_
      • trailing_

        private boolean trailing_
      • reversed_

        private boolean reversed_
      • transSize_

        private int transSize_
      • gap_

        private int gap_
      • model_

        private javax.swing.ListModel model_
      • minSize_

        private java.awt.Dimension minSize_
      • maxSize_

        private java.awt.Dimension maxSize_
      • prefSize_

        private java.awt.Dimension prefSize_
      • EMPTY_LIST_MODEL

        private static final javax.swing.ListModel EMPTY_LIST_MODEL
    • Constructor Detail

      • IconBox

        public IconBox​(int transSize)
        Constructor.
        Parameters:
        transSize - the transverse (horizontal/vertical) size available for icons in pixels
    • Method Detail

      • setVertical

        public void setVertical​(boolean vertical)
        Sets whether icons will be lined up in a horizontal or vertical line.
        Parameters:
        vertical - true for vertical run, false for horizontal
      • getVertical

        public boolean getVertical()
        Returns whether icons will be lined up horizontally or vertically.
        Returns:
        false for hormizontal run, true for vertical
      • setTrailing

        public void setTrailing​(boolean trailing)
        Sets the alignment of the icons in this component.
        Parameters:
        trailing - false for left/top, true for right/bottom alignment
      • getTrailing

        public boolean getTrailing()
        Returns the alignment of the icons in this component.
        Returns:
        false for left/top, true for right/bottom alignment
      • setReversed

        public void setReversed​(boolean reversed)
        Sets the first-to-last ordering of the icons in this component.
        Parameters:
        reversed - false for increasing to right/bottom, true for increasig to left/top
      • getReversed

        public boolean getReversed()
        Returns the first-to-last ordering of the icons in this component.
        Returns:
        false for increasing to right/bottom, true for increasig to left/top
      • setEnabled

        public void setEnabled​(boolean enabled)
        Overrides:
        setEnabled in class javax.swing.JComponent
      • refreshState

        private void refreshState()
        Refreshes the list-related state from scratch.
      • createEntry

        private IconBox.Entry createEntry​(int index)
        Constructs an Entry object from an object contained in the ListModel, using the currently installed renderer.
        Parameters:
        index - index of entry in list
        Returns:
        new entry
      • setModel

        public void setModel​(javax.swing.ListModel model)
        Sets the list model for use with this component. Objects will be rendered as icons by using the currently intalled renderer.
        Parameters:
        model - list model
      • getModel

        public javax.swing.ListModel getModel()
        Returns the list model used by this component.
        Returns:
        list model
      • setTransverseSize

        public void setTransverseSize​(int transSize)
        Sets the transverse dimension in pixels of this box.
        Parameters:
        transSize - pixel count across list run
      • getTransverseSize

        public int getTransverseSize()
        Returns the transverse dimension in pixels of this box.
        Returns:
        pixel count across run
      • setRenderer

        public void setRenderer​(IconBox.CellRenderer renderer)
        Sets the object which is used to turn list model contents into the icons and tooltips displayed by this component.
        Parameters:
        renderer - new renderer
      • getRenderer

        public IconBox.CellRenderer getRenderer()
        Returns the object which turns list model contents into display things. The default value tries to cast to Icon and uses toString for tooltip.
        Returns:
        current renderer
      • setPreferredSize

        public void setPreferredSize​(java.awt.Dimension prefSize)
        Overrides:
        setPreferredSize in class javax.swing.JComponent
      • getPreferredSize

        public java.awt.Dimension getPreferredSize()
        Overrides:
        getPreferredSize in class javax.swing.JComponent
      • setMinimumSize

        public void setMinimumSize​(java.awt.Dimension minSize)
        Overrides:
        setMinimumSize in class javax.swing.JComponent
      • getMinimumSize

        public java.awt.Dimension getMinimumSize()
        Overrides:
        getMinimumSize in class javax.swing.JComponent
      • setMaximumSize

        public void setMaximumSize​(java.awt.Dimension maxSize)
        Overrides:
        setMaximumSize in class javax.swing.JComponent
      • getMaximumSize

        public java.awt.Dimension getMaximumSize()
        Overrides:
        getMaximumSize in class javax.swing.JComponent
      • getIndexAt

        public int getIndexAt​(java.awt.Point point)
        Returns the index of the list model element whose icon is displayed at a given point in this component.
        Parameters:
        point - point to interrogate
        Returns:
        list model index, or -1 if not found
      • paintComponent

        protected void paintComponent​(java.awt.Graphics g)
        Overrides:
        paintComponent in class javax.swing.JComponent
      • getToolTipText

        public java.lang.String getToolTipText​(java.awt.event.MouseEvent evt)
        Overrides:
        getToolTipText in class javax.swing.JComponent
      • createEmptyListModel

        private static javax.swing.ListModel createEmptyListModel()
        Constructs an immutable list model with no content.
        Returns:
        dummy list model