|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
public interface UiEngine
UI engine is reponsible to process requests from the client,
sends the response back to the client with the assistent of
ExecutionCtrl.
ExecutionCtrl encapsulates protocol-dependent codes,
such that UiEngine works independent of any protocol (such as HTTP).
Note: each application (a ServletContext in HTTP) has its own UI Engine (Singleton per app).
| Method Summary | |
|---|---|
void |
activate(Execution exec)
Activates an execution such that you can access a component. |
void |
addInvalidate(Component comp)
Invalidates a component to cause redrawing. |
void |
addInvalidate(Page page)
Invalidates the page to cause all of its components to redraw. |
void |
addMoved(Component comp,
Component oldparent,
Page oldpg,
Page newpg)
Called to update (redraw) a component, when a component is moved. |
void |
addResponse(java.lang.String key,
AuResponse response)
Adds a response which will be sent to client at the end of the execution. |
void |
addSmartUpdate(Component comp,
java.lang.String attr,
DeferredValue value)
Smart updates an attribute of a component with a deferred value. |
void |
addSmartUpdate(Component comp,
java.lang.String attr,
java.lang.Object[] values)
Smart updates an attribute of a component with an array of values. |
void |
addSmartUpdate(Component comp,
java.lang.String attr,
java.lang.String value)
Smart updates an attribute of a component. |
void |
addUuidChanged(Component comp,
boolean addOnlyMoved)
Called before changing the component's UUID. |
void |
beginUpdate(Execution exec)
Activates and prepare for asynchronous update |
boolean |
ceaseSuspendedThread(Desktop desktop,
EventProcessingThread evtthd,
java.lang.String cause)
Ceases the specified event thread. |
Component[] |
createComponents(Execution exec,
PageDefinition pagedef,
Page page,
Component parent,
java.util.Map arg)
Creates components from the specified page and definition. |
void |
deactivate(Execution exec)
Deactivates an execution, such that other threads could activate and access components. |
void |
desktopDestroyed(Desktop desktop)
Called when a desktop is being removed. |
void |
endUpdate(Execution exec,
AuWriter out)
Executes posted events, deactive and ends the asynchronous update. |
void |
execNewPage(Execution exec,
PageDefinition pagedef,
Page page,
java.io.Writer out)
Creates components specified in the given page definition. |
void |
execNewPage(Execution exec,
Richlet richlet,
Page page,
java.io.Writer out)
Invoke Richlet.service(org.zkoss.zk.ui.Page), when a new page is creates upon
visiting a richlet. |
void |
execRecover(Execution exec,
FailoverManager failover)
Executes the recovering. |
void |
execUpdate(Execution exec,
java.util.List requests,
AuWriter out)
Executs an asynchronous update to a component (or page). |
java.lang.String |
getNativeContent(Component comp,
java.util.List children,
Native.Helper helper)
Retrieve the native content for a property of the specified component. |
java.util.Collection |
getSuspendedThreads(Desktop desktop)
Returns a collection of suspended event processing threads belonging to the specified desktop, or empty if no suspended thread at all. |
boolean |
hasSuspendedThread()
Returns if any suspended event processing thread in the whole system. |
boolean |
isInvalidated(Component comp)
Returns if this component needs to be redrawn. |
boolean |
isRequestDuplicate(Execution exec,
AuWriter out)
Checks whether the request is duplicated. |
void |
notify(Desktop desktop,
java.lang.Object obj)
Wakes up a single event processing thread for the specified desktop that is waiting on the specified object. |
void |
notify(java.lang.Object obj)
Wakes up a single event processing thread that is waiting on the specified object. |
void |
notifyAll(Desktop desktop,
java.lang.Object obj)
Wakes up all event processing theads for the specified desktop that are waiting on the specified object. |
void |
notifyAll(java.lang.Object obj)
Wakes up all event processing thread that are waiting on the specified object. |
void |
popOwner()
Called after a component redraws itself if it ever calls pushOwner(org.zkoss.zk.ui.Component). |
void |
pushOwner(Component comp)
Called before a component redraws itself if the component might include another page. |
void |
sendRedirect(java.lang.String uri,
java.lang.String target)
Sends a temporary redirect response to the client using the specified redirect location URL. |
void |
setAbortingReason(AbortingReason aborting)
Aborts the current execution. |
void |
start(WebApp wapp)
Starts the engine. |
void |
stop(WebApp wapp)
Stops the engine. |
void |
wait(java.lang.Object obj)
Suspends the current processing of an event and wait until the other thread invokes notify(Object), notifyAll(Object),
notify(Desktop, Object) or notifyAll(Desktop, Object)
for the specified object. |
| Method Detail |
|---|
void start(WebApp wapp)
void stop(WebApp wapp)
void desktopDestroyed(Desktop desktop)
Application developers don't need to remove pages and desktops. They are removed and cleaned up automatically.
void pushOwner(Component comp)
If a new page is created, the specified component will become the owner of the new page.
void popOwner()
pushOwner(org.zkoss.zk.ui.Component).
boolean isInvalidated(Component comp)
Note:
addInvalidate(Component)
was not called against this component.
void addInvalidate(Page page)
void addInvalidate(Component comp)
Component.invalidate() is called.
void addSmartUpdate(Component comp,
java.lang.String attr,
java.lang.String value)
ComponentCtrl.smartUpdate(String,String) is called.
The second invocation of this method in the same execution with the same attr will override the previous one.
void addSmartUpdate(Component comp,
java.lang.String attr,
DeferredValue value)
ComponentCtrl.smartUpdateDeferred(String, DeferredValue)
void addSmartUpdate(Component comp,
java.lang.String attr,
java.lang.Object[] values)
DeferredValue.
ComponentCtrl.smartUpdateValues(String, Object[])
void addResponse(java.lang.String key,
AuResponse response)
ComponentCtrl.response(java.lang.String, org.zkoss.zk.au.AuResponse) is called.
Note: Execution.addAuResponse(java.lang.String, org.zkoss.zk.au.AuResponse) is a shortcut to this method,
and it is used by application developers.
If AuResponse.getDepends() is not null, the response
depends on the returned componet. In other words, the response
is removed if the component is removed.
If it is null, the response is component-independent.
key - could be anything. The second invocation of this method
in the same execution with the same key will override the previous one.
void addMoved(Component comp,
Component oldparent,
Page oldpg,
Page newpg)
oldparent - the parent before movedoldpg - the page before movednewpg - the page after moved
void addUuidChanged(Component comp,
boolean addOnlyMoved)
addOnlyMoved - if true, it is added only if it was moved
before (see addMoved(org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Component, org.zkoss.zk.ui.Page, org.zkoss.zk.ui.Page)).
void execNewPage(Execution exec,
PageDefinition pagedef,
Page page,
java.io.Writer out)
throws java.io.IOException
java.io.IOException
void execNewPage(Execution exec,
Richlet richlet,
Page page,
java.io.Writer out)
throws java.io.IOException
Richlet.service(org.zkoss.zk.ui.Page), when a new page is creates upon
visiting a richlet.
java.io.IOException
void execUpdate(Execution exec,
java.util.List requests,
AuWriter out)
throws java.io.IOException
Note: the output must be XML and UTF-8.
requests - a list of AuRequest.
java.io.IOException
void execRecover(Execution exec,
FailoverManager failover)
Component[] createComponents(Execution exec,
PageDefinition pagedef,
Page page,
Component parent,
java.util.Map arg)
execNewPage(org.zkoss.zk.ui.Execution, org.zkoss.zk.ui.metainfo.PageDefinition, org.zkoss.zk.ui.Page, java.io.Writer) or execUpdate(org.zkoss.zk.ui.Execution, java.util.List, org.zkoss.zk.au.AuWriter)
was called.
It assumes the execution is already locked to this desktop.
Note: if both page and parent are null, the created components don't belong to any page/parent.
exec - the execution (never null).pagedef - the page definition (never null).page - the page. Ignored if parent is specified (and
parent's page is used).
If both page and parent are null, the created components won't belong
to any page.parent - the parent component, or null if no parent compoent.
If parent is specified, page is ignored.arg - a map of parameters that is accessible by the arg variable
in EL, or by Execution.getArg().
Ignored if null.
void sendRedirect(java.lang.String uri,
java.lang.String target)
After calling this method, the caller shall end the processing immediately (by returning). All pending requests and events will be dropped.
uri - the URI to redirect to, or null to reload the same pagetarget - the new target, or null to denote the same browser windowvoid setAbortingReason(AbortingReason aborting)
Note: if setAbortingReason is ever set with non-null, you CANNOT set it back to null.
After call this method, you shall not keep processing the page because the rendering is dropped and the client is out-of-sync with the server.
aborting - the aborting reason.
void wait(java.lang.Object obj)
throws java.lang.InterruptedException,
SuspendNotAllowedException
notify(Object), notifyAll(Object),
notify(Desktop, Object) or notifyAll(Desktop, Object)
for the specified object.
It can only be called when the current thread is processing an event. And, when called, the current processing is suspended and ZK continues to process the next event and finally render the result.
It is typical use to implement a modal dialog where it won't return until the modal dialog ends.
obj - any non-null object to identify what to wait, such that
notify(Object) and notify(Desktop, Object) knows
which object to notify.
UiException - if it is called not during event processing.
SuspendNotAllowedException - if there are too many suspended
exceptions.
Deployers can control the maximal allowed number of suspended exceptions
by specifying max-suspended-thread in zk.xml,
or invoking Configuration.setMaxSuspendedThreads(int).
java.lang.InterruptedExceptionvoid notify(java.lang.Object obj)
Unlike notify(Desktop, Object), this method can be invoked only
if the same desktop is locked for processing requests.
obj - any non-null object to identify what to notify. It must be
same object passed to wait(java.lang.Object).
UiException - if it is called not during event processing.notify(Desktop, Object),
notifyAll(Object)void notifyAll(java.lang.Object obj)
Unlike notify(Desktop, Object), this method can be invoked only
if the same desktop is locked for processing requests.
obj - any non-null object to identify what to notify. It must be
same object passed to wait(java.lang.Object).
UiException - if it is called not during event processing.notify(Desktop, Object),
notifyAll(Object)
void notify(Desktop desktop,
java.lang.Object obj)
Unlike notify(Object), this method can be called any time.
It is designed to let working threads resume an event processing
thread.
Notice: if this method is NOT called in an event processing thread, the resumed thread won't execute until the next request is received. To enforce it happen, you might use the timer component (found in ZUL).
desktop - the desktop which the suspended thread is processing.
It must be the same desktop of the suspended thread.obj - any non-null object to identify what to notify. It must be
same object passed to wait(java.lang.Object).notify(Object),
notifyAll(Desktop, Object)
void notifyAll(Desktop desktop,
java.lang.Object obj)
Unlike notifyAll(Object), this method can be called any time.
It is designed to let working threads resume an event processing
thread.
If this method is NOT called in an event processing thread, the resumed thread won't execute until the next request is received. To enforce it happen, you might use the timer component (found in ZUL).
desktop - the desktop which the suspended thread is processing.
It must be the same desktop of the suspended thread.obj - any non-null object to identify what to notify. It must be
same object passed to wait(java.lang.Object).notify(Object),
notifyAll(Desktop, Object)void activate(Execution exec)
deactivate(org.zkoss.zk.ui.Execution) in the finally clause.
Note: you RARELY need to invoke this method because execNewPage(org.zkoss.zk.ui.Execution, org.zkoss.zk.ui.metainfo.PageDefinition, org.zkoss.zk.ui.Page, java.io.Writer)
and execUpdate(org.zkoss.zk.ui.Execution, java.util.List, org.zkoss.zk.au.AuWriter) will activate and deactivate automatically.
Note: this method can be called only when processing a client request (e.g., HTTP) other than creating a new page and processing async-update.
Also, even if you use this method to grant the right to access components of the specified page, don't post events, create, remove, invalidate and do any smart updates. In other words, READ ONLY.
void deactivate(Execution exec)
boolean isRequestDuplicate(Execution exec,
AuWriter out)
throws java.io.IOException
It must be called before beginUpdate(org.zkoss.zk.ui.Execution) and endUpdate(org.zkoss.zk.ui.Execution, org.zkoss.zk.au.AuWriter).
And, you shall not call beginUpdate(org.zkoss.zk.ui.Execution) and endUpdate(org.zkoss.zk.ui.Execution, org.zkoss.zk.au.AuWriter),
if this method return true.
java.io.IOExceptionvoid beginUpdate(Execution exec)
void endUpdate(Execution exec,
AuWriter out)
throws java.io.IOException
out - the AU writer to generate the responses to; never null.
java.io.IOException
java.lang.String getNativeContent(Component comp,
java.util.List children,
Native.Helper helper)
NativeInfo).
Example:
<html>
<attribute name="content">
<br/>
</attribute>
</html>
comp - the component that the native content will be assigned to.
It is the object that the self variable is assigned when evaluating
EL expressions.children - a list of NativeInfo,
TextInfo and others.
This method evaluates them one-by-one and returns the result
which is the value that will be assigned.helper - the helper used to generate the content.Propertyboolean hasSuspendedThread()
java.util.Collection getSuspendedThreads(Desktop desktop)
An event processing thread is an instance of
EventProcessingThread
desktop - the desktop that the suspended event processing
threads belong to (never null).
boolean ceaseSuspendedThread(Desktop desktop,
EventProcessingThread evtthd,
java.lang.String cause)
desktop - which desktop the event thread belongs tocause - an arbitrary text to describe the cause.
It will be the message of the thrown InterruptedException.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||