/* UiLifeCycle.java Purpose: Description: History: Mon May 19 14:03:23 2008, Created by tomyeh Copyright (C) 2008 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.util; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Desktop; import org.zkoss.zk.ui.Page; import org.zkoss.zk.ui.ShadowElement; /** * Used to intercept the life cycle of UI, such as {@link Component} * being attached. * * @author tomyeh * @since 3.0.6 */ public interface UiLifeCycle { /** Called after a shadow is attached to a host. * * <p>If a tree of shadows are attached to a host, this method * called only against the root one. For example, if shadow A * has a child B and A is attached to host P, then * afterShadowAttached(A, P) is called. * * <p>Note: exception thrown by this method is ignored (but logged). * @since 8.0.0 */ public void afterShadowAttached(ShadowElement shadow, Component host); /** Called after a shadow is detached from a host. * * <p>If a tree of shadows are detached to a host, this method * called only against the root one. For example, if shadow A * has a child B and A is detached from host P, then * afterShadowDetached(A, P) is called. * * <p>Note: exception thrown by this method is ignored (but logged). * * @param prevhost the previous host that shadow belongs to. * @since 8.0.0 */ public void afterShadowDetached(ShadowElement shadow, Component prevhost); /** Called after a component is attached to a page. * * <p>If a tree of components are attached to a page, this method * called only against the root one. For example, if component A * has a child B and A is attached to page P, then * afterComponentAttached(A, P) is called. * * <p>Note: exception thrown by this method is ignored (but logged). */ public void afterComponentAttached(Component comp, Page page); /** Called after a component is detached from a page. * * <p>If a tree of components are detached to a page, this method * called only against the root one. For example, if component A * has a child B and A is detached from page P, then * afterComponentDetached(A, P) is called. * * <p>Note: exception thrown by this method is ignored (but logged). * * @param prevpage the previous page that comp belongs to. */ public void afterComponentDetached(Component comp, Page prevpage); /** Called after the parent/children relation is changed. * * <p>If a tree of components has become children of the other component, * this method called only against the root one. * For example, if component A * has a child B and A becomes a child of component C, then * aferComponentAttached(C, A, null) is called. * * <p>Note: exception thrown by this method is ignored (but logged). * * @param prevparent the previous parent. If it is the same as * parent, comp is moved in the same parent. */ public void afterComponentMoved(Component parent, Component child, Component prevparent); /** Called after a page is attached to a desktop. * <p>Note: exception thrown by this method is ignored (but logged). */ public void afterPageAttached(Page page, Desktop desktop); /** Called after a page is detached to a desktop. */ public void afterPageDetached(Page page, Desktop prevdesktop); }