tomahawk.taglib.xml
<tag>
<tag-name>tabChangeListener</tag-name>
<handler-class>facelets.TabChangeListenerHandler</handler-class>
</tag>import java.io.IOException;
import javax.el.ELException;
import javax.faces.FacesException;
import javax.faces.component.UIComponent;
import org.apache.myfaces.custom.tabbedpane.HtmlPanelTabbedPane;
import org.apache.myfaces.custom.tabbedpane.TabChangeListener;
import org.apache.myfaces.shared_tomahawk.util.ClassUtils;
import com.sun.facelets.FaceletContext;
import com.sun.facelets.FaceletException;
import com.sun.facelets.tag.TagAttribute;
import com.sun.facelets.tag.TagConfig;
import com.sun.facelets.tag.TagHandler;
/**
* Tag Handler for tabChangeListener tag
*/
public class TabChangeListenerHandler extends TagHandler {
private final TagAttribute type;
/**
* @param tagConfig
*/
public TabChangeListenerHandler(TagConfig tagConfig) {
super(tagConfig);
type = getRequiredAttribute("type");
}
/* (non-Javadoc)
* @see com.sun.facelets.FaceletHandler#apply(com.sun.facelets.FaceletContext, javax.faces.component.UIComponent)
*/
public void apply(FaceletContext faceletContext, UIComponent parent) throws IOException, FacesException, FaceletException, ELException {
// only process if parent was just created
if (parent.getParent() == null) {
if (parent instanceof HtmlPanelTabbedPane) {
String className;
if (!type.isLiteral()) {
className = type.getValue();
} else {
className = type.getValue(faceletContext);
}
TabChangeListener listener = (TabChangeListener) ClassUtils.newInstance(className);
((HtmlPanelTabbedPane)parent).addTabChangeListener(listener);
} else {
throw new FacesException("Component is noHtmlPanelTabbedPane children");
}
}
}
}