package com.revolsys.ui.html.builder;
import org.apache.commons.jexl.JexlContext;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import com.revolsys.ui.model.Menu;
import com.revolsys.ui.web.config.Page;
import com.revolsys.util.Property;
public class HtmlUiBuilderMenu extends Menu implements BeanFactoryAware {
private BeanFactory beanFactory;
private String pageName;
private String typePath;
@Override
public String getLink(final JexlContext context) {
final HtmlUiBuilder<Object> htmlUiBuilder = HtmlUiBuilderFactory.get(this.beanFactory,
this.typePath);
if (htmlUiBuilder == null) {
return null;
} else {
final String link = htmlUiBuilder.getPageUrl(this.pageName, getParameters());
if (link == null) {
return null;
} else {
final String anchor = getAnchor();
if (anchor == null) {
return link;
} else {
return link + "#" + anchor;
}
}
}
}
@Override
public String getLinkTitle(final JexlContext context) {
final String title = getTitle();
if (Property.hasValue(title)) {
return title;
} else {
final HtmlUiBuilder<Object> htmlUiBuilder = HtmlUiBuilderFactory.get(this.beanFactory,
this.typePath);
if (htmlUiBuilder == null) {
return null;
} else {
Page page = htmlUiBuilder.getPage(this.pageName);
if (page == null) {
page = new Page(null, htmlUiBuilder.getPluralTitle(), this.pageName, false);
}
return page.getExpandedTitle();
}
}
}
public String getPageName() {
return this.pageName;
}
public String getTypeName() {
return this.typePath;
}
@Override
public boolean isVisible() {
final HtmlUiBuilder<Object> htmlUiBuilder = HtmlUiBuilderFactory.get(this.beanFactory,
this.typePath);
if (htmlUiBuilder == null) {
return false;
} else {
return htmlUiBuilder.getPageUrl(this.pageName, getParameters()) != null;
}
}
@Override
public void setBeanFactory(final BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
public void setPageName(final String pageName) {
this.pageName = pageName;
}
public void setTypeName(final String typePath) {
this.typePath = typePath;
}
}