Implement Custom Java Class"

From Documentation
Line 4: Line 4:
  
 
=Implement Custom Java Class for Macro=
 
=Implement Custom Java Class for Macro=
 +
 +
A custom Java class for macro components must extend from <javadoc>org.zkoss.zk.ui.HtmlMacroComponent</javadoc>. <javadoc>org.zkoss.zk.ui.HtmlMacroComponent</javadoc> will wire fellows and event listener automatically, so the implementation is straightforward.
 +
 +
For example, suppose we have a macro template as follows.
 +
 +
<source lang="xml" >
 +
<hbox>
 +
Username: <textbox id="who"/>
 +
</hbox>
 +
</source>
 +
 +
Then, we could implement a Java class for it:
 +
 +
<source lang="java">
 +
import org.zkoss.zk.ui.HtmlMacroComponent;
 +
import org.zkoss.zul.Textbox;
 +
 +
public class Username extends HtmlMacroComponent {
 +
    private Textbox who;
 +
    public Username() {
 +
        compose(); //fore the template to be applied
 +
    }
 +
    public String getWho() {
 +
        return this.who.getValue();
 +
    }
 +
    public void setWho(String who) {
 +
        this.who.setValue(who);
 +
    }
 +
}
 +
</source>
  
 
=Declare Macro with Custom Java Class=
 
=Declare Macro with Custom Java Class=

Revision as of 10:26, 8 November 2010


Implement Custom Java Class


As described in the earlier sections, a macro component is instantiated to represent a regular macro. By default, HtmlMacroComponent is assumed (and instantiated). However, you provide a custom Java class to provide a better API to simplify the access and to encapsulate the implementation.

Implement Custom Java Class for Macro

A custom Java class for macro components must extend from HtmlMacroComponent. HtmlMacroComponent will wire fellows and event listener automatically, so the implementation is straightforward.

For example, suppose we have a macro template as follows.

<hbox>
	Username: <textbox id="who"/>
</hbox>

Then, we could implement a Java class for it:

import org.zkoss.zk.ui.HtmlMacroComponent;
import org.zkoss.zul.Textbox;

public class Username extends HtmlMacroComponent {
    private Textbox who;
    public Username() {
        compose(); //fore the template to be applied
    }
    public String getWho() {
        return this.who.getValue();
    }
    public void setWho(String who) {
        this.who.setValue(who);
    }
}

Declare Macro with Custom Java Class

Use Macro with Custom Java Class

In ZUML

The use of the macro component with a custom Java class in a ZUML page is the same as other macro components.

In Java

The main purpose of introducing a custom Java class is to simplify the use of a macro component in Java. For example, you could invoke a more meaningful setter directly rather than DynamicPropertied.setDynamicProperty(String, Object). In additions, the instantiation could be as simple as follows:

Username ua = new Username();
ua.setParent(wnd);
ua.setWho("Joe");

Version History

Last Update : 2010/11/8

Version Date Content
5.0.5 October, 2010 HtmlMacroComponent.compose() was introduced.



Last Update : 2010/11/08

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