package railo.runtime.tag;
import javax.servlet.jsp.tagext.Tag;
import railo.runtime.exp.ApplicationException;
import railo.runtime.exp.TagNotSupported;
import railo.runtime.ext.tag.TagImpl;
import railo.runtime.op.Caster;
public class TreeItem extends TagImpl{
private String value=null;
private String display=null;
private String parent=null;
private String strImg=null;
private int intImg=TreeItemBean.IMG_FOLDER;
private String strImgOpen=null;
private int intImgOpen=TreeItemBean.IMG_FOLDER;
private String href=null;
private String target=null;
private String query=null;
private String strQueryAsRootCustom=null;
private int intQueryAsRoot=TreeItemBean.QUERY_AS_ROOT_YES;
private boolean expand=true;
public TreeItem() throws TagNotSupported{
throw new TagNotSupported("TreeItem");
}
@Override
public void release() {
value=null;
display=null;
parent=null;
strImg=null;
intImg=TreeItemBean.IMG_FOLDER;
strImgOpen=null;
intImgOpen=TreeItemBean.IMG_FOLDER;
href=null;
target=null;
query=null;
strQueryAsRootCustom=null;
intQueryAsRoot=TreeItemBean.QUERY_AS_ROOT_YES;
expand=true;
}
/**
* @param display the display to set
*/
public void setDisplay(String display) {
this.display=display;
}
/**
* @param expand the expand to set
*/
public void setExpand(boolean expand) {
this.expand=expand;
}
/**
* @param href the href to set
*/
public void setHref(String href) {
this.href=href;
}
/**
* @param img the img to set
*/
public void setImg(String img) {
this.strImg=img;
this.intImg=toIntImg(img);
}
/**
* @param imgopen the imgopen to set
*/
public void setImgopen(String imgopen) {
this.strImgOpen=imgopen;
this.intImgOpen=toIntImg(imgopen);
}
private int toIntImg(String img) {
img=img.trim().toLowerCase();
if("cd".equals(img)) return TreeItemBean.IMG_CD;
else if("computer".equals(img)) return TreeItemBean.IMG_COMPUTER;
else if("document".equals(img)) return TreeItemBean.IMG_DOCUMENT;
else if("element".equals(img)) return TreeItemBean.IMG_ELEMENT;
else if("folder".equals(img)) return TreeItemBean.IMG_FOLDER;
else if("floppy".equals(img)) return TreeItemBean.IMG_FLOPPY;
else if("fixed".equals(img)) return TreeItemBean.IMG_FIXED;
else if("remote".equals(img)) return TreeItemBean.IMG_REMOTE;
return TreeItemBean.IMG_CUSTOM;
}
/**
* @param parent the parent to set
*/
public void setParent(String parent) {
this.parent=parent;
}
/**
* @param query the query to set
*/
public void setQuery(String query) {
this.query=query;
}
/**
* @param queryAsRoot the queryAsRoot to set
*/
public void setQueryasroot(String queryAsRoot) {
strQueryAsRootCustom = queryAsRoot;
Boolean b = Caster.toBoolean(queryAsRoot,null);
if(b==null) intQueryAsRoot=TreeItemBean.QUERY_AS_ROOT_CUSTOM;
else intQueryAsRoot=b.booleanValue()?TreeItemBean.QUERY_AS_ROOT_YES:TreeItemBean.QUERY_AS_ROOT_NO;
}
/**
* @param target the target to set
*/
public void setTarget(String target) {
this.target=target;
}
/**
* @param value the value to set
*/
public void setValue(String value) {
this.value=value;
}
public int doStartTag() throws ApplicationException {
Tree tree=getTree();
if(display==null)display=value;
if(query!=null) doStartTagQuery(tree);
else doStartTagNormal(tree);
return SKIP_BODY;
}
private void doStartTagQuery(Tree tree) {
// TODO Auto-generated method stub
}
private void doStartTagNormal(Tree tree) {
TreeItemBean bean = new TreeItemBean();
bean.setDisplay(display);
bean.setExpand(expand);
bean.setHref(href);
bean.setImg(intImg);
bean.setImgCustom(strImg);
bean.setImgOpen(intImgOpen);
bean.setImgOpenCustom(strImgOpen);
bean.setParent(parent);
bean.setTarget(target);
bean.setValue(value);
tree.addTreeItem(bean);
}
private Tree getTree() throws ApplicationException {
Tag parent=getParent();
while(parent!=null && !(parent instanceof Tree)) {
parent=parent.getParent();
}
if(parent instanceof Tree) return (Tree) parent;
throw new ApplicationException("Wrong Context, tag TreeItem must be inside a Tree tag");
}
}