Panel"

From Documentation
m (correct highlight (via JWB))
(13 intermediate revisions by 5 users not shown)
Line 17: Line 17:
  
 
<source lang="xml" >
 
<source lang="xml" >
<panel height="100px" width="200px" style="margin-bottom:10px"
+
    <panel height="20%" style="margin-bottom:10px"
    title="Panel1" border="normal" maximizable="true"
+
          title="Panel1" border="normal" maximizable="true" closable="true"
    collapsible="true">
+
          collapsible="true">
    <panelchildren>PanelContent1</panelchildren>
+
        <caption iconSclass="z-icon-home"/>
</panel>
+
        <panelchildren>PanelContent</panelchildren>
<panel height="100px" width="200px" framable="true" title="Panel2"
+
    </panel>
    border="normal" maximizable="true" style="margin-bottom:10px">
 
    <panelchildren>PanelContent2</panelchildren>
 
</panel>
 
 
</source>
 
</source>
  
Line 42: Line 39:
 
= Properties =
 
= Properties =
 
== Sizable==
 
== Sizable==
The panel can now be resized so long as the attribute sizable is set to true. The example ZUL below shows a panel which can be resized and the image displays a panel which is in the process of being resized.
+
The panel can now be resized as long as the attribute sizable is set to true. The example ZUL below shows a panel which can be resized and the image displays a panel which is in the process of being resized.
 
<source lang="xml">
 
<source lang="xml">
 
<panel sizable="true" id="panel" framable="true" width="500px" height="400px"
 
<panel sizable="true" id="panel" framable="true" width="500px" height="400px"
Line 53: Line 50:
 
</panel>
 
</panel>
 
</source>
 
</source>
[Since 5.0.0]
+
{{versionSince|5.0.0}}
 +
 
 
== Draggable ==
 
== Draggable ==
  
 
When used with [[ZK Component Reference/Layouts/Portallayout | Portallayout]], the draggable property (<javadoc method="setDraggable(java.lang.String)">org.zkoss.zk.ui.HtmlBasedComponent</javadoc>) can be used to control whether the panel is draggable under the portal layout.
 
When used with [[ZK Component Reference/Layouts/Portallayout | Portallayout]], the draggable property (<javadoc method="setDraggable(java.lang.String)">org.zkoss.zk.ui.HtmlBasedComponent</javadoc>) can be used to control whether the panel is draggable under the portal layout.
  
<source lang="xml" high="13">
+
<source lang="xml" highlight="13">
 
<portallayout>
 
<portallayout>
 
   <portalchildren style="padding: 5px" width="30%">
 
   <portalchildren style="padding: 5px" width="30%">
Line 79: Line 77:
 
</portallayout>
 
</portallayout>
 
</source>
 
</source>
[Since 5.0.3]
+
{{versionSince|5.0.3}}
  
 
==  Border ==
 
==  Border ==
It specifies whether to display the border. Currently, it supports only <code>normal</code> and <code>none</code>.
+
It specifies whether to display the border. Currently, it supports <code>none</code>, <code>normal</code>, <code>rounded</code> and <code>rounded+</code>. The default is <code>none</code>, i.e., no border.
The default is <code>none</code>, i.e., no border.
+
 
 +
Here is the effect with different borders:
 +
 
 +
[[Image:DrPanelBorder.png]]
 +
 
 +
<blockquote>
 +
----
 +
Backward Compatibility: ZK 5.0.5 and prior shall use the combination of the border and framable property as follows.
 +
{| class='wikitable' | width="100%"
 +
! Border in 5.0.6 !! The equivalent combination in 5.0.5 and prior !! Description
 +
|-
 +
| border="none"
 +
| border="none"
 +
| framable is default to <code>false</code>
 +
|-
 +
| border="normal"
 +
| border="normal"
 +
| framable is default to <code>false</code>
 +
|-
 +
| border="rounded"
 +
| framable="true"
 +
| border is default to <code>none</code>
 +
|-
 +
| border="rounded+"
 +
| border="normal" framable="true"
 +
|
 +
|}
 +
* Notice that the use of the border and framable combiation still works in 5.0.6 (backward compatible).
 +
</blockquote>
  
 
== Title ==
 
== Title ==
Line 91: Line 117:
 
== Closable ==
 
