Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.jdesktop.swingx.renderer
Class ComponentProvider<T extends javax.swing.JComponent>

    java.lang.Object
      org.jdesktop.swingx.renderer.ComponentProvider<T>

All Implemented Interfaces:
  java.io.Serializable, UIDependent

Direct Known Subclasses:
  CheckBoxProvider, HyperlinkProvider, LabelProvider, WrappingProvider

    public abstract class ComponentProvider<T extends javax.swing.JComponent>

extends java.lang.Object
implements java.io.Serializable, UIDependent

Abstract base class of a provider for a cell rendering component. Configures the component's content and default visuals depending on the renderee's state as captured in a `CellContext`. It's basically re-usable across all types of renderees (JTable, JList, JTree).

To ease content configuration, it supports a pluggable `StringValue` which purpose is to create and return a string representation of a given object. Implemenations of a ComponentProvider can use it to configure their rendering component as appropriate.

F.i. to show a Contributor cell object as "Busywoman, Herta" implement a custom StringValue and use it in a text rendering provider. (Note that SwingX default implementations of Table/List/TreeCellRenderer have convenience constructors to take the converter and create a default LabelProvider which uses it).

     StringValue stringValue = new StringValue() {

         public String getString(Object value) {
             if (!(value instanceof Contributor))
                 return TO_STRING.getString(value);
             Contributor contributor = (Contributor) value;
             return contributor.lastName + ", " + contributor.firstName;
         }

     };
     table.setDefaultRenderer(Contributor.class, new DefaultTableRenderer(
             stringValue));
     list.setCellRenderer(new DefaultListRenderer(stringValue));
     tree.setCellRenderer(new DefaultTreeRenderer(stringValue));

To ease handling of formatted localizable content, there's a `FormatStringValue` which is pluggable with a `Format`.

