Styling the data objects
Describes the treemap chart renderer, which is used to show data objects (as opposed to data points in the other renderers).
Explains the expected selector patterns for the style rules and the properties that can be used in the declarations of these rules.
Lists the properties that can be used to customize the rendering of data models and data objects.
Selector Patterns
Style sheets can be used to specify the rendering attributes of all objects together and of individual objects.
Two types of style rule selectors are defined to reference the chart data model:
-
objects
Used to match the entire data source (an IlvTreeTableDataSource ).
-
object
Used to match an object in the data model (available through IlvTreeTableDataSource.getTreeModel() ).
CSS Classes and Pseudo Classes
Every object in the data model can be associated with one or more CSS classes and with one or more pseudoclasses.
Both kinds of classes can have an effect on the rendering, through style rules. But while CSS classes are meant to encode properties of the object that come directly from the model, the pseudoclasses are meant to encode application dependent state, for example in conjunction with some interactors.
The CSS classes of model objects are taken from the model. For this purpose, the renderer has methods setCSSClassesColumn and setCSSClassesColumnName, that let you specify the model column containing the CSS classes. The value in this column should be a string containing the CSS class names, in any order, and separated by spaces.
CSS classes can be used in a CSS file through the syntax:
object.classname { ... }
The CSS pseudoclasses of model objects are stored in the chart instance. You can add or remove a pseudoclass to an object (or an object to a pseudoclass) through the methods IlvChart.addPseudoClass and IlvChart.removePseudoClass. There are no predefined pseudoclasses for model objects so far. You can define your own and use them in style rules.
For example, in an interactor you might mark an object as "marked":
// Add the "marked" state to an object.
chart.addPseudoClass(object, "marked");
Then you can define a rule that highlights the marked objects:
object:marked { ... }
Selector Attributes
No attributes are defined for the objects selector.
The attributes defined for the object selector are exactly the column names of the object model. For example, if the model has two columns named 'amount2004' and 'amount2005', you can write a style rule
object[ amount2005 > amount2004 * 1.05 ]
to highlight those object where the amount increase is greater than 5%.
Additionally, the following attributes are predefined for the object selector:
Name |
Description |
level |
The distance of the object from the model root, in the tree model. This is 0 for the root, 1 for the root children, and so on. |
focusLevel |
The distance of the treemap renderer focus (= the root of the subtree model being displayed) from the model root. |
leaf |
true if the object has no children objects in the model, false otherwise. |
For a treemap display, the CSS expression @level-@focusLevel represents the level difference between the current object and the outermost displayed rectangle.
The following lines of CSS can therefore be used to set labels with particular attributes on each object of the specified level:
object [level==0] {
annotation : "@#labelAnnotation0";
}
object [level==1] {
annotation : "@#labelAnnotation1";
}
object [level>1] {
annotation : "@#labelAnnotation2";
}
Likewise for specified levels relative to the treemap focus:
object [@|@level-@focusLevel==0] {
annotation : "@#labelAnnotation0";
}
object [@|@level-@focusLevel==1] {
annotation : "@#labelAnnotation1";
}
object [@|@level-@focusLevel>1] {
annotation : "@#labelAnnotation2";
}
Properties
Properties for Individual Data Objects
Properties for the object selector are also available for the objects selector.
In rules with an object selector, the following properties are available:
Name |
Type |
Default Value |
color1 |
java.awt.Paint |
null |
color2 |
java.awt.Paint |
null |
endCap |
int (enumerated) |
java.awt.BasicStroke.CAP_BUTT |
lineJoin |
int (enumerated) |
java.awt.BasicStroke.JOIN_BEVEL |
lineStyle |
float[] |
null |
lineWidth |
float |
1 |
miterLimit |
float |
10 |
stroke |
java.awt.Stroke |
null |
annotation |
IlvDataAnnotation |
null |
visible |
boolean |
true |
For more details on these properties, see Properties for Data Points.
Properties for the Entire Data Model
In a rule with an objects selector, the following properties can be set through CSS.
-
Object properties that apply to all objects. The list is the same as above.
-
Renderer properties. For the treemap, the following properties are available:
Name |
Type |
Default value |
Description |
visible |
boolean |
true |
Indicates whether the renderer is visible. |
name |
String |
null |
The name of the renderer. |
visibleInLegend |
boolean |
true |
Indicates whether the renderer creates legend items. |
areaColumnName |
String |
null |
The column chosen to determine the area of each object. |
colorColumnName |
String |
null |
The column chosen to determine the color of each rectangle. |
labelColumnName |
String |
null |
The column chosen to determine the label of each object, as shown by IlvDataLabelAnnotation. |
CSSClassesColumnName |
String |
null |
The column chosen to determine the CSS classes of each object. |
packing |
enumerated: ALTERNATING, SQUARIFIED_CORNER, SQUARIFIED, BAR |
ALTERNATING |
The rectangle packing. |
primaryDirection |
enumerated: RIGHT, LEFT, TRAILING, TOP, BOTTOM |
TRAILING |
The primary direction of arrangement of the rectangles. |
secondaryDirection |
enumerated: RIGHT, LEFT TRAILING, TOP, BOTTOM |
BOTTOM |
The secondary direction of arrangement of the rectangles. |
leadingMarginProportion |
double, between 0 and 1 |
0.02 |
Leading margin proportion. |
maximumLeadingMargin |
double |
2 |
Maximum leading margin, in pixels. |
trailingMarginProportion |
double, between 0 and 1 |
0.01 |
Trailing margin proportion. |
maximumTrailingMargin |
double |
2 |
Maximum trailing margin, in pixels. |
bottomMarginProportion |
double, between 0 and 1 |
0.02 |
Bottom margin proportion. |
maximumBottomMargin |
double |
2 |
Maximum bottom margin, in pixels. |
topMarginProportion |
double, between 0 and 1 |
0.05 |
Top margin proportion. |
maximumTopMargin |
double |
30 |
Maximum top margin, in pixels. |
marginReductionFactor |
double, between 0 and 1 |
1.0 |
Describes the margin proportions of a nested rectangle, compared to the margin proportions of the rectangle that contains it. |
useMarginsOnRoot |
boolean |
true |
Indicates whether margins also apply to the outermost rectangle. |
focusParentMarginProportion |
double, between 0 and 1 |
0.02 |
Focus parent margin proportion. |
maximumFocusParentMargin |
double |
5 |
Maximum focus parent margin, in pixels. |
colorScheme |
enumerated: CONSTANT, DEPTH, SEQUENTIAL, SEQUENTIAL_HUE, CYCLIC_SEQUENTIAL_HUE, QUALITATIVE, DIVERGING_RED_GREEN, DIVERGING_GREEN_RED, DIVERGING_BLUE_YELLOW, DIVERGING_YELLOW_BLUE, AVERAGE_RED_GREEN, AVERAGE_GREEN_RED, AVERAGE_BLUE_YELLOW, AVERAGE_YELLOW_BLUE |
CONSTANT |
The color scheme. |
colorForNaN |
Color |
#AAAAAA |
The color used when a value in the color column is NaN. |
strokeThreshold |
int |
0 |
The minimum size of a rectangle, under which the stroke of a rendering style is not used. |
annotation |
IlvDataAnnotation |
null |
An annotation for all the tree nodes. |
labelAlignmentX |
enumerated: LEFT, CENTER, RIGHT, LEADING, TRAILING |
LEADING |
The horizontal alignment of each label within the rectangle to which it belongs. |
labelAlignment Y |
enumerated: BOTTOM, CENTER, TOP |
TOP |
The vertical alignment of each label within the rectangle to which it belongs. |
labelFormat |
java.text.Format |
null |
The format for labels associated with rectangles. |
annotationClipping |
boolean |
true |
Indicates whether annotations are clipped to fit in their corresponding rectangle. |
annotationVisibility |
non-negative integer or one of ALL, SMART, NONE |
ALL |
The visibility mode for annotations. |
legendLabelFormat |
java.text.Format |
null |
The format for labels associated with colors in the legend. |