== Closable ==
 
Specify the panel whether to show a close button on the title bar or not. If closable, a button is displayed and the onClose event (<javadoc>org.zkoss.zk.ui.event.OpenEvent</javadoc>) is sent if a user clicks the button. (Default: false)
 
Specify the panel whether to show a close button on the title bar or not. If closable, a button is displayed and the onClose event (<javadoc>org.zkoss.zk.ui.event.OpenEvent</javadoc>) is sent if a user clicks the button. (Default: false)
 +
 +
= Miscellaneous =
 +
== Scrollable Panel ==
 +
To make the scrollbar appear when content exceeds panel height, specify <code>style="overflow: auto"</code> on Panelchildren.
 +
 +
<source lang="xml" highlight="2">
 +
<panel height="200px">
 +
<panelchildren style="overflow: auto">
 +
<div style="background: #999966" height="195px" />
 +
<div style="background: #669999">Div Content</div>
 +
</panelchildren>
 +
</panel>
 +
</source>
 +
 +
== Toolbar positions ==
 +
Panel supports three kinds of <javadoc>org.zkoss.zul.Toolbar</javadoc> positions: <code>Top</code>, <code>Bottom</code> and <code>Foot</code>. For example:
 +
 +
[[File:Panel-des.gif]]
 +
 +
<source lang="xml" highlight="5,11,14">
 +
<panel id="panel" framable="true" width="500px" height="550px"
 +
    title="Panel component" floatable="true" movable="true"
 +
    maximizable="true" minimizable="true" border="normal"
 +
    collapsible="true" closable="true">
 +
        <toolbar>
 +
          ... // Top Toolbar of the panel
 +
        </toolbar>
 +
        <panelchildren>
 +
          ... // Each added child will show into the body content of the panel
 +
        </panelchildren>
 +
        <toolbar>
 +
          ... // Bottom Toolbar of the panel
 +
        </toolbar>
 +
        <toolbar>
 +
          ... // Foot Toolbar of the panel
 +
        </toolbar>
 +
</panel>
 +
</source>
 +
 +
* Top Toolbar (Line 5): It is used to show the top toolbar close to the body content of the panel. (It is an option)
 +
* Bottom Toolbar (Line 11): It is used to show the bottom toolbar close to the body content of the panel. (It is an option)
 +
* Foot Toolbar (Line 14): It is used to show the operating button under the body content with a few padding. (It is an option)
 +
 +
Please refer [[Small_Talks/2008/July/Using_Panel_to_Lay_out_Your_Website]] for details.
  
 
=Supported Events=
 
=Supported Events=
  
