/** ShadowElementCtrl.java.
Purpose:
Description:
History:
11:50:50 AM Oct 27, 2014, Created by jumperchen
Copyright (C) 2014 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zk.ui;
/**
* An addition interface to {@link ShadowElement}
* @author jumperchen
* @since 8.0.0
*/
public interface ShadowElementCtrl {
/**
* Sets the owner component that hosts this shadow element.
* @param host the host of the shadow element
* @param insertBefore a component or a shadow element to indicate where the
* shadow's insertion point is added.
*/
public void setShadowHost(Component host, Component insertBefore);
/** Called before the host removing a child.
* @param child the child to be removed (never null)
* @param indexOfChild the index of the removed child
*/
public void beforeHostChildRemoved(Component child, int indexOfChild);
/** Called before the host changing the parent.
* @param parent the new parent. If null, it means detachment.
*/
public void beforeHostParentChanged(Component parent);
/** Called before the host adding a child.
* @param child the child to be added (never null).
* @param insertBefore another child component that the new child
* will be inserted before it. If null, the new child will be the
* last child.
* @param indexOfInsertBefore the index of the insertBefore, if any. Otherwise -1 is assumed.
*/
public void beforeHostChildAdded(Component child, Component insertBefore, int indexOfInsertBefore);
/** Called when a child is added to the host.
* @param child the child has been added (never null).
* @param indexOfChild the index of the added child.
*/
public void afterHostChildAdded(Component child, int indexOfChild);
/** Called when a child is removed to the host.
* @param child the child has been added (never null).
*/
public void afterHostChildRemoved(Component child);
/**
* Returns whether the shadow element contains a dynamic value, it means the
* shadow element cannot be destroyed after evaluated.
*/
public boolean isDynamicValue();
/**
* Sets whether the shadow element contains a dynamic value, if true means the
* shadow element cannot be destroyed after evaluated, if false it will detect
* its attribute automatically.
* <p>Default: false (auto detection)</p>
* @since 8.0.1
*/
public void setDynamicValue(boolean dynamicValue);
/**
* Return the shadow host from it or its ancestor, if any.
* @return null or a host component
*/
public Component getShadowHostIfAny();
/** Returns the variable associated with this base component or null if not found.
*
* <p>Notice that it doesn't check any variable defined in
* {@link org.zkoss.xel.VariableResolver}
* (of {@link Page#addVariableResolver}).
*
* @param child the child component of the shadow host
* @param recurse whether to look up the parent shadow for the
* existence of the variable.<br/>
* If recurse is true, it will look up all parents until found.
*/
public Object resolveVariable(Component child, String name, boolean recurse);
/**
* Returns the next insertion point, it may be a component, a shadow element, or null.
*/
public Component getNextInsertion();
/**
* Returns the previous insertion point, it may be a component, a shadow element, or null.
*/
public Component getPreviousInsertion();
/**
* Returns the first component of its insertion range.
*/
public Component getFirstInsertion();
/**
* Returns the last component of its insertion range.
*/
public Component getLastInsertion();
/**
* Called when a child of a host is added into this shadow element.
*/
public void onHostChildAdded(Component child);
/**
* Called when a child of a host is added into this shadow element.
*/
public void onHostChildRemoved(Component child);
}