org.zkoss.zk.ui.select
Class SelectorComposer<T extends Component>

java.lang.Object
  extended by org.zkoss.zk.ui.select.SelectorComposer<T>
All Implemented Interfaces:
java.io.Serializable, ComponentActivationListener, ComponentCloneListener, Composer<T>, ComposerExt<T>

public class SelectorComposer<T extends Component>
extends java.lang.Object
implements Composer<T>, ComposerExt<T>, ComponentCloneListener, ComponentActivationListener, java.io.Serializable

A composer analogous to GenericForwardComposer. Instead of wiring variables and adding event listeners by naming convention, this composer do the work by annotation and selectors.

For example:

 MyComposer.java
 
 public class MyComposer extends SelectorComposer {
     
     @Wire("#win")
     private Window myWin;
     
     // implicit variables
     @WireVariable
     private Desktop desktop;
     
     @Listen("onClick = button#btn")
     public void onSubmit(Event event){
         // do something ...
     }
     
 }
 
The selector syntax is analogous to CSS selector syntax. For example,

 @Wire("textbox") // matches all textboxes
 @Wire("#win") // matches components of id "#win" within the same IdSpace
 @Wire(".myclass") // matches components of sclass "myclass"
 @Wire("label[value = 'My Label']") // matches all labels with value "My Label"
 @Wire(":first-child") // matches all components which are first child
 @Wire("window textbox") // matches textbox who is a descendant of a window
 @Wire("window > textbox") // matches textbox who is a child of a window
 @Wire("window + textbox") // matches textbox who is the next sibling of a window
 @Wire("window ~ textbox") // matches textbox who is a younger sibling of a window
 @Wire("window > textbox.myclass:first-child") // conditions can be mixed
 

Since:
6.0.0
Author:
simonpai
See Also:
Serialized Form

Nested Class Summary
static interface SelectorComposer.UtilityHandler
          An interface for SelectorComposer's functionality plug-in.
static class SelectorComposer.UtilityHandlerImpl
          Default skeletal implementation of SelectorComposer.UtilityHandler.
 
Field Summary
protected  java.util.List<VariableResolver> _resolvers
          A list of resolvers (never null).
 
Constructor Summary
SelectorComposer()
           
 
Method Summary
protected  void alert(java.lang.String m)
          Shortcut to call Messagebox.show(String).
 void didActivate(Component comp)
          Called when a session has just been activated (and its value has been deserialized).
 void doAfterCompose(T comp)
          Invokes after ZK loader creates this component, initializes it and composes all its children, if any.
 ComponentInfo doBeforeCompose(Page page, Component parent, ComponentInfo compInfo)
          Invokes before composing a component.
 void doBeforeComposeChildren(T comp)
          Invokes after the component is instantiated and initialized, but before composing any child.
 boolean doCatch(java.lang.Throwable ex)
          Called when an exception occurs when composing the component.
 void doFinally()
          Called after the component has been composed completely.
protected  Page getPage()
          Returns the current page.
protected  T getSelf()
          Returns the component which applies to this composer.
protected static SelectorComposer.UtilityHandler getUtilityHandler()
           
 java.lang.Object willClone(Component comp)
          Internal use only.
 void willPassivate(Component comp)
          Called when a session is about to be passivated (and then serialize its value).
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_resolvers

protected final java.util.List<VariableResolver> _resolvers
A list of resolvers (never null). A variable resolver is added automatically if VariableResolver was annotated.

Constructor Detail

SelectorComposer

public SelectorComposer()
Method Detail

doBeforeCompose

public ComponentInfo doBeforeCompose(Page page,
                                     Component parent,
                                     ComponentInfo compInfo)
Description copied from interface: ComposerExt
Invokes before composing a component. If you want to manipulate the specified component info, you can use ComponentInfo.duplicate() to make a copy and then modify it such that it won't affect the default behavior.

Specified by:
doBeforeCompose in interface ComposerExt<T extends Component>
Parameters:
page - the page for composing this component.
parent - the parent component, or null if it is the root component.
compInfo - the component info used to instantiate the component. Notice that it is null if the page is rendered as ZK JSP, since ComponentInfo is not available under ZK JSP.
Returns:
the component info used to instantiate the component. In most case, it shall return compInfo. If null is returned, the component won't be instantiated. In other words, it is ignored.

doBeforeComposeChildren

public void doBeforeComposeChildren(T comp)
                             throws java.lang.Exception
Description copied from interface: ComposerExt
Invokes after the component is instantiated and initialized, but before composing any child.

Specified by:
doBeforeComposeChildren in interface ComposerExt<T extends Component>
Parameters:
comp - the component being composed
Throws:
java.lang.Exception

doAfterCompose

public void doAfterCompose(T comp)
                    throws java.lang.Exception
Description copied from interface: Composer
Invokes after ZK loader creates this component, initializes it and composes all its children, if any.

Specified by:
doAfterCompose in interface Composer<T extends Component>
Parameters:
comp - the component has been composed
Throws:
java.lang.Exception

getSelf

protected T getSelf()
Returns the component which applies to this composer.

Since:
6.0.1

getPage

protected Page getPage()
Returns the current page.


alert

protected void alert(java.lang.String m)
Shortcut to call Messagebox.show(String).


willClone

public java.lang.Object willClone(Component comp)
Internal use only. Call-back method of CloneComposerListener. You shall not call this method directly. Clone this Composer when its applied component is cloned.

Specified by:
willClone in interface ComponentCloneListener
Parameters:
comp - the clone of the applied component
Returns:
A clone of this Composer.

didActivate

public void didActivate(Component comp)
Description copied from interface: ComponentActivationListener
Called when a session has just been activated (and its value has been deserialized).

Specified by:
didActivate in interface ComponentActivationListener

willPassivate

public void willPassivate(Component comp)
Description copied from interface: ComponentActivationListener
Called when a session is about to be passivated (and then serialize its value).

Specified by:
willPassivate in interface ComponentActivationListener

doCatch

public boolean doCatch(java.lang.Throwable ex)
                throws java.lang.Exception
Description copied from interface: ComposerExt
Called when an exception occurs when composing the component.

If you don't want to handle the exception, simply returns false. boolean doCatch(Throwable ex) {return false;}

An exception thrown in this method is simply logged. It has no effect on the execution. If you want to ignore the exception, just return true.

Specified by:
doCatch in interface ComposerExt<T extends Component>
Parameters:
ex - the exception being thrown
Returns:
whether to ignore the exception. If false is returned, the exception will be re-thrown. Note: once a composer's doCatch returns true, the exception will be ignored and it means doCatch of the following composers won't be called.
Throws:
java.lang.Exception

doFinally

public void doFinally()
               throws java.lang.Exception
Description copied from interface: ComposerExt
Called after the component has been composed completely. It is the last step of the composing.

Note: it is always called even if ComposerExt.doCatch(java.lang.Throwable), ComposerExt.doBeforeComposeChildren(T) or Composer.doAfterCompose(T) is not called (due to exceptions).

Note: it is called after the onCreate event is posted, but before the onCreate and any other events are handled.

An exception thrown in this method is simply logged. It has no effect on the execution.

Specified by:
doFinally in interface ComposerExt<T extends Component>
Throws:
java.lang.Exception

getUtilityHandler

protected static SelectorComposer.UtilityHandler getUtilityHandler()


Copyright © 2005-2011 Potix Corporation. All Rights Reserved. SourceForge.net Logo