Messagebox"

From Documentation
Line 15: Line 15:
 
= Example =
 
= Example =
  
== Event Thread Disabled (default) ==
+
The simplest use of a message box is to inform the user something is done. For example,
Here is an example used if [[ZK Developer's Reference/UI Patterns/Event Threads|the event thread is disabled]] (default case). The invocation of <javadoc method="show(java.lang.String, java.lang.String, int, java.lang.String)">org.zkoss.zul.Messagebox</javadoc> will return immediately after the invocation. To know which button is clicked, you have to implement a listener as follows. If you don't need to know which button is clicked, you could simply pass <tt>null</tt>.
+
 
 +
<source lang="java">
 +
Messagebox.show("The backup has been done.");
 +
Messagebox.show("Failed to access the information", null, 0,  Messagebox.ERROR);
 +
</source>
 +
 
 +
There are a lot of utilities that allow you to show a message in different look, such as the buttons, icon and title. Please refer to <javadoc>org.zkoss.zul.Messagebox</javadoc> for more information.
 +
 
 +
== Take Actions Depending On Which Button Is Clicked ==
 +
If you'd like to know which button is clicked, you have to implement an event listener<ref>If you want to make it running under clustering environment, you should implement <javadoc type="interface">org.zkoss.zk.ui.event.SerializableEventListener</javadoc>. For more information, please refer to [[ZK Developer's Reference/Clustering/Programming Tips|ZK Developer's Reference: Clustering]].</ref>. For example,
  
 
<source lang="java" >
 
<source lang="java" >
Line 34: Line 43:
 
</source>
 
</source>
  
* Notice that, if you want to make it running under clustering environment, you should implement <javadoc type="interface">org.zkoss.zk.ui.event.SerializableEventListener</javadoc>. For more information, please refer to [[ZK Developer's Reference/Clustering/Programming Tips|ZK Developer's Reference: Clustering]].
+
The invocation of <javadoc method="show(java.lang.String, java.lang.String, int, java.lang.String)">org.zkoss.zul.Messagebox</javadoc> will return immediately after the invocation<ref>Here we assume [[ZK Developer's Reference/UI Patterns/Event Threads|the event thread is disabled]] (default). If the event thread is disabled, you could know which button is clicked by examining the returned value.</ref>. Then, if the user clicks a button, the event listener will be invoked. You could examine the event name to know which button is clicked. If the user clicked the Close button on the right-top corner, the <tt>onClose</tt> event is fired.
  
=== Listening to ClickEvent ===
+
<blockquote>
 +
----
 +
<references/>
 +
</blockquote>
  
== Event Thread Enabled ==
+
=== Listen ClickEvent ===
Here is an example used if [[ZK Developer's Reference/UI Patterns/Event Threads|the event thread is enabled]].
 
  
<source lang="xml" >
+
==Assign the Order of Buttons==
<window title="Messagebox demo" border="normal">
+
==Assign the Labels of Buttons==
<button label="Question" width="100px">
 
<attribute name="onClick">
 
//in enable case .
 
int responseCode = Messagebox.show("Question is pressed. Are you sure?",
 
"Question", Messagebox.OK | Messagebox.CANCEL,
 
Messagebox.QUESTION);
 
 
if(responseCode == Messagebox.OK){
 
alert("user click ok");
 
}else if(responseCode == Messagebox.CANCEL){
 
alert("user click cancel");
 
}
 
</attribute>
 
</button>
 
</window>
 
</source>
 
  
 
=Customization=
 
=Customization=

Revision as of 07:57, 13 October 2011

Messagebox

Employment/Purpose

It provides a set of utilities to show a message and have a user to confirm a situation.

It is typically used to alert users when an error occurs, or to prompt users for an decision.

Example

The simplest use of a message box is to inform the user something is done. For example,

Messagebox.show("The backup has been done.");
Messagebox.show("Failed to access the information", null, 0,  Messagebox.ERROR);

There are a lot of utilities that allow you to show a message in different look, such as the buttons, icon and title. Please refer to Messagebox for more information.

Take Actions Depending On Which Button Is Clicked

If you'd like to know which button is clicked, you have to implement an event listener[1]. For example,

Messagebox.show("Question is pressed. Are you sure?", 
	"Question", Messagebox.OK | Messagebox.CANCEL,
	Messagebox.QUESTION,
	 	new org.zkoss.zk.ui.event.EventListener(){
	 		public void onEvent(Event e){
	 			if(Messagebox.ON_OK.equals(e.getName())){
	 				alert("user click ok ");
	 			}else if(Messagebox.ON_CANCEL.equals(e.getName())){
	 				alert("user click cancel ");
	 			}
	 		}
	 	}
	);

The invocation of Messagebox.show(String, String, int, String) will return immediately after the invocation[2]. Then, if the user clicks a button, the event listener will be invoked. You could examine the event name to know which button is clicked. If the user clicked the Close button on the right-top corner, the onClose event is fired.


  1. If you want to make it running under clustering environment, you should implement SerializableEventListener. For more information, please refer to ZK Developer's Reference: Clustering.
  2. Here we assume the event thread is disabled (default). If the event thread is disabled, you could know which button is clicked by examining the returned value.

Listen ClickEvent

Assign the Order of Buttons

Assign the Labels of Buttons

Customization

The Default Title

If the title is not specified in the application's name (returned by WebApp.getAppName()). You could change it by invoking WebApp.setAppName(String).

Since 5.0.6, you could specify the application's name with a library property called org.zkoss.zk.ui.WebApp.name. For example, you could specify the following in WEB-INF/zk.xml:

<library-property>
    <name>org.zkoss.zk.ui.WebApp.name</name>
    <value>My Killer Application</value>
</library-property>

The Template

The UI of a message box is based on a ZUL file, so you could customize it by replacing it with your own implementation. It can be done easily by invoking Messagebox.setTemplate(String). Notice that it affects all message boxes used in an application. It is typically called when the application starts (i.e., in WebAppInit.init(WebApp) -- for more information, please refer to ZK Developer's Reference: Init and Cleanup).

To implement a custom template, please take a look at the default template.

Supported events

Name
Event Type
None None

Supported Children

*NONE

Use cases

Version Description Example Location
     

Version History

Version Date Content
6.0.0 October 2011 The order and labels of the buttons were assignable.
6.0.0 October 2011 Messagebox.ClickEvent was introduced to simplify the identification of a button.



Last Update : 2011/10/13

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