package org.richfaces.component; import javax.faces.component.UIPanel; import org.richfaces.cdk.annotations.Attribute; import org.richfaces.cdk.annotations.EventName; import org.richfaces.cdk.annotations.JsfComponent; import org.richfaces.cdk.annotations.JsfRenderer; import org.richfaces.cdk.annotations.Tag; import org.richfaces.cdk.annotations.TagType; import org.richfaces.renderkit.AbstractPageRenderer; import org.richfaces.skin.SkinFactory; @JsfComponent(tag = @Tag(name = "page", type = TagType.Facelets), renderer = @JsfRenderer(family = AbstractPage.COMPONENT_FAMILY, type = AbstractPageRenderer.RENDERER_TYPE), attributes = {"core-props.xml"} ) public abstract class AbstractPage extends UIPanel { // ------------------------------ FIELDS ------------------------------ public static final String COMPONENT_FAMILY = "org.richfaces.Page"; public static final String COMPONENT_TYPE = "org.richfaces.Page"; // --------------------- GETTER / SETTER METHODS --------------------- @Override public String getRendererType() { String theme = getTheme(); String rendererType = null; if (null != theme && theme.length() > 0) { rendererType = SkinFactory.getInstance().getTheme(getFacesContext(), theme).getRendererType(); } if (null == rendererType) { rendererType = super.getRendererType(); } return rendererType; } // -------------------------- OTHER METHODS -------------------------- @Attribute public abstract String getContentType(); @Attribute public abstract String getMarkupType(); @Attribute public abstract String getNamespace(); @Attribute(events = @EventName(value = "contextmenu", defaultEvent = true)) public abstract String getOncontextmenu(); @Attribute public abstract String getPageTitle(); @Attribute public abstract LayoutPosition getSidebarPosition(); @Attribute public abstract Integer getSidebarWidth(); /** * Get Page theme name * * @return page theme */ @Attribute public abstract String getTheme(); @Attribute public abstract Integer getWidth(); }