1 123 package com.ivata.groupware.web.tag.webgui.tree; 124 125 import java.io.IOException ; 126 import java.util.Properties ; 127 128 import javax.servlet.jsp.JspException ; 129 import javax.servlet.jsp.JspWriter ; 130 import javax.swing.tree.TreeModel ; 131 132 import com.ivata.groupware.web.tree.DefaultTreeNodeRenderer; 133 import com.ivata.groupware.web.tree.TreeNode; 134 import com.ivata.groupware.web.tree.TreeNodeRenderer; 135 import com.ivata.mask.util.CollectionHandling; 136 import com.ivata.mask.web.tag.webgui.ControlTag; 137 import com.ivata.mask.web.theme.ThemeUnsupportedException; 138 139 140 206 public class TreeTag extends ControlTag { 207 214 static final String childrenProperty = "treeChildren"; 215 218 private String treeName = null; 219 222 private Integer openFolder = null; 223 226 private Integer closeFolder = null; 227 230 private boolean defaultOpen = false; 231 236 private String formName = null; 237 240 private TreeModel model = null; 241 248 private TreeNodeRenderer renderer; 249 250 254 public TreeTag() { 255 super(); 256 } 257 258 277 public int doStartTag() throws JspException ,ThemeUnsupportedException { 278 super.doStartTag(); 279 try { 280 if (renderer == null) { 282 renderer = new DefaultTreeNodeRenderer(); 283 } 284 renderer.setTreeTag(this); 285 JspWriter out = pageContext.getOut(); 286 287 renderer.initialize(pageContext.getSession(), 288 (javax.servlet.http.HttpServletRequest ) pageContext.getRequest(), 289 out, pageContext); 290 int nSelectedStringLength; 293 294 out.println(createChildren(model.getRoot(), 0)); 296 renderer.finalize(pageContext.getSession(), 297 (javax.servlet.http.HttpServletRequest ) pageContext.getRequest(), 298 out); 299 } catch (IOException ioException) { 300 throw new JspException ( 301 "Error in TreeTag: IOException whilst printing select: " 302 + ioException.getMessage(), 303 ioException); 304 } catch (Exception e) { 305 throw new JspException (e); 306 } 307 return SKIP_BODY; 309 } 310 311 327 private String createChildren(final Object parent, 328 final int level) throws ThemeUnsupportedException,JspException { 329 String returnString = ""; 330 int totalNodes = model.getChildCount(parent); 331 332 for (int nodeNumber = 0; nodeNumber < totalNodes; ++nodeNumber) { 333 Properties nodeProperties = CollectionHandling.splice(getProperties(), new Properties ()); 335 TreeNode node = (TreeNode) model.getChild(parent, nodeNumber); 336 Boolean isOpenObject = Boolean.TRUE; 338 boolean isOpen; 339 340 if (isOpenObject == null) { 342 isOpen = defaultOpen; 343 } else { 344 isOpen = isOpenObject.booleanValue(); 346 } 347 if ((model.getChildCount(node) > 0) && isOpen && !model.isLeaf(node)) { 350 nodeProperties.setProperty(childrenProperty, createChildren(node, 351 level + 1)); 352 } 353 boolean isLeaf = model.isLeaf(node); 355 try { 356 returnString += renderer.render(model, node, isOpen, 357 isLeaf, 358 level, 359 (nodeNumber == (totalNodes - 1)), 360 getTheme(), nodeProperties); 361 } catch(JspException e) { 362 throw e; 364 } catch(Exception e) { 365 throw new JspException (e); 366 } 367 } 368 return returnString; 369 } 370 371 383 public final TreeModel getModel() { 384 return model; 385 } 386 387 399 public final void setModel(final TreeModel model) { 400 this.model = model; 401 } 402 403 419 public final TreeNodeRenderer getRenderer() { 420 return renderer; 421 } 422 423 440 public final void setRenderer(final TreeNodeRenderer renderer) { 441 this.renderer = renderer; 442 } 443 444 454 public final String getTreeName() { 455 return treeName; 456 } 457 458 469 public final void setTreeName(final String treeName) { 470 this.treeName = treeName; 471 } 472 473 479 public final Integer getOpenFolder() { 480 return openFolder; 481 } 482 483 490 public final void setOpenFolder(final Integer openFolder) { 491 this.openFolder = openFolder; 492 } 493 494 500 public final Integer getCloseFolder() { 501 return closeFolder; 502 } 503 504 511 public final void setCloseFolder(final Integer closeFolder) { 512 this.closeFolder = closeFolder; 513 } 514 515 522 public final boolean getDefaultOpen() { 523 return defaultOpen; 524 } 525 526 533 public final void setDefaultOpen(final boolean defaultOpen) { 534 this.defaultOpen = defaultOpen; 535 } 536 537 543 public final String getFormName() { 544 return this.formName; 545 } 546 547 553 public final void setFormName(final String formName) { 554 this.formName = formName; 555 } 556 } 557 | Popular Tags |