JBoss.org Community Documentation

- Prev
- Next

## 6.66. < rich:panel >

### 6.66.1. Description

A skinnable panel that is rendered as a bordered rectangle with or without a header.

Figure 6.184. <rich:panel> component

### 6.66.2. Key Features

- Highly customizable look and feel

- Support for any content inside

- Header adding feature

Table 6.332. rich : panel attributes

Attribute Name | Description
--- | ---
binding | The attribute takes a value-binding expression for a component property of a backing bean
bodyClass | A class that defines a style for a panel content
header | Label text appears on a panel header
headerClass | A class that defines a style for a panel header
id | Every component may have a unique id that is automatically created if omitted
onclick | HTML: a script expression; a pointer button is clicked
ondblclick | HTML: a script expression; a pointer button is double-clicked
onkeydown | HTML: a script expression; a key is pressed down
onkeypress | HTML: a script expression; a key is pressed and released
onkeyup | HTML: a script expression; a key is released
onmousedown | HTML: script expression; a pointer button is pressed down
onmousemove | HTML: a script expression; a pointer is moved within
onmouseout | HTML: a script expression; a pointer is moved away
onmouseover | HTML: a script expression; a pointer is moved onto
onmouseup | HTML: script expression; a pointer button is released
rendered | If "false", this component is not rendered
style | CSS style(s) is/are to be applied when this component is rendered
styleClass | Corresponds to the HTML class attribute

Table 6.333. Component identification parameters

Name | Value
--- | ---
component-type | org.richfaces.panel
component-class | org.richfaces.component.html.HtmlPanel
component-family | org.richfaces.panel
renderer-type | org.richfaces.PanelRenderer
tag-class | org.richfaces.taglib.PanelTag

### 6.66.3. Creating the Component with a Page Tag

Here is a simple example as it could be used on a page:

Example:

    ...

        <rich:panel header="Panel Header">

            ...

            <!--Any Content inside-->

            ...

        </rich:panel>

    ...

### 6.66.4. Creating the Component Dynamically Using Java

Example:

    import org.richfaces.component.html.HtmlPanel;

    ...

    HtmlPanel myPanel = new HtmlPanel();

    ...

### 6.66.5. Details of Usage

The "header" attribute defines text to be represented. If you can use the "header" facet, you can even not use the "header" attribute.

Example:

    ...

        <rich:panel>

            <f:facet name="header">

                <h:graphicImage value="/images/img1.png"/>

            </f:facet>

            ...

            <!--Any Content inside-->

            ...

        </rich:panel>

    ...

<rich:panel> components are used to group page content pieces on similarly formatted rectangular panels.

Example:

    ...

        <rich:panel>

            ...

        </rich:panel>

    ...

It's generating on a page in the following way:

Figure 6.185. <rich:panel> without header

The example shows that similar rectangular areas are formed with a particular style.

When creating a panel with a header element, one more <div> element is added with content defined for a header.

Example:

    ...

        <rich:panel>

            <f:facet name="header">

                <h:outputText value="Olympus EVOLT E-500 "/>

            </f:facet>

            ...

        </rich:panel>

    ...

It's displayed on a page in the following way:

Figure 6.186. <rich:panel> with header

As it has been mentioned above, the component is mostly used for a page style definition, hence the main attributes are style ones.

- "styleClass"

- "headerClass"

- "bodyClass"

Moreover, to add e.g. some JavaScript effects, events defined on it are used.

- "onmouseover"

- "onclick"

- "onmouseout"

- etc.

### 6.66.6. Look-and-Feel Customization

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:panel> components at once:

- Redefine the corresponding skin parameters

- Add to your style sheets style classes used by a <rich:panel> component

### 6.66.7. Skin Parameters Redefinition

Table 6.334. Skin parameters redefinition for a whole component

Skin parameters | CSS properties
--- | ---
generalBackgroundColor | background-color
panelBorderColor | border-color

Table 6.335. Skin parameters redefinition for a header element

Skin parameters | CSS properties
--- | ---
headerBackgroundColor | background-color
headerBackgroundColor | border-color
headerSizeFont | font-size
headerTextColor | color
headerWeightFont | font-weight
headerFamilyFont | font-family

Table 6.336. Skin parameters redefinition for a body element

Skin parameters | CSS properties
--- | ---
generalSizeFont | font-size
generalTextColor | color
generalFamilyFont | font-family

### 6.66.8. Definition of Custom Style Classes

On the screenshot there are classes names that define styles for component elements.

Figure 6.187. Style classes

Table 6.337. Classes names that define a component appearance

Class name | Class description
--- | ---
rich-panel | Defines styles for a wrapper <div> element of a component
rich-panel-header | Defines styles for a header element
rich-panel-body | Defines styles for a body element

In order to redefine styles for all <rich:panel> components on a page using CSS, it's enough to create classes with the same names (possible classes could be found in the table above) and define necessary properties in them. An example is placed below:

Example:

    ...

    .rich-panel-body{

        background-color: #ebf3fd;

    }

    ...

This is a result:

Figure 6.188. Redefinition styles with predefined classes

In the example a body background color was changed.

Also it's possible to change styles of particular <rich:panel> component. In this case you should create own style classes and use them in corresponding <rich:panel> styleClass attributes. An example is placed below:

Example:

    ...

    .myClass{

        text-align: justify;

    }

    ...

The "bodyClass" attribute for <rich:panel> is defined as it's shown in the example below:

Example:

    <h:panel... bodyClass="myClass"/>

This is a result:

Figure 6.189. Redefinition styles with own classes and styleClass attributes

As it could be seen on the picture above, text align of body was changed.

### 6.66.9. Relevant Resources Links

Here you can see the example of <rich:panel> usage and sources for the given example.

- Prev6.65. < rich:paint2D >
- Top of page
- Front page
- Next6.67. < rich:panelBar >