package com.sun.faces.event; import javax.faces.component.FacesComponent; import javax.faces.component.UIComponent; import javax.faces.component.UIComponentBase; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import javax.faces.event.AbortProcessingException; import javax.faces.event.PreRenderViewEvent; import javax.faces.event.SystemEvent; import javax.faces.event.SystemEventListener; @FacesComponent( value = "com.sun.faces.event.UIToggleComponent" ) public class UIToggleComponent extends UIComponentBase implements SystemEventListener { // // Constructor // public UIToggleComponent() { setRendererType( "testcomponent" ); FacesContext context = FacesContext.getCurrentInstance(); UIViewRoot root = context.getViewRoot(); root.subscribeToViewEvent( PreRenderViewEvent.class, this ); } // // Public methods // @Override public String getFamily() { return "com.sun.faces.event"; } public boolean isListenerForSource( Object source ) { return ( source instanceof UIViewRoot ); } @Override public void processEvent( SystemEvent event ) throws AbortProcessingException { UIComponent component = getChildren().remove( 0 ); getChildren().add( component ); } }