Class WrappingIconPanel

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.Scrollable, AlphaPaintable, BackgroundPaintable, IconAware, PainterAware

    public class WrappingIconPanel
    extends JXPanel
    implements PainterAware, IconAware
    Compound component for usage in tree renderer.

    Supports setting an icon for the node and a delegate component which is used to show the text/content of the node. The delegate component can be shared across renderers.

    This implements the PainterAware by delegating to the delegate component if that is of type PainterAware. Does nothing if not.

    See Also:
    Serialized Form
    • Nested Class Summary

      • 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

      Fields 
      Modifier and Type Field Description
      protected javax.swing.JComponent delegate  
      private boolean dropHackEnabled  
      private boolean extendsComponentOpacity  
      (package private) javax.swing.JLabel iconLabel  
      (package private) int iconLabelGap  
      (package private) java.lang.String labelPosition  
      private javax.swing.border.Border ltorBorder  
      private javax.swing.border.Border rtolBorder  
      • 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
      WrappingIconPanel()
      Instantiates and configures a WrappingIconPanel with the dropHack enabled.
      WrappingIconPanel​(boolean dropHackEnabled)
      Instantiates and configures a WrappingIconPanel with the dropHack property set as indicated by the boolean.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      javax.swing.JComponent getComponent()
      Returns the delegate component.
      java.awt.Rectangle getDelegateBounds()
      Returns the bounds of the delegate component or null if the delegate is null.
      boolean getExtendsComponentOpacity()  
      javax.swing.Icon getIcon()
      Returns the icon used in this panel, may be null.
      Painter<?> getPainter()
      boolean isVisible()
      void setBackground​(java.awt.Color bg)
      void setComponent​(javax.swing.JComponent comp)
      Sets the delegate component.
      void setComponentOrientation​(java.awt.ComponentOrientation o)
      void setDropHackEnabled​(boolean dropHackEnabled)
      Sets the dropHackEnabled property.
      void setExtendsComponentOpacity​(boolean extendsComponentOpacity)
      Sets a boolean indicating whether or not the main component's opacity should be applied to the Icon region.
      void setFont​(java.awt.Font font)
      void setForeground​(java.awt.Color bg)
      void setIcon​(javax.swing.Icon icon)
      Sets the icon.
      void setPainter​(Painter<?> painter)
      Sets the delegate's Painter if it is of type PainterAware.
      private void updateIconBorder()
      Updates the icon position according to ComponentOrientation.
      • Methods inherited from class javax.swing.JPanel

        getAccessibleContext, getUI, getUIClassID, paramString, setUI, 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, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, 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, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, 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, 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, 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

      • delegate

        protected javax.swing.JComponent delegate
      • iconLabel

        javax.swing.JLabel iconLabel
      • labelPosition

        java.lang.String labelPosition
      • iconLabelGap

        int iconLabelGap
      • ltorBorder

        private javax.swing.border.Border ltorBorder
      • rtolBorder

        private javax.swing.border.Border rtolBorder
      • dropHackEnabled

        private boolean dropHackEnabled
      • extendsComponentOpacity

        private boolean extendsComponentOpacity
    • Constructor Detail

      • WrappingIconPanel

        public WrappingIconPanel()
        Instantiates and configures a WrappingIconPanel with the dropHack enabled.
      • WrappingIconPanel

        public WrappingIconPanel​(boolean dropHackEnabled)
        Instantiates and configures a WrappingIconPanel with the dropHack property set as indicated by the boolean.
        Parameters:
        dropHackEnabled - a boolean indicating whether the drop hack should be enabled.
        See Also:
        isVisible()
    • Method Detail

      • setComponentOrientation

        public void setComponentOrientation​(java.awt.ComponentOrientation o)

        Overridden to update the icon position.

        Overrides:
        setComponentOrientation in class java.awt.Component
      • updateIconBorder

        private void updateIconBorder()
        Updates the icon position according to ComponentOrientation.
      • setIcon

        public void setIcon​(javax.swing.Icon icon)
        Sets the icon.
        Specified by:
        setIcon in interface IconAware
        Parameters:
        icon - the icon to use.
      • getIcon

        public javax.swing.Icon getIcon()
        Returns the icon used in this panel, may be null.
        Specified by:
        getIcon in interface IconAware
        Returns:
        the icon used in this panel, may be null.
      • setComponent

        public void setComponent​(javax.swing.JComponent comp)
        Sets the delegate component.
        Parameters:
        comp - the component to add as delegate.
      • getComponent

        public javax.swing.JComponent getComponent()
        Returns the delegate component.
        Returns:
        the delegate component.
      • setBackground

        public void setBackground​(java.awt.Color bg)

        Overridden to set the background of the delegate and icon label as well.

        Overrides:
        setBackground in class javax.swing.JComponent
      • setForeground

        public void setForeground​(java.awt.Color bg)

        Overridden to set the foreground of the delegate and icon label as well.

        Overrides:
        setForeground in class javax.swing.JComponent
      • setFont

        public void setFont​(java.awt.Font font)

        Overridden to set the Font of the delegate as well.

        Overrides:
        setFont in class javax.swing.JComponent
      • isVisible

        public boolean isVisible()

        Overridden to hack around #766-swingx: cursor flickering in DnD when dragging over tree column. This is a core bug (#6700748) related to painting the rendering component on a CellRendererPane. A trick around is to let this return false.

        Some LayoutManagers don't layout an invisible component, so need to make the hack-enabled configurable. This implementation will return false if isDropHackEnabled, super.isVisible otherwise.

        Overrides:
        isVisible in class java.awt.Component
      • getPainter

        public Painter<?> getPainter()

        Returns the delegate's Painter if it is of type PainterAware or null otherwise.

        Specified by:
        getPainter in interface PainterAware
        Returns:
        the delegate's Painter or null.
      • setPainter

        public void setPainter​(Painter<?> painter)
        Sets the delegate's Painter if it is of type PainterAware. Does nothing otherwise.
        Specified by:
        setPainter in interface PainterAware
        Parameters:
        painter - the Painter to apply to the delegate.
      • getDelegateBounds

        public java.awt.Rectangle getDelegateBounds()
        Returns the bounds of the delegate component or null if the delegate is null. PENDING JW: where do we use it? Maybe it was for testing only?
        Returns:
        the bounds of the delegate, or null if the delegate is null.
      • setDropHackEnabled

        public void setDropHackEnabled​(boolean dropHackEnabled)
        Sets the dropHackEnabled property.

        The default value is true.

        Parameters:
        dropHackEnabled -
        See Also:
        isVisible()
      • setExtendsComponentOpacity

        public void setExtendsComponentOpacity​(boolean extendsComponentOpacity)
        Sets a boolean indicating whether or not the main component's opacity should be applied to the Icon region.

        The default value is false. This covers the main use case in a JTree.

        Parameters:
        extendsComponentOpacity -
      • getExtendsComponentOpacity

        public boolean getExtendsComponentOpacity()
        Returns:
        the extendsComponentOpacity