
The new option allows you to "Use CSS File". When you select this file a dialog that enables you to select a file.
Once you have attached the CSS file, you will then have access to any of the classes in the CSS file to use as styles within your report. But this is just the beginning. All of the major objects and positions within a BIRT report have a default style associated with them. By modifying the default style settings you can change the look of your report without having to set any styles manually.
The best place to start with the pre-defined styles is to start with the visual objects that make up the report the controls. Each control type has a default style associated with it.
- text
- label
- text
- data
- image
- text-data
So adding the following entry in your style sheet will change the default behavior of all text controls to be orange.
.text{
color: orange;
}
In reality, one should be very careful with how many changes are made to the lowest level styles. Changing a property for a basic control style, will change the style for all instance of that control, unless the control specifically over-rides the property. So if you want all of your text to be orange, by all means modify the base control classes. If on the other hand, you want to modify report style by position within the report, then read on. In other words, if you want the header for all of your tables to look one way and the detail to look another, BIRT provides default classes that control that behavior.
Before moving into the full array of BIRT default classes, I want to expose the CSS properties that BIRT supports. The following table documents the properties and the default property values that BIRT uses.
| CSS Property | Values | Default | Inherit |
| background-attachment | scroll | fixed | inherit |
| <color>| transparent | inherit |
| background-image | <uri> | none | inherit |
| background-position | [ [ <percentage> | <length> | left | center | right ] [ <percentage> | <length> | top | center | bottom ]? ] | [ [ left | center | right ] || [ top | center | bottom ] ] | inherit |
| background-repeat | repeat | repeat-x | repeat-y | no-repeat | inherit |
| border-top-color , border-right-color , border-bottom-color , border-left-color | <color> | transparent | inherit |
| border-top-style , border-right-style , border-bottom-style , border-left-style | <border-style> | inherit |
| border-top-width , border-right-width , border-bottom-width , border-left-width | <border-width> | inherit |
| color | <color> | inherit |
| display | inline | block | list-item | run-in | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit |
| font-family | [[ <family-name> | <generic-family> ] [, <family-name> | <generic-family>]* ] | inherit |
| font-size | <absolute-size> | <relative-size> |<length> | <percentage>| inherit |
| font-style | normal | italic | oblique | inherit |
| font-variant | normal | small-caps |inherit |
| font-weight | normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit |
| letter-spacing | normal | <length> | inherit |
| line-height | normal |<number> | <length> | <percentage> | inherit |
| margin-right , margin-left | <margin-width> | inherit |
| margin-top , margin-bottom | <margin-width> | inherit |
| orphans | <integer> | inherit |
| padding-top , padding-right , padding-bottom , padding-left | <padding-width> | inherit |
| page-break-after | auto | always | avoid | left | right | inherit |
| page-break-before | auto | always | avoid | left | right | inherit |
| page-break-inside | avoid | auto | inherit |
| text-indent | <length> | <percentage> | inherit |
| text-align | left | right | center | justify | inherit |
| text-decoration | none | [ underline || overline || line-through || blink ] | inherit |
| text-transform | capitalize | uppercase | lowercase | none | inherit |
| white-space | normal | pre | nowrap | pre-wrap | pre-line | inherit |
| widows | <integer> | inherit |
| word-spacing | normal | <length>|inherit |
| vertical-align | baseline | sub | super | top | text-top | middle | bottom | text-bottom | <percentage> | <length> | inherit |
Most of you are probably familiar with the standard HTML cascade:
Table
tr
td
A td element will inherit from either the table or the row if it has not defined its own value. If you do specify a property value for the td selector, than it will over-ride the values set at both the row and table levels.
BIRT uses its own cascade precedence. Since each of the major objects and functional positions is assigned a default style. The next table shows the precedence used for the BIRT default styles.
| Controls |
| data |
| image |
| label |
| text |
| text-data |
| report |
| page |
| grid |
| list |
| list-header |
| list-detail |
| list-footer |
| list-group-footer-1 |
| . . . |
| list-group-footer-9 |
| list-group-header-1 |
| . . . |
| list-group-header-9 |
| table |
| table-header |
| table-header-cell |
| table-detail |
| table-detail-cell |
| table-footer |
| table-footer-cell |
| table-group-header-1 |
| table-group-header-cell |
| . . . |
| table-group-header-9 |
| table-group-footer-1 |
| table-group-footer-cell | |
| . . . |
| table-group-footer-9 |
| TOC-level-0 |
| . . . |
| TOC-level-9 |
So if you want to change the font-family for all of the controls within your report, then you can use the following within your CSS document.
.report{
font-family: sans-serif;
}
If you want the tables in the report to use italics and a serif font, then you would add:
font-family: sans-serif;
.table{
font-style: italics;
font-family: serif;
}
As you can see, you can control the behavior for headers, detail sections, and footers for list and tables. In addition, each of the group headings can use its own style up to 9 levels deep. In the previous article, I provided a CSS document that was setup to take advantage of this feature. Unfortunately, the Default Style Names have changed between 2.1 and 2.2. I have revised the style-sheet to work with the new default style names.
.report {
font-family : sans-serif;
font-size : medium;
font-weight : bold;
color : #FFFFE0;
}
.table-group-header-1 {
background : #0B285B;
border-bottom : double;
border-top : solid;
border-top-width : thin;
border-color : #FFF8DC;
}
.table-group-header-2 {
background : #13449B;
border-bottom : double;
border-top : solid;
border-top-width : thin;
border-color : #FFF8DC;
font-size : small;
}
.table-header {
background : #6495ED;
border-bottom : double;
border-top : solid;
border-top-width : thin;
border-color : #483D8B;
}
.table-detail {
background : #F0F8FF;
font-size : small;
font-weight : bold;
color : #4682B4;
}
.table-footer {
background : #6495ED;
border-top : double;
border-bottom : solid;
border-bottom-width : thin;
border-color : #483D8B;
font-size : x-small;
} I am hopeful that in the next edition, I can take a look at adding a bit of code to the report that will do more to automatically assign styles to reports, even if you are using custom styles. I will let you know when I get it done.