001 package railo.runtime.tag; 002 003 import javax.servlet.jsp.tagext.Tag; 004 005 import railo.runtime.exp.ApplicationException; 006 import railo.runtime.exp.TagNotSupported; 007 import railo.runtime.ext.tag.TagImpl; 008 import railo.runtime.op.Caster; 009 010 public class TreeItem extends TagImpl{ 011 012 private String value=null; 013 private String display=null; 014 private String parent=null; 015 private String strImg=null; 016 private int intImg=TreeItemBean.IMG_FOLDER; 017 private String strImgOpen=null; 018 private int intImgOpen=TreeItemBean.IMG_FOLDER; 019 private String href=null; 020 private String target=null; 021 private String query=null; 022 private String strQueryAsRootCustom=null; 023 private int intQueryAsRoot=TreeItemBean.QUERY_AS_ROOT_YES; 024 private boolean expand=true; 025 026 027 public TreeItem() throws TagNotSupported{ 028 throw new TagNotSupported("TreeItem"); 029 } 030 031 @Override 032 public void release() { 033 value=null; 034 display=null; 035 parent=null; 036 strImg=null; 037 intImg=TreeItemBean.IMG_FOLDER; 038 strImgOpen=null; 039 intImgOpen=TreeItemBean.IMG_FOLDER; 040 href=null; 041 target=null; 042 query=null; 043 strQueryAsRootCustom=null; 044 intQueryAsRoot=TreeItemBean.QUERY_AS_ROOT_YES; 045 expand=true; 046 } 047 /** 048 * @param display the display to set 049 */ 050 public void setDisplay(String display) { 051 this.display=display; 052 } 053 /** 054 * @param expand the expand to set 055 */ 056 public void setExpand(boolean expand) { 057 this.expand=expand; 058 } 059 /** 060 * @param href the href to set 061 */ 062 public void setHref(String href) { 063 this.href=href; 064 } 065 /** 066 * @param img the img to set 067 */ 068 public void setImg(String img) { 069 this.strImg=img; 070 this.intImg=toIntImg(img); 071 } 072 073 /** 074 * @param imgopen the imgopen to set 075 */ 076 public void setImgopen(String imgopen) { 077 this.strImgOpen=imgopen; 078 this.intImgOpen=toIntImg(imgopen); 079 } 080 081 private int toIntImg(String img) { 082 img=img.trim().toLowerCase(); 083 if("cd".equals(img)) return TreeItemBean.IMG_CD; 084 else if("computer".equals(img)) return TreeItemBean.IMG_COMPUTER; 085 else if("document".equals(img)) return TreeItemBean.IMG_DOCUMENT; 086 else if("element".equals(img)) return TreeItemBean.IMG_ELEMENT; 087 else if("folder".equals(img)) return TreeItemBean.IMG_FOLDER; 088 else if("floppy".equals(img)) return TreeItemBean.IMG_FLOPPY; 089 else if("fixed".equals(img)) return TreeItemBean.IMG_FIXED; 090 else if("remote".equals(img)) return TreeItemBean.IMG_REMOTE; 091 return TreeItemBean.IMG_CUSTOM; 092 } 093 094 /** 095 * @param parent the parent to set 096 */ 097 public void setParent(String parent) { 098 this.parent=parent; 099 } 100 /** 101 * @param query the query to set 102 */ 103 public void setQuery(String query) { 104 this.query=query; 105 } 106 /** 107 * @param queryAsRoot the queryAsRoot to set 108 */ 109 public void setQueryasroot(String queryAsRoot) { 110 strQueryAsRootCustom = queryAsRoot; 111 112 Boolean b = Caster.toBoolean(queryAsRoot,null); 113 if(b==null) intQueryAsRoot=TreeItemBean.QUERY_AS_ROOT_CUSTOM; 114 else intQueryAsRoot=b.booleanValue()?TreeItemBean.QUERY_AS_ROOT_YES:TreeItemBean.QUERY_AS_ROOT_NO; 115 } 116 /** 117 * @param target the target to set 118 */ 119 public void setTarget(String target) { 120 this.target=target; 121 } 122 /** 123 * @param value the value to set 124 */ 125 public void setValue(String value) { 126 this.value=value; 127 } 128 129 public int doStartTag() throws ApplicationException { 130 Tree tree=getTree(); 131 132 if(display==null)display=value; 133 if(query!=null) doStartTagQuery(tree); 134 else doStartTagNormal(tree); 135 136 return SKIP_BODY; 137 } 138 139 140 141 142 private void doStartTagQuery(Tree tree) { 143 // TODO Auto-generated method stub 144 145 } 146 147 private void doStartTagNormal(Tree tree) { 148 TreeItemBean bean = new TreeItemBean(); 149 bean.setDisplay(display); 150 bean.setExpand(expand); 151 bean.setHref(href); 152 bean.setImg(intImg); 153 bean.setImgCustom(strImg); 154 bean.setImgOpen(intImgOpen); 155 bean.setImgOpenCustom(strImgOpen); 156 bean.setParent(parent); 157 bean.setTarget(target); 158 bean.setValue(value); 159 160 tree.addTreeItem(bean); 161 } 162 163 164 private Tree getTree() throws ApplicationException { 165 Tag parent=getParent(); 166 while(parent!=null && !(parent instanceof Tree)) { 167 parent=parent.getParent(); 168 } 169 170 if(parent instanceof Tree) return (Tree) parent; 171 throw new ApplicationException("Wrong Context, tag TreeItem must be inside a Tree tag"); 172 173 } 174 }