package com.wooki.components.menu;
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.core.components.RootEventLink;
import com.wooki.links.EventLink;
import com.wooki.links.Link;
import com.wooki.links.PageLink;
@Import(library =
{ "context:/static/js/wooki-core.js" })
public class MenuItem
{
@Parameter(name = "class")
@Property
private String rowClass;
@Parameter
@Property
private Link link;
@Inject
private Messages messages;
@Inject
private JavaScriptSupport jsSupport;
@InjectComponent
private RootEventLink elink;
@InjectComponent
private org.apache.tapestry5.corelib.components.PageLink plink;
@AfterRender
void setupConfirm()
{
if (link.getConfirmMessageKey() != null)
{
JSONObject params = new JSONObject();
if (isAction())
{
params.put("lnkId", elink.getClientId());
}
else
{
params.put("lnkId", plink.getClientId());
}
params.put("message", messages.get(link.getConfirmMessageKey()));
jsSupport.addInitializerCall("initConfirm", params);
}
}
public String getItemClass()
{
if (getCurrentPageLink().isSelected()) { return "bookmenuitem selected"; }
return "bookmenuitem";
}
public boolean isAction()
{
return link instanceof EventLink;
}
public EventLink getCurrentEventLink()
{
return EventLink.class.cast(link);
}
public PageLink getCurrentPageLink()
{
return PageLink.class.cast(link);
}
public String getLabel()
{
MessageFormatter formatter = messages.getFormatter(link.getLabelMessageKey());
return link.format(formatter);
}
}