|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.jdesktop.swingx.renderer.ComponentProvider<T>
public abstract class ComponentProvider<T extends JComponent>
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.
DefaultVisuals
(which handles the first eight items)
subclasses have to guarantee the alignment only.
StringValue
,
FormatStringValue
,
IconValue
,
BooleanValue
,
CellContext
,
DefaultTableRenderer
,
DefaultListRenderer
,
DefaultTreeRenderer
,
DefaultVisuals
,
Serialized FormField 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 renderering 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. |
String |
getString(Object value)
Returns a string representation of the content. |
StringValue |
getStringValue()
Returns the StringValue to use for obtaining the String representation. |
protected Icon |
getValueAsIcon(CellContext context)
Returns a Icon representation of the content. |
protected 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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected T extends JComponent rendererComponent
protected DefaultVisuals<T extends JComponent> defaultVisuals
protected int alignment
protected StringValue formatter
Constructor Detail |
---|
public ComponentProvider()
public ComponentProvider(StringValue converter)
converter
- the converter to use for mapping the cell value to a
String representation.public ComponentProvider(StringValue converter, int alignment)
converter
- the converter to use for mapping the cell value to a
String representation.alignment
- the horizontal alignment.Method Detail |
---|
public T getRendererComponent(CellContext context)
context
- the cell context to configure from
public void setHorizontalAlignment(int alignment)
alignment
- the horizontal alignment to use when configuring the
rendering component.public int getHorizontalAlignment()
setHorizontalAlignment(int)
public void setStringValue(StringValue formatter)
StringValue.TO_STRING
.
formatter
- the format to use.public StringValue getStringValue()
public String getString(Object value)
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 ...
value
- the object to represent as string.
protected String getValueAsString(CellContext context)
This method messages the
StringValue
to get the String rep. Meant as
a convenience for subclasses.
context
- the cell context, must not be null.
protected Icon getValueAsIcon(CellContext context)
This method messages the
IconValue
to get the Icon rep. Meant as
a convenience for subclasses.
context
- the cell context, must not be null.
protected void configureVisuals(CellContext context)
context
- the cell context to configure from, must not be null.DefaultVisuals
protected void configureContent(CellContext context)
context
- the cell context to configure from, must not be null.configureState(CellContext)
,
format(CellContext)
protected abstract void format(CellContext context)
context
- the cell context to configure from, must not be null.protected abstract void configureState(CellContext context)
context
- the cell context to configure from, must not be null.protected abstract T createRendererComponent()
protected DefaultVisuals<T> createDefaultVisuals()
protected DefaultVisuals<T> getDefaultVisuals()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |