001 package org.apache.tapestry.internal; 002 003 import org.apache.tapestry.IRender; 004 005 /** 006 * Represents the <em>internal</em> component api exposed for use by core framework code only. 007 * 008 * <p> 009 * Use at your own risk as everything in this API is subject to change without notice from release to 010 * release. 011 * </p> 012 */ 013 public interface Component { 014 015 /** 016 * Returns the list of of {@link IRender} elements contained by this component. Ie whatever 017 * has been added via {@link org.apache.tapestry.IComponent#addBody(IRender)}. 018 * 019 * @return The values, if any. Null otherwise. 020 */ 021 IRender[] getContainedRenderers(); 022 023 /** 024 * In some rare cases a component has both outer and inner renderers - such as with {@link org.apache.tapestry.BaseComponent}. This 025 * value should return the normal inner renderers most components do in those instances while the other 026 * {@link #getContainedRenderers()} should return the outer renderers. 027 * 028 * @return The inner renderers if this component supports more than one type, null otherwise. 029 */ 030 IRender[] getInnerRenderers(); 031 032 /** 033 * Checks if this component has been targeted / connected to for client side 034 * event listening via @EventListener. 035 * 036 * @return True if anything has targeted this component, false otherwise. 037 */ 038 boolean hasEvents(); 039 040 /** 041 * Sets whether or not this component has events. 042 * 043 * @param hasEvents Whether or not this component has connected events. 044 */ 045 void setHasEvents(boolean hasEvents); 046 }