|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.jdesktop.swing.decorator.Highlighter
Highlighter is a lightweight mechanism to modify the behavior
and attributes of cell renderers such as ListCellRenderer,
TableCellRenderer, and
TreeCellRenderer in a simple layered fashion.
While cell renderers are split along component lines, highlighters provide a
common interface for decorating cell renderers.
Highlighter achieves this by vectoring access to all component-specific
state and functionality through a ComponentAdapter object.
The primary purpose of Highlighter is to decorate a cell
renderer in controlled ways, such as by applying a different color
or font to it. For example, AlternateRowHighlighter highlights cell
renderers with alternating background colors. In data visualization components
that support multiple columns with potentially different types of data, this
highlighter imparts the same background color consistently across all
columns of the target component
regardless of the actual cell renderer registered for any specific column.
Thus, the Highlighter mechanism is orthogonal to the cell
rendering mechanism.
To use Highlighter you must first set up a
HighlighterPipeline using an array of Highlighter objects,
and then call setHighlighters() on a data visualization component, passing in
the highligher pipeline. If the array of highlighters is not null and is not
empty, the highlighters are applied to the selected renderer for each cell in
the order they appear in the array.
When it is time to render a cell, the cell renderer is primed as usual, after
which, the highlight method of the first
highlighter in the HighlighterPipeline is invoked. The prepared
renderer, and a suitable ComponentAdapter object is passed to the
highlight method. The highlighter is expected to modify the
renderer in controlled ways, and return the modified renderer (or a substitute)
that is passed to the next highlighter, if any, in the pipeline. The renderer
returned by the highlight method of the last highlighter in the
pipeline is ultimately used to render the cell.
The Highlighter mechanism enables multiple degrees of
freedom. In addition to specifying the actual cell renderer class, now you
can also specify the number, order, and class of highlighter objects. Using
highlighters is really simple, as shown by the following example:
Highlighter[] highlighters = new Highlighter[] {
new AlternateRowHighlighter(Color.white, new Color(0xF0, 0xF0, 0xE0), null)),
new PatternHighlighter(null, Color.red, "s.*", 0)};
HighlighterPipeline highlighterPipeline = new HighlighterPipeline(highlighters);
JTable table = new JTable();
table.setHighlighters(highlighters);
The above example allocates an array of Highlighter and populates
it with a new AlternateRowHighlighter and PatternHighlighter.
The first one in this example highlights all cells in odd rows with a white
background, and all cells in even rows with a silver background, but it does
not specify a foreground color explicitly. The second highlighter does not
specify a background color explicitly, but sets the foreground color to red
if certain conditions are met (see PatternHighlighter for
more details). In this example, if the cells in the first column of any
row start with the letter 's', then all cells in that row are highlighted with
a red foreground. Also, as mentioned earlier, the highlighters are applied in
the order they appear in the list.
ComponentAdapter,
ListCellRenderer,
TableCellRenderer,
TreeCellRenderer| Field Summary | |
protected Color |
background
|
protected Color |
foreground
|
static Highlighter |
ledgerBackground
Predefined Highlighter that highlights the background of
each cell with a pastel green "ledger" background color, and is most
effective when the ComponentAdapter.target component has
horizontal gridlines in Color.cyan.darker() color. |
static Highlighter |
notePadBackground
Predefined Highlighter that decorates the background of
each cell with a pastel yellow "notepad" background color, and is most
effective when the ComponentAdapter.target component has
horizontal gridlines in Color.cyan.darker() color. |
protected int |
order
|
protected Color |
selectedBackground
|
protected Color |
selectedForeground
|
| Constructor Summary | |
Highlighter()
Default constructor. |
|
Highlighter(Color cellBackground,
Color cellForeground)
Constructs a Highlighter with the specified
background and foreground colors. |
|
| Method Summary | |
protected void |
applyBackground(Component renderer,
ComponentAdapter adapter)
Computes a suitable background for the renderer component within the specified adapter by calling computeBackground
and applies the computed color to the component. |
protected void |
applyFont(Component renderer,
ComponentAdapter adapter)
Empty method. |
protected void |
applyForeground(Component renderer,
ComponentAdapter adapter)
Computes a suitable foreground for the renderer component within the specified adapter by calling computeForeground
and applies the computed color to the component. |
protected Color |
computeBackground(Component renderer,
ComponentAdapter adapter)
Computes a suitable background for the renderer component within the specified adapter and returns the computed color. |
protected Color |
computeForeground(Component renderer,
ComponentAdapter adapter)
Computes a suitable foreground for the renderer component within the specified adapter and returns the computed color. |
protected Color |
computeSelectedBackground(Color seed)
Computes the selected background color. |
protected Color |
computeSelectedForeground(Color seed)
Computes the selected foreground color. |
protected Component |
doHighlight(Component renderer,
ComponentAdapter adapter)
This is the bottleneck decorate method that all highlighters must invoke to decorate the cell renderer. |
Color |
getBackground()
Returns the background color of this Highlighter. |
Color |
getForeground()
Returns the foreground color of this Highlighter. |
Color |
getSelectedBackground()
Returns the selected background color of this Highlighter. |
Color |
getSelectedForeground()
Returns the selected foreground color of this Highlighter. |
Component |
highlight(Component renderer,
ComponentAdapter adapter)
Decorates the specified cell renderer component for the given component data adapter using highlighters that were previously set for the component. |
void |
setBackground(Color color)
Sets the background color of this Highlighter. |
void |
setForeground(Color color)
Sets the foreground color of this Highlighter. |
void |
setSelectedBackground(Color color)
Sets the selected background color of this Highlighter. |
void |
setSelectedForeground(Color color)
Sets the selected foreground color of this Highlighter. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
protected int order
public static final Highlighter ledgerBackground
Highlighter that highlights the background of
each cell with a pastel green "ledger" background color, and is most
effective when the ComponentAdapter.target component has
horizontal gridlines in Color.cyan.darker() color.
public static final Highlighter notePadBackground
Highlighter that decorates the background of
each cell with a pastel yellow "notepad" background color, and is most
effective when the ComponentAdapter.target component has
horizontal gridlines in Color.cyan.darker() color.
protected Color background
protected Color foreground
protected Color selectedBackground
protected Color selectedForeground
| Constructor Detail |
public Highlighter()
public Highlighter(Color cellBackground,
Color cellForeground)
Highlighter with the specified
background and foreground colors.
cellBackground - background color for the renderer, or null,
to compute a suitable backgroundcellForeground - foreground color for the renderer, or null,
to compute a suitable foreground| Method Detail |
public Component highlight(Component renderer,
ComponentAdapter adapter)
doHighlight with
the same arguments as were passed in.
renderer - the cell renderer component that is to be decoratedadapter - the ComponentAdapter for this decorate operation
protected Component doHighlight(Component renderer,
ComponentAdapter adapter)
applyBackground, applyForeground,
applyFont and so on, to decorate the corresponding
attributes of the specified component within the given adapter.
renderer - the cell renderer component that is to be decoratedadapter - the ComponentAdapter for this decorate operation
protected void applyBackground(Component renderer,
ComponentAdapter adapter)
computeBackground
and applies the computed color to the component. If the computed
color is null, it leaves the background unchanged; Otherwise it sets the
component's background to the computed color.
renderer - the cell renderer component that is to be decoratedadapter - the ComponentAdapter for this decorate operation
protected void applyForeground(Component renderer,
ComponentAdapter adapter)
computeForeground
and applies the computed color to the component. If the computed
color is null, it leaves the foreground unchanged; Otherwise it sets the
component's foreground to the computed color.
renderer - the cell renderer component that is to be decoratedadapter - the ComponentAdapter for this decorate operation
protected void applyFont(Component renderer,
ComponentAdapter adapter)
renderer - the cell renderer component that is to be decoratedadapter - the ComponentAdapter for this decorate operation
protected Color computeBackground(Component renderer,
ComponentAdapter adapter)
Computes a suitable background for the renderer component within the
specified adapter and returns the computed color. The computed color
depends on two factors: (i) whether the background color for this
Highlighter is null or not, and (ii) whether the cell
identified by the specified adapter
isSelected or not.
If the background color for this Highlighter is not
null, this method starts with an initial value that is equal to that
background color, and proceeds to check the selected state of the cell.
Otherwise, it starts with the background color of the component whose
cell is being rendererd (not the background color of the renderer component
that was passed in), and proceeds to check the selected state of the cell.
If the cell identified by the specified adapter is selected, this
method returns the value computed by
computeSelectedBackground when passed
the initial background color computed earlier. Otherwise, it simply
returns the initial background color computed earlier.
renderer - the cell renderer component that is to be decoratedadapter - the ComponentAdapter for this decorate operation
protected Color computeForeground(Component renderer,
ComponentAdapter adapter)
Computes a suitable foreground for the renderer component within the
specified adapter and returns the computed color. The computed color
depends on two factors: (i) whether the foreground color for this
Highlighter is null or not, and (ii) whether the cell
identified by the specified adapter
isSelected or not.
If the foreground color for this Highlighter is not
null, this method starts with an initial value that is equal to that
foreground color, and proceeds to check the selected state of the cell.
Otherwise, it starts with the foreground color of the component whose
cell is being rendererd (not the foreground color of the renderer component
that was passed in), and proceeds to check the selected state of the cell.
If the cell identified by the specified adapter is selected, this
method returns the value computed by
computeSelectedBackground when passed
the initial foreground color computed earlier. Otherwise, it simply
returns the initial foreground color computed earlier.
renderer - the cell renderer component that is to be decoratedadapter - the ComponentAdapter for this decorate operation
protected Color computeSelectedBackground(Color seed)
Highlighter is not null, this method returns that
color. Otherwise, it returns a Color.darker() version of
the specified seed color.
seed - initial background color; must not be null
protected Color computeSelectedForeground(Color seed)
Highlighter is not null, this method returns that
color. Otherwise, it returns Color.white, ignoring the
specified seed color.
seed - initial foreground color
public Color getBackground()
Highlighter.
Highlighter,
or null, if no background color has been setpublic void setBackground(Color color)
Highlighter.
color - the background color of this Highlighter,
or null, to clear any existing background colorpublic Color getForeground()
Highlighter.
Highlighter,
or null, if no foreground color has been setpublic void setForeground(Color color)
Highlighter.
color - the foreground color of this Highlighter,
or null, to clear any existing foreground colorpublic Color getSelectedBackground()
Highlighter.
Highlighter,
or null, if no selected background color has been setpublic void setSelectedBackground(Color color)
Highlighter.
color - the selected background color of this Highlighter,
or null, to clear any existing selected background colorpublic Color getSelectedForeground()
Highlighter.
Highlighter,
or null, if no selected foreground color has been setpublic void setSelectedForeground(Color color)
Highlighter.
color - the selected foreground color of this Highlighter,
or null, to clear any existing selected foreground color
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||