org.jdesktop.swingx.renderer
Class WrappingProvider

java.lang.Object
  extended by org.jdesktop.swingx.renderer.ComponentProvider<WrappingIconPanel>
      extended by org.jdesktop.swingx.renderer.WrappingProvider
All Implemented Interfaces:
Serializable, RolloverRenderer

public class WrappingProvider
extends ComponentProvider<WrappingIconPanel>
implements RolloverRenderer

Wrapping ComponentProvider for usage in tree rendering. Handles the icon itself, delegates the node content to the wrappee. Value-based icon and content mapping can be configured by custom IconValues and StringValue, respectively.

An example of how to configure a file tree by using the system icons and display names


 StringValue sv = new StringValue() {
 
     public String getString(Object value) {
         if (value instanceof File) {
             return FileSystemView.getFileSystemView().getSystemDisplayName(
                     (File) value);
         }
         return TO_STRING.getString(value);
     }
 
 };
 IconValue iv = new IconValue() {
 
     public Icon getIcon(Object value) {
         if (value instanceof File) {
             return FileSystemView.getFileSystemView().getSystemIcon(
                     (File) value);
         }
         return null;
     }
 };
 TreeCellRenderer r = new DefaultTreeRenderer(iv, sv);
 tree.setCellRenderer(r);
 treeTable.setTreeCellRenderer(r);
 
PENDING: ui specific focus rect variation (draw rect around icon) missing

See Also:
Serialized Form

Field Summary
protected  ComponentProvider wrappee
           
 
Fields inherited from class org.jdesktop.swingx.renderer.ComponentProvider
alignment, defaultVisuals, formatter, rendererComponent
 
Constructor Summary
WrappingProvider()
          Instantiates a WrappingProvider with default LabelProvider.
WrappingProvider(ComponentProvider delegate)
          Instantiates a WrappingProvider with the given delegate provider for the node content.
WrappingProvider(IconValue iconValue)
          Instantiates a WrappingProvider with default wrappee.
WrappingProvider(IconValue iconValue, StringValue wrappeeStringValue)
          Instantiates a WrappingProvider with default wrappee.
WrappingProvider(StringValue wrappeeStringValue)
          Instantiates a WrappingProvider with default wrappee configured with the given StringValue.
 
Method Summary
protected  Object adjustContextValue(CellContext context)
          Replace the context's value with the userobject if it's a treenode.
protected  void configureState(CellContext context)
          Configures the renderering component's state from the given cell context.
protected  WrappingIconPanel createRendererComponent()
          Factory method to create and return the component to use for rendering.
 void doClick()
          Same as AbstractButton.doClick().
protected  void format(CellContext context)
          Formats the renderering component's content from the given cell context.
 WrappingIconPanel getRendererComponent(CellContext context)
          Configures and returns an appropriate component to render a cell in the given context.
protected  Icon getValueAsIcon(CellContext context)
          Returns a Icon representation of the content.
 ComponentProvider getWrappee()
          Returns the delegate provider used to render the node content.
 boolean isEnabled()
          
protected  void restoreContextValue(CellContext context, Object oldValue)
          Restores the context value to the old value.
 void setWrappee(ComponentProvider delegate)
          Sets the given provider as delegate for the node content.
 
Methods inherited from class org.jdesktop.swingx.renderer.ComponentProvider
configureContent, configureVisuals, createRendererController, getHorizontalAlignment, getRendererController, getStringValue, getToStringConverter, getValueAsString, setHorizontalAlignment, setToStringConverter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

wrappee

protected ComponentProvider wrappee
Constructor Detail

WrappingProvider

public WrappingProvider()
Instantiates a WrappingProvider with default LabelProvider.


WrappingProvider

public WrappingProvider(IconValue iconValue,
                        StringValue wrappeeStringValue)
Instantiates a WrappingProvider with default wrappee. Uses the given IconValue to configure the icon.

Parameters:
iconValue - the IconValue to use for configuring the icon.

WrappingProvider

public WrappingProvider(IconValue iconValue)
Instantiates a WrappingProvider with default wrappee. Uses the given IconValue to configure the icon.

Parameters:
iconValue - the IconValue to use for configuring the icon.

WrappingProvider

public WrappingProvider(StringValue wrappeeStringValue)
Instantiates a WrappingProvider with default wrappee configured with the given StringValue. PENDING: we have a slight semantic glitch compared to super because the given StringValue is not for use in this provider but for use in the wrappee!

Parameters:
wrappeeStringValue - the StringValue to use in the wrappee.

WrappingProvider

public WrappingProvider(ComponentProvider delegate)
Instantiates a WrappingProvider with the given delegate provider for the node content. If null, a default LabelProvider will be used.

Parameters:
delegate - the provider to use as delegate
Method Detail

setWrappee

public void setWrappee(ComponentProvider delegate)
Sets the given provider as delegate for the node content. If the delegate is null, a default LabelProvider is set.

PENDING: rename to setDelegate?

Parameters:
delegate - the provider to use as delegate.

getWrappee

public ComponentProvider getWrappee()
Returns the delegate provider used to render the node content.

Returns:
the provider used for rendering the node content.

getRendererComponent

public WrappingIconPanel getRendererComponent(CellContext context)
Configures and returns an appropriate component to render a cell in the given context. If the context is null, returns the component in its current state.

Overrides:
getRendererComponent in class ComponentProvider<WrappingIconPanel>
Parameters:
context - the cell context to configure from
Returns:
a component to render a cell in the given context.

restoreContextValue

protected void restoreContextValue(CellContext context,
                                   Object oldValue)
Restores the context value to the old value.

Parameters:
context - the CellContext to restore.
oldValue - the value to restore the context to.

adjustContextValue

protected Object adjustContextValue(CellContext context)
Replace the context's value with the userobject if it's a treenode.

Subclasses may override but must guarantee to return the original value for restoring.

Parameters:
context - the context to adjust
Returns:
the old context value

configureState

protected void configureState(CellContext context)
Description copied from class: ComponentProvider
Configures the renderering component's state from the given cell context.

Specified by:
configureState in class ComponentProvider<WrappingIconPanel>
Parameters:
context - the cell context to configure from, must not be null.

createRendererComponent

protected WrappingIconPanel createRendererComponent()
Description copied from class: ComponentProvider
Factory method to create and return the component to use for rendering.

Specified by:
createRendererComponent in class ComponentProvider<WrappingIconPanel>
Returns:
the component to use for rendering.

format

protected void format(CellContext context)
Formats the renderering component's content from the given cell context.

Here: implemented to set the icon.

Specified by:
format in class ComponentProvider<WrappingIconPanel>
Parameters:
context - the cell context to configure from, must not be null.

getValueAsIcon

protected Icon getValueAsIcon(CellContext context)
Returns a Icon representation of the content.

This method messages the IconValue to get the Icon rep. Meant as a convenience for subclasses.

Overridden to fallback to the default icons supplied by the context if super returns null. PENDING: make fallback configurable - null icons might be valid.

Overrides:
getValueAsIcon in class ComponentProvider<WrappingIconPanel>
Parameters:
context - the cell context, must not be null.
Returns:
a appropriate icon representation of the cell's content, or null if non if available.

doClick

public void doClick()
Same as AbstractButton.doClick(). It's up to client code to prepare the renderer's component before calling this method.

Specified by:
doClick in interface RolloverRenderer

isEnabled

public boolean isEnabled()

Specified by:
isEnabled in interface RolloverRenderer
Returns:
true if rollover effects are on and clickable.