panelBarItem is used for grouping any content inside within one panelBar which is loaded on client side and appears as groups divided on child panels after header is clicked.
Table 6.339. rich : panelBarItem attributes
Attribute Name | Description |
---|---|
binding | The attribute takes a value-binding expression for a component property of a backing bean |
contentClass | The component content style class |
contentStyle | The component content style |
headerClass | The component header style class |
headerClassActive | The component header style class active |
headerStyle | The component header style |
headerStyleActive | The component header style active |
id | Every component may have a unique id that is automatically created if omitted |
label | Label text appears on a panel item header |
name | Attribute defines item name |
onenter | Event must occurs on than item has been entered |
onleave | Event must occurs on than item has been leaved |
rendered | If "false", this component is not rendered |
Table 6.340. Component identification parameters
Name | Value |
---|---|
component-type | org.richfaces.PanelBarItem |
component-class | org.richfaces.component.html.HtmlPanelBarItem |
component-family | org.richfaces.PanelBarItem |
renderer-type | org.richfaces.PanelBarItemRenderer |
tag-class | org.richfaces.taglib.PanelBarItemTag |
To create the simplest variant on a page use the following syntax:
Example:
...
<rich:panelBar>
<rich:panelBarItem label="Canon">
...
</rich:panelBarItem>
<rich:panelBarItem label="Nikon">
...
</rich:panelBarItem>
</rich:panelBar>
...
Example:
import org.richfaces.component.html.HtmlPanelBarItem;
...
HtmlPanelBarItem myBarItem = new HtmlPanelBarItem();
...
The "label" attribute defines text to be represented. If you can use the "label" facet, you can even not use the "label" attribute.
Example:
...
<rich:panelBarItem...>
<f:facet name="label">
<h:graphicImage value="/images/img1.png"/>
</f:facet>
...
<!--Any Content inside-->
...
</rich:panelBarItem>
...
As it was mentioned above, panelBarItem is used for grouping any content inside within one panelBar, thus its customization deals only with specification of sizes and styles for rendering.
panelBar could contain any number of child panelBarItem components inside, which content is uploaded onto the client and headers are controls to open the corresponding child element.
For skinnability implementation, the components use a style class redefinition method. Default style classes are mapped on skin parameters.
There are two ways to redefine the appearance of all <rich:panelBarItem> components at once:
Redefine the corresponding skin parameters
Add to your style sheets style classes used by a <rich:panelBarItem> component
Table 6.341. Skin parameters redefinition for a content
Skin parameters | CSS properties |
---|---|
generalTextColor | color |
preferableDataSizeFont | font-size |
preferableDataFamilyFont | font-family |
Table 6.342. Skin parameters redefinition for a header element (active or inactive)
Skin parameters | CSS properties |
---|---|
headerTextColor | color |
headerBackgroundColor | background-color |
headerSizeFont | font-size |
headerWeightFont | font-weight |
headerFamilyFont | font-family |
On the screenshot there are classes names that define styles for component elements.
Table 6.343. Classes names that define a component appearance
Class name | Class description |
---|---|
rich-panelbar-header | Defines styles for a wrapper <div> element of a header element |
rich-panelbar-header-act | Defines styles for a wrapper <div> element of an active header element |
rich-panelbar-content | Defines styles for a content |
Table 6.344. Style component classes
A class attribute | A component element defined by an attribute |
---|---|
headerClass | Applicable to a header element |
contentClass | Applicable to a content |
In order to redefine styles for all <rich:panelBarItem> components on a page using CSS, it's enough to create classes with the same names and define necessary properties in them.
To change styles of particular <rich:panelBarItem> components, define your own style classes in the corresponding <rich:panelBarItem> attributes.
CSS code piece used on a page:
Example:
...
.rich-panelbar-header{
font-size:14px;
}
.myClass{
font-style:italic;
}
...
The component is defined in the following way:
Example:
...
<rich:panelBar>
<rich:panelBarItem contentClass="myClass">
...
</rich:panelBarItem>
</rich:panelBar>
...
Hence, a font size of all <rich:panelBarItem> headers is changed on a page as well as a font for the particular <rich:panelBarItem> content.