Implement Custom Java Class

From Documentation


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.