package com.wooki.components.menu; import org.apache.tapestry5.BindingConstants; import org.apache.tapestry5.ClientElement; import org.apache.tapestry5.ComponentResources; import org.apache.tapestry5.annotations.AfterRender; import org.apache.tapestry5.annotations.Import; import org.apache.tapestry5.annotations.InjectComponent; import org.apache.tapestry5.annotations.Parameter; import org.apache.tapestry5.annotations.Property; import org.apache.tapestry5.ioc.MessageFormatter; import org.apache.tapestry5.ioc.Messages; import org.apache.tapestry5.ioc.annotations.Inject; import org.apache.tapestry5.json.JSONObject; import org.apache.tapestry5.services.javascript.JavaScriptSupport; import com.wooki.links.PageLink; /** * This component display the navigation bar that will be displayed on top of the page. * * @author ccordenier */ @Import(library = { "context:/static/js/wooki-core.js" }) public class NavItem implements ClientElement { @Parameter @Property private PageLink link; @Parameter(name = "id", defaultPrefix = BindingConstants.LITERAL) private String idParameter; @Inject private Messages messages; @Inject private ComponentResources resources; @Inject private JavaScriptSupport javascriptSupport; @Inject private JavaScriptSupport jsSupport; @InjectComponent private org.apache.tapestry5.corelib.components.PageLink plink; private String clientId; void beginRender() { clientId = resources.isBound("id") ? idParameter : javascriptSupport .allocateClientId(resources); } @AfterRender void setupConfirm() { if (link != null && link.getConfirmMessageKey() != null) { JSONObject params = new JSONObject(); params.put("lnkId", plink.getClientId()); params.put("message", messages.get(link.getConfirmMessageKey())); jsSupport.addInitializerCall("initConfirm", params); } } public String getLabel() { MessageFormatter formatter = messages.getFormatter(link.getLabelMessageKey()); return link.format(formatter); } public String getClientId() { return clientId; } }