{| border="1" | width="100%"
+
{| class='wikitable' | width="100%"
 
! <center>Name</center>
 
! <center>Name</center>
 
! <center>Event Type</center>
 
! <center>Event Type</center>
  
 
|-
 
|-
| <center><tt>onMove </tt></center>
+
| <center><code>onMove </code></center>
 
|  '''Event:''' <javadoc>org.zkoss.zk.ui.event.MoveEvent</javadoc>
 
|  '''Event:''' <javadoc>org.zkoss.zk.ui.event.MoveEvent</javadoc>
  
Line 105: Line 175:
  
 
|-
 
|-
| <center><tt>onOpen </tt></center>
+
| <center><code>onOpen </code></center>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.OpenEvent</javadoc>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.OpenEvent</javadoc>
  
Denotes user has opened or closed a component.<tt> </tt>
+
Denotes user has opened or closed a component.<code> </code>
  
<tt>'''Note:'''</tt>
+
<code>'''Note:'''</code>
  
Unlike <tt>onClose</tt>, this event is only a notification. The
+
Unlike <code>onClose</code>, this event is only a notification. The
  
 
client sends this event after opening or closing the
 
client sends this event after opening or closing the
Line 120: Line 190:
 
It is useful to implement load-on-demand by listening to
 
It is useful to implement load-on-demand by listening to
  
the <tt>onOpen</tt> event, and creating components when the
+
the <code>onOpen</code> event, and creating components when the
  
 
first time the component is opened.
 
first time the component is opened.
  
 
|-
 
|-
| <center><tt>onMaximize </tt></center>
+
| <center><code>onMaximize </code></center>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.MaximizeEvent</javadoc>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.MaximizeEvent</javadoc>
  
Line 131: Line 201:
  
 
|-
 
|-
| <center><tt>onMinimize </tt></center>
+
| <center><code>onMinimize </code></center>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.MinimizeEvent</javadoc>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.MinimizeEvent</javadoc>
  
Line 137: Line 207:
  
 
|-
 
|-
| <center><tt>onClose </tt></center>
+
| <center><code>onClose </code></center>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.OpenEvent</javadoc>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.OpenEvent</javadoc>
  
Line 146: Line 216:
  
 
|-
 
|-
| <center><tt>onSize</tt></center>
+
| <center><code>onSize</code></center>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.SizeEvent</javadoc>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.SizeEvent</javadoc>
  
Line 152: Line 222:
  
 
|-
 
|-
| <center><tt>onZIndex</tt></center>
+
| <center><code>onZIndex</code></center>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.ZIndexEvent</javadoc>
 
| '''Event:''' <javadoc>org.zkoss.zk.ui.event.ZIndexEvent</javadoc>
  
Line 167: Line 237:
 
=Use Cases=
 
=Use Cases=
  
{| border='1px' | width="100%"
+
{| class='wikitable' | width="100%"
 
! Version !! Description !! Example Location
 
! Version !! Description !! Example Location
 
|-
 
|-
Line 177: Line 247:
 
=Version History=
 
=Version History=
 
{{LastUpdated}}
 
{{LastUpdated}}
{| border='1px' | width="100%"
+
{| class='wikitable' | width="100%"
 
! Version !! Date !! Content
 
! Version !! Date !! Content
 
|-
 
|-
Line 183: Line 253:
 
| July, 2010
 
| July, 2010
 
| The draggable property can be used to control the drag-ability in a portal layout.
 
| The draggable property can be used to control the drag-ability in a portal layout.
 +
|-
 +
| 5.0.6
 +
| January, 2010
 +
| The framable property was deprecated. Please refer to [[#Border]] for details.
 
|}
 
|}
  
 
{{ZKComponentReferencePageFooter}}
 
{{ZKComponentReferencePageFooter}}

Revision as of 13:49, 19 January 2022

Panel

Employment/Purpose

Panel is a container that has specific functionality and structural components that make it the perfect building block for application-oriented user interfaces. The Panel contains bottom, top, and foot toolbars, along with separate header, footer and body sections. It also provides built-in collapsible, closable, maximizable, and minimizable behavior, along with a variety of pre-built tool buttons that can be wired up to provide other customized behavior. Panels can be easily embedded into any kind of ZUL component that is allowed to have children or layout component. Panels also provide specific features like float and move. Unlike Window, Panels can only be floated and moved inside its parent node, which is not using zk.setVParent() function at client side. In other words, if Panel's parent node is an relative position, the floated panel is only inside its parent, not the whole page. The second difference of Window is that Panel is not an independent ID space (by implementing IdSpace), so the ID of each child can be used throughout the panel.

Example

ZKComRef Panel Simple Examples.PNG

    <panel height="20%"  style="margin-bottom:10px"
           title="Panel1" border="normal" maximizable="true" closable="true"
           collapsible="true">
        <caption iconSclass="z-icon-home"/>
        <panelchildren>PanelContent</panelchildren>
    </panel>

Java Example

Panel panel = new Panel();
panel.setTitle("Here is Title");
panel.setBorder("normal");
panel.setFramable(true);

Panelchildren pc = new Panelchildren();
pc.setParent(panel);
pc.appendChild(new Label("Here is Content"));

Properties

Sizable

The panel can now be resized as long as the attribute sizable is set to true. The example ZUL below shows a panel which can be resized and the image displays a panel which is in the process of being resized.

<panel sizable="true" id="panel" framable="true" width="500px" height="400px"
    title="Panel"
    maximizable="true" minimizable="true" border="normal"
    collapsible="true" closable="true">
    <panelchildren>
        <textbox width="100%" height="100%" />
    </panelchildren>
</panel>

Since 5.0.0

Draggable

When used with Portallayout, the draggable property (HtmlBasedComponent.setDraggable(String)) can be used to control whether the panel is draggable under the portal layout.

<portallayout>
   <portalchildren style="padding: 5px" width="30%">
      <panel height="150px" title="Google Tools" border="normal"
           collapsible="true" closable="true" maximizable="true"
           style="margin-bottom:10px">
         <panelchildren>
 
         </panelchildren>
      </panel>
      <panel height="300px" title="LabPixies Clock" border="normal"
           collapsible="true" closable="true" maximizable="true"
           style="margin-bottom:10px"
           draggable="false">
          <panelchildren>
             This is not draggable. 
          </panelchildren>
      </panel>
   </portalchildren>
</portallayout>

Since 5.0.3

Border

It specifies whether to display the border. Currently, it supports none, normal, rounded and rounded+. The default is none, i.e., no border.

Here is the effect with different borders:

DrPanelBorder.png


Backward Compatibility: ZK 5.0.5 and prior shall use the combination of the border and framable property as follows.

Border in 5.0.6 The equivalent combination in 5.0.5 and prior Description
border="none" border="none" framable is default to false
border="normal" border="normal" framable is default to false
border="rounded" framable="true" border is default to none
border="rounded+" border="normal" framable="true"
  • Notice that the use of the border and framable combiation still works in 5.0.6 (backward compatible).

Title

Besides this attribute, you could use Caption to define a more sophisticated caption (aka., title). If the panel has a caption whose label Caption.getLabel() is not empty, then this attribute is ignored. (Default: empty).

Closable

Specify the panel whether to show a close button on the title bar or not. If closable, a button is displayed and the onClose event (OpenEvent) is sent if a user clicks the button. (Default: false)

Miscellaneous

Scrollable Panel

To make the scrollbar appear when content exceeds panel height, specify style="overflow: auto" on Panelchildren.

<panel height="200px">
	<panelchildren style="overflow: auto">
		<div style="background: #999966" height="195px" />
		<div style="background: #669999">Div Content</div>
	</panelchildren>
</panel>

Toolbar positions

Panel supports three kinds of Toolbar positions: Top, Bottom and Foot. For example:

Panel-des.gif

<panel id="panel" framable="true" width="500px" height="550px"
    title="Panel component" floatable="true" movable="true"
    maximizable="true" minimizable="true" border="normal"
    collapsible="true" closable="true">
        <toolbar>
          ... // Top Toolbar of the panel
        </toolbar>
        <panelchildren>
          ... // Each added child will show into the body content of the panel
        </panelchildren>
        <toolbar>
          ... // Bottom Toolbar of the panel
        </toolbar>
        <toolbar>
          ... // Foot Toolbar of the panel
        </toolbar>
</panel>
  • Top Toolbar (Line 5): It is used to show the top toolbar close to the body content of the panel. (It is an option)
  • Bottom Toolbar (Line 11): It is used to show the bottom toolbar close to the body content of the panel. (It is an option)
  • Foot Toolbar (Line 14): It is used to show the operating button under the body content with a few padding. (It is an option)

Please refer Small_Talks/2008/July/Using_Panel_to_Lay_out_Your_Website for details.

Supported Events

Name
Event Type
onMove
Event: MoveEvent

Denotes the position of the window is moved by a user.

onOpen
Event: OpenEvent

Denotes user has opened or closed a component.

Note:

Unlike onClose, this event is only a notification. The

client sends this event after opening or closing the

component.

It is useful to implement load-on-demand by listening to

the onOpen event, and creating components when the

first time the component is opened.

onMaximize
Event: MaximizeEvent

Denotes user has maximize a component.

onMinimize
Event: MinimizeEvent

Denotes user has minimize a component.

onClose
Event: OpenEvent

Denotes the close button is pressed by a user, and the

component shall detach itself.


onSize
Event: SizeEvent

Denotes the panel's size is updated by a user.

onZIndex
Event: ZIndexEvent

Denotes the panel's zindex is updated by a user.

Supported Children

* Panelchildren

Use Cases

Version Description Example Location
5.0 Portallayout, panels and events http://www.zkoss.org/forum/listComment/10765

Version History

Last Update : 2022/01/19


Version Date Content
5.0.3 July, 2010 The draggable property can be used to control the drag-ability in a portal layout.
5.0.6 January, 2010 The framable property was deprecated. Please refer to #Border for details.



Last Update : 2022/01/19

Copyright © Potix Corporation. This article is licensed under GNU Free Documentation License.