org.jdesktop.swingx.renderer
Class HyperlinkProvider
java.lang.Object
org.jdesktop.swingx.renderer.ComponentProvider<JXHyperlink>
org.jdesktop.swingx.renderer.HyperlinkProvider
- All Implemented Interfaces:
- Serializable, RolloverRenderer
public class HyperlinkProvider
- extends ComponentProvider<JXHyperlink>
- implements RolloverRenderer
Renderer for hyperlinks".
The renderer is configured with a LinkAction.
It's mostly up to the developer to guarantee that the all
values which are passed into the getXXRendererComponent(...) are
compatible with T: she can provide a runtime class to check against.
If it isn't the renderer will configure the
action with a null target.
It's recommended to not use the given Action anywhere else in code,
as it is updated on each getXXRendererComponent() call which might
lead to undesirable side-effects.
Internally uses JXHyperlink as rendering component.
PENDING: can go from ButtonProvider?
PENDING: make renderer respect selected cell state.
PENDING: TreeCellRenderer has several issues
- no icons
- usual background highlighter issues
- See Also:
- Serialized Form
Methods inherited from class org.jdesktop.swingx.renderer.ComponentProvider |
configureContent, configureVisuals, createDefaultVisuals, getDefaultVisuals, getHorizontalAlignment, getRendererComponent, getStringValue, getValueAsIcon, getValueAsString, setHorizontalAlignment, setStringValue |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
targetClass
protected Class<?> targetClass
HyperlinkProvider
public HyperlinkProvider()
- Instantiate a LinkRenderer with null LinkAction and null
targetClass.
HyperlinkProvider
public HyperlinkProvider(AbstractHyperlinkAction linkAction)
- Instantiate a LinkRenderer with the LinkAction to use with
target values.
- Parameters:
linkAction
- the action that acts on values.
HyperlinkProvider
public HyperlinkProvider(AbstractHyperlinkAction linkAction,
Class targetClass)
- Instantiate a LinkRenderer with a LinkAction to use with
target values and the type of values the action can cope with.
It's up to developers to take care of matching types.
- Parameters:
linkAction
- the action that acts on values.targetClass
- the type of values the action can handle.
setTargetClass
public void setTargetClass(Class targetClass)
- Sets the class the action is supposed to handle.
PENDING: make sense to set independently of LinkAction?
- Parameters:
targetClass
- the type of values the action can handle.
setLinkAction
public void setLinkAction(AbstractHyperlinkAction linkAction)
- Sets the LinkAction for handling the values.
The action is assumed to be able to cope with any type, that is
this method is equivalent to setLinkAction(linkAction, null).
- Parameters:
linkAction
-
setLinkAction
public void setLinkAction(AbstractHyperlinkAction linkAction,
Class targetClass)
- Sets the LinkAction for handling the values and the
class the action can handle.
PENDING: in the general case this is not independent of the
targetClass. Need api to set them combined?
- Parameters:
linkAction
-
isTargetable
public boolean isTargetable(Object target)
- decides if the given target is acceptable for setTarget.
target == null is acceptable for all types.
targetClass == null is the same as Object.class
- Parameters:
target
- the target to set.
- Returns:
- true if setTarget can cope with the object,
false otherwise.
createDefaultLinkAction
protected AbstractHyperlinkAction createDefaultLinkAction()
- default action - does nothing... except showing the target.
- Returns:
- a default LinkAction for showing the target.
isEnabled
public boolean isEnabled()
- Specified by:
isEnabled
in interface RolloverRenderer
- Returns:
- true if rollover effects are on and clickable.
doClick
public void doClick()
- Description copied from interface:
RolloverRenderer
- 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
getString
public String getString(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 ...
PENDING JW: Needs to be overridden - doesn't comply to contract!. Not sure
how to do it without disturbing the hyperlinks current setting?
All hyperlink properties are defined by the LinkAction configured
with the target ...
- Overrides:
getString
in class ComponentProvider<JXHyperlink>
- Parameters:
value
- the object to represent as string.
- Returns:
- a appropriate string representation of the cell's content.
configureState
protected void configureState(CellContext context)
- Configures the renderering component's state from the
given cell context.
Overridden to set the hyperlink's rollover state.
- Specified by:
configureState
in class ComponentProvider<JXHyperlink>
- Parameters:
context
- the cell context to configure from, must not be null.
format
protected void format(CellContext context)
- Formats the renderering component's content from the
given cell context.
Overridden to set the LinkAction's target to the context's value, if
targetable.
Forces foreground color to the one defined by hyperlink for unselected
cells, doesn't change the foreground for selected (as darkish text on dark selection
background might be unreadable, Issue #840-swingx). Not entirely safe because
the unselected background might be dark as well. Need to find a better way in
the long run. Until then, client code can use Highlighters to repair
(which is nasty!).
PENDING JW: by-passes XXValues - state currently is completely defined by
the action. Hmm ...
- Specified by:
format
in class ComponentProvider<JXHyperlink>
- Parameters:
context
- the cell context to configure from, must not be null.
createRendererComponent
protected JXHyperlink createRendererComponent()
- Factory method to create and return the component to use for rendering.
- Specified by:
createRendererComponent
in class ComponentProvider<JXHyperlink>
- Returns:
- the component to use for rendering.