I need a TogglePanel/ToggleControl that perform an action when toggled. It also should act on a specific form region, so a4j region is used. According to documentation it should be possible to define action in rich:toggleControl, but didn't work in 3.1.0 (see http://jira.jboss.org/jira/browse/RF-1016).
So, as a workaround, I checked the snippet bellow this from 3.1.0 documentation on a4j:outputPanel:
<a4j:support .... reRender="mypanel"/>
...
<a4j:outputPanel layout="none">
<h:panelGrid id="mypanel" rendered="#{not empty foo.bar}">
...
</h:panelGrid>
</a4j:outputPanel>
<a4j:region selfRendered="true">
<a4j:outputPanel layout="none">
<h:panelGroup id="mypanel1" rendered="#{panelTest.toggled}">
<a4j:commandButton value="Toggle OFF" reRender="mypanel1,mypanel2"
action="#{panelTest.setToggled(false)}"/>
<f:verbatim>
Toggle status: toggle is ON: showing mypanel1
</f:verbatim>
</h:panelGroup>
</a4j:outputPanel>
<a4j:outputPanel layout="none">
<h:panelGroup id="mypanel2" rendered="#{!panelTest.toggled}">
<a4j:commandButton value="Toggle ON" reRender="mypanel1,mypanel2"
action="#{panelTest.setToggled(true)}"/>
<f:verbatim>
Toggle status: toggle is OFF: showing mypanel2
</f:verbatim>
</h:panelGroup>
</a4j:outputPanel>
</a4j:region>
...
<h:panelGroup id="mypanel2">
<h:panelGroup rendered="#{!panelTest.toggled}">
...