/* Visualizer.java Purpose: Description: History: Fri Jan 20 23:06:03 2006, Created by tomyeh Copyright (C) 2006 Potix Corporation. All Rights Reserved. {{IS_RIGHT This program is distributed under LGPL Version 2.1 in the hope that it will be useful, but WITHOUT ANY WARRANTY. }}IS_RIGHT */ package org.zkoss.zk.ui.sys; import java.util.List; import org.zkoss.zk.au.AuResponse; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Execution; /** * A part of {@link Execution} for visualizing the components whose * visual parts are modified. There is one-to-one relationship between * the visualizer and the execution. * * <p>Its implementation highly depends on {@link UiEngine}. * * @author tomyeh */ public interface Visualizer { /** Returns the execution that this visualizer is associated with. */ public Execution getExecution(); /** Returns the owner component for this execution, or null if * this execution is not owned by any component. * <p>The include component is a typical owner. * @since 5.0.0 */ public Component getOwner(); /** Whether the execution associated with this visualizer * is caused by an async-update. * * <p>Note: There might be a chain of executions. * {@link Execution#isAsyncUpdate} returns whether a page is * in async-update in the execution being called, * On the other hand, this method returns whether * this first execution (of the whole chain) is caused by * async-update. */ public boolean isEverAsyncUpdate(); /** Adds the responses to the first {@link Visualizer} if it is * caused by async-update. * @return true if responses are added; false if the first {@link Visualizer} * is NOT caused by async responses. */ public boolean addToFirstAsyncUpdate(List<AuResponse> responses); /** Returns whether it is in recovering. * In other words, it is in the invocation of {@link FailoverManager#recover}. * If in recovering, no response is sent to the client. */ public boolean isRecovering(); /** Disables this visualizer. * Once disabled, any update of components won't be synchronized to * the client. In other words, it ignores any updates to components. * * <p>Currently, it is called only when removing a desktop. * You rarely need to call this method. * @since 3.0.2 */ public void disable(); }