F.i. to show a Date's time in the default Locale's SHORT version and right align the cell

       StringValue stringValue = new FormatStringValue(
           DateFormat.getTimeInstance(DateFormat.SHORT));
       table.getColumnExt("timeID").setCellRenderer(
           new DefaultTableRenderer(stringValue, JLabel.RIGHT);

Guarantees to completely configure the visual properties listed below. As a consequence, client code (f.i. in `Highlighter`s) can safely change them without long-lasting visual artefacts.

- foreground and background, depending on selected and focused state
- border
- font
- Painter (if applicable)
- enabled
- componentOrientation
- tooltipText
- minimum-, maximum-, preferredSize
- horizontal alignment (if applicable)

As this internally delegates default visual configuration to a `DefaultVisuals` (which handles the first eight items) subclasses have to guarantee the alignment only.

See Also:
  `StringValue`, `FormatStringValue`, `IconValue`, `BooleanValue`, `CellContext`, `DefaultTableRenderer`, `DefaultListRenderer`, `DefaultTreeRenderer`, `DefaultVisuals`, Serialized Form

Field Summary
`protected int` | `alignment` horizontal (text) alignment of component.
`protected DefaultVisuals<T>` | `defaultVisuals` configurator of default visuals.
`protected StringValue` | `formatter` the converter to use for string representation.
`protected T` | `rendererComponent` component to render with.

Constructor Summary
`ComponentProvider()` Instantiates a component provider with LEADING horizontal alignment and default to-String converter.
`ComponentProvider(StringValue converter)` Instantiates a component provider with LEADING horizontal alignment and the given converter.
`ComponentProvider(StringValue converter, int alignment)` Instantiates a LabelProvider with given to-String converter and given horizontal alignment.

Method Summary
`protected void` | `configureContent(CellContext context)` Configures the renderering component's content and state from the given cell context.
`protected abstract void` | `configureState(CellContext context)` Configures the rendering component's state from the given cell context.
`protected void` | `configureVisuals(CellContext context)` Configures the rendering component's default visuals frome the given cell context.
`protected DefaultVisuals<T>` | `createDefaultVisuals()` Factory method to create and return the DefaultVisuals used by this to configure the default visuals.
`protected abstract T` | `createRendererComponent()` Factory method to create and return the component to use for rendering.
`protected abstract void` | `format(CellContext context)` Formats the renderering component's content from the given cell context.
`protected DefaultVisuals<T>` | `getDefaultVisuals()` Intermediate exposure during refactoring...
`int` | `getHorizontalAlignment()` Returns the horizontal alignment.
`T` | `getRendererComponent(CellContext context)` Configures and returns an appropriate component to render a cell in the given context.
`java.lang.String` | `getString(java.lang.Object value)` Returns a string representation of the content.
`StringValue` | `getStringValue()` Returns the StringValue to use for obtaining the String representation.
`protected javax.swing.Icon` | `getValueAsIcon(CellContext context)` Returns a Icon representation of the content.
`protected java.lang.String` | `getValueAsString(CellContext context)` Returns a String representation of the content.
`void` | `setHorizontalAlignment(int alignment)` Sets the horizontal alignment property to configure the component with.
`void` | `setStringValue(StringValue formatter)` Sets the StringValue to use.
`void` | `updateUI()` Updates all internal visuals after changing a UI-delegate.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### rendererComponent

    protected T extends javax.swing.JComponent rendererComponent

  component to render with.

### defaultVisuals

    protected DefaultVisuals<T extends javax.swing.JComponent> defaultVisuals

  configurator of default visuals.

### alignment

    protected int alignment

  horizontal (text) alignment of component. PENDING: useful only for labels, buttons?

### formatter

    protected StringValue formatter

  the converter to use for string representation. PENDING: IconValue?

Constructor Detail

### ComponentProvider

    public ComponentProvider()

  Instantiates a component provider with LEADING horizontal alignment and default to-String converter.

### ComponentProvider

    public ComponentProvider(StringValue converter)

  Instantiates a component provider with LEADING horizontal alignment and the given converter.

  Parameters:
    `converter` - the converter to use for mapping the cell value to a String representation.

### ComponentProvider

    public ComponentProvider(StringValue converter,
                             int alignment)

  Instantiates a LabelProvider with given to-String converter and given horizontal alignment. If the converter is null, the default TO_STRING is used.

  Parameters:
    `converter` - the converter to use for mapping the cell value to a String representation.
    `alignment` - the horizontal alignment.

Method Detail

### getRendererComponent

    public T 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.

  Parameters:
    `context` - the cell context to configure from
  Returns:
    a component to render a cell in the given context.

### setHorizontalAlignment

    public void setHorizontalAlignment(int alignment)

  Sets the horizontal alignment property to configure the component with. Allowed values are those accepted by corresponding JLabel setter. The default value is JLabel.LEADING. This controller guarantees to apply the alignment on each request for a configured rendering component, if possible. Note that not all components have a horizontal alignment property.

  Parameters:
    `alignment` - the horizontal alignment to use when configuring the rendering component.

### getHorizontalAlignment

    public int getHorizontalAlignment()

  Returns the horizontal alignment.

  Returns:
    the horizontal alignment of the rendering component.
  See Also:
    `setHorizontalAlignment(int)`

### setStringValue

    public void setStringValue(StringValue formatter)

  Sets the StringValue to use. If the given StringValue is null, defaults to `StringValue.TO_STRING`.

  Parameters:
    `formatter` - the format to use.

### getStringValue

    public StringValue getStringValue()

  Returns the StringValue to use for obtaining the String representation.

  Returns:
    the StringValue used by this provider, guaranteed to be not null.

### getString

    public java.lang.String getString(java.lang.Object value)

  Returns a string representation of the content.

  This method guarantees to return the same string representation as would appear in the renderer, given that the corresponding cellContext has the same value as the parameter passed-in here. That is (assuming that the rendering component has a getText())

       if (equals(value, context.getValue()) {
           assertEquals(provider.getString(value),
           provider.getRenderingComponent(context).getText());
       }

  This implementation simply delegates to its StringValue. Subclasses might need to override to comply.

  This is a second attempt - the driving force is the need for a consistent string representation across all (new and old) themes: rendering, (pattern) filtering/highlighting, searching, auto-complete ...

  Parameters:
    `value` - the object to represent as string.
  Returns:
    a appropriate string representation of the cell's content.

### getValueAsString

    protected java.lang.String getValueAsString(CellContext context)

  Returns a String representation of the content.

  This method messages the `StringValue` to get the String rep. Meant as a convenience for subclasses.

  Parameters:
    `context` - the cell context, must not be null.
  Returns:
    a appropriate string representation of the cell's content.

### getValueAsIcon

    protected javax.swing.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.

  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.

### configureVisuals

    protected void configureVisuals(CellContext context)

  Configures the rendering component's default visuals frome the given cell context. Here: delegates to the renderer controller.

  Parameters:
    `context` - the cell context to configure from, must not be null.
  See Also:
    `DefaultVisuals`

### configureContent

    protected void configureContent(CellContext context)

  Configures the renderering component's content and state from the given cell context.

  Parameters:
    `context` - the cell context to configure from, must not be null.
  See Also:
    `configureState(CellContext)`, `format(CellContext)`

### format

    protected abstract void format(CellContext context)

  Formats the renderering component's content from the given cell context.

  Parameters:
    `context` - the cell context to configure from, must not be null.

### configureState

    protected abstract void configureState(CellContext context)

  Configures the rendering component's state from the given cell context.

  Parameters:
    `context` - the cell context to configure from, must not be null.

### createRendererComponent

    protected abstract T createRendererComponent()

  Factory method to create and return the component to use for rendering.

  Returns:
    the component to use for rendering.

### createDefaultVisuals

    protected DefaultVisuals<T> createDefaultVisuals()

  Factory method to create and return the DefaultVisuals used by this to configure the default visuals. Here: creates the default controller parameterized to the same type as this.

  Returns:
    the controller used to configure the default visuals of the rendering component.

### getDefaultVisuals

    protected DefaultVisuals<T> getDefaultVisuals()

  Intermediate exposure during refactoring...

  Returns:
    the default visual configurator used by this.

### updateUI

    public void updateUI()

  Updates all internal visuals after changing a UI-delegate.

  Specified by:
    `updateUI` in interface `UIDependent`
  See Also:
    `JComponent.updateUI()`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2010. All Rights Reserved.