1 99 package com.ivata.groupware.web.tree; 101 102 103 import java.util.HashMap ; 104 105 import javax.servlet.http.HttpServletRequest ; 106 import javax.servlet.http.HttpSession ; 107 import javax.servlet.jsp.JspException ; 108 import javax.servlet.jsp.JspWriter ; 109 import javax.servlet.jsp.PageContext ; 110 111 import org.apache.struts.taglib.TagUtils; 112 113 import com.ivata.groupware.web.tag.webgui.tree.TreeTag; 114 import com.ivata.mask.util.StringHandling; 115 import com.ivata.mask.web.theme.Theme; 116 import com.ivata.mask.web.theme.ThemeParseException; 117 118 119 147 public class DefaultTreeNodeRenderer extends TreeNodeRenderer { 148 149 154 private String URL; 155 156 159 private PageContext pageContext; 160 161 224 public String render(javax.swing.tree.TreeModel model, Object node, boolean expanded, boolean leaf, int level, boolean last, Theme theme, java.util.Properties properties) throws JspException { 225 try { 226 TreeNode treeNode = (TreeNode) node; 227 HashMap URLProperties = new HashMap (); 228 229 properties.setProperty("caption", treeNode.getName()); 231 if (treeNode.getId() != null) { 233 properties.setProperty("id", treeNode.getId().toString()); 234 } 235 if (last) { 237 properties.setProperty("last", "Last"); 238 } 239 if (leaf) { 241 return theme.parseSection("treeLeaf", 242 setAdditionalProperties(treeNode, level, properties)); 243 } 244 if (model.getChildCount(node) == 0) { 246 return theme.parseSection("treeNoChildren", 247 setAdditionalProperties(treeNode, level, properties)); 248 } 249 TreeTag treeTag = getTreeTag(); 251 if (expanded) { 252 if (treeTag.getFormName() != null) { 253 properties.setProperty("folderURL", "javascript:" + treeTag.getFormName() + 254 ".closeFolder.value=" + treeNode.getId() + ";" + 255 treeTag.getFormName() + ".submit();"); 256 return theme.parseSection("treeOpen", 257 setAdditionalProperties(treeNode, level, properties)); 258 } else { 259 URLProperties.put("closeFolder", treeNode.getId().toString()); 260 try { 261 properties.setProperty("folderURL", 262 TagUtils.getInstance().computeURL(pageContext, null, URL, 263 null, null, null, URLProperties, null, true)); 264 } catch (java.net.MalformedURLException e) { 265 throw new JspException (e); 266 } 267 return theme.parseSection("treeOpen", 268 setAdditionalProperties(treeNode, level, properties)); 269 } 270 } else { 271 if (treeTag.getFormName() != null) { 272 properties.setProperty("folderURL", "javascript:" + treeTag.getFormName() + 273 ".openFolder.value=" + treeNode.getId() + ";" + 274 treeTag.getFormName() + ".submit();"); 275 return theme.parseSection("treeClosed", 276 setAdditionalProperties(treeNode, level, properties)); 277 } else { 278 URLProperties.put("openFolder", treeNode.getId().toString()); 279 try { 280 properties.setProperty("folderURL", 281 TagUtils.getInstance().computeURL(pageContext, null, 282 URL, null, null, null, URLProperties, 283 null, true)); 284 } catch (java.net.MalformedURLException e) { 285 throw new JspException (e); 286 } 287 return theme.parseSection("treeClosed", 288 setAdditionalProperties(treeNode, level, properties)); 289 } 290 } 291 } catch (ThemeParseException e) { 292 throw new RuntimeException (e); 293 } 294 } 295 296 312 public void initialize(HttpSession session, HttpServletRequest request, JspWriter out, PageContext pageContext) throws JspException { 313 String openFolder = request.getParameter("openFolder"); 314 TreeTag treeTag = getTreeTag(); 315 316 if (!StringHandling.isNullOrEmpty(openFolder)) { 317 treeTag.setOpenFolder(StringHandling.integerValue(openFolder)); 318 } 319 String closeFolder = request.getParameter("closeFolder"); 320 321 if (!StringHandling.isNullOrEmpty(closeFolder)) { 322 treeTag.setCloseFolder(StringHandling.integerValue(closeFolder)); 323 } 324 URL = request.getRequestURL().toString(); 325 this.pageContext = pageContext; 326 } 327 328 345 public java.util.Properties setAdditionalProperties(TreeNode treeNode, int level, java.util.Properties properties) throws JspException { 346 return properties; 348 } 349 350 355 public PageContext getPageContext() { 356 return pageContext; 357 } 358 359 364 public void setPageContext(PageContext pageContext) { 365 this.pageContext = pageContext; 366 } 367 } 368 | Popular Tags |