package org.appfuse.webapp.components; import org.apache.tapestry5.BindingConstants; import org.apache.tapestry5.Block; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.annotations.Import; import org.apache.tapestry5.annotations.Parameter; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.ioc.services.SymbolSource; import org.apache.tapestry5.services.AssetSource; import org.apache.tapestry5.services.Context; import org.apache.tapestry5.services.Environment; import org.apache.tapestry5.services.PageRenderLinkSource; import org.apache.tapestry5.services.javascript.JavaScriptSupport; import org.appfuse.webapp.services.SecurityContext; /** * Global Layout component * * @author Serge Eby * @version $Id: Layout.java 5 2008-08-30 09:59:21Z serge.eby $ */ @Import(stack = {"core"}, module = {"bootstrap/collapse", "bootstrap/dropdown", "bootstrap/modal"}, stylesheet = {"classpath:/META-INF/resources/webjars/bootswatch-spacelab/3.3.1+2/css/bootstrap.min.css", "app/layout.css", "app/t5-override.css", }) public class Layout { @Property @Parameter(required = true, defaultPrefix = BindingConstants.MESSAGE) private String title; @Property @Parameter(defaultPrefix = BindingConstants.MESSAGE) private String heading; @Property @Parameter(defaultPrefix = BindingConstants.LITERAL) private String menu; @Property @Parameter(defaultPrefix = BindingConstants.LITERAL) private String bodyId; @Property @Parameter(defaultPrefix = BindingConstants.LITERAL) private String bodyClass; @Parameter(defaultPrefix = BindingConstants.LITERAL) private Block sidebar; @Inject private Environment environment; @Inject private Context context; @Inject private Messages messages; @Inject private SecurityContext securityContext; @Inject private ComponentResources resources; @Inject private PageRenderLinkSource linkSource; @Inject private JavaScriptSupport jsSupport; @Inject private AssetSource assetSource; @Inject private SymbolSource symbolSource; @Inject private Block adminMenuBlock; public boolean isLoggedIn() { return securityContext.isLoggedIn(); } public Block getSidebar() { if ("AdminMenu".equals(menu) && securityContext.isAdmin()) { return adminMenuBlock; } return null; } public boolean isAdminMenu() { return "AdminMenu".equals(menu); } public String getCurrentPage() { return resources.getPageName().toLowerCase(); } }