001: /*
002: Copyright (c) 2003 eInnovation Inc. All rights reserved
003:
004: This library is free software; you can redistribute it and/or modify it under the terms
005: of the GNU Lesser General Public License as published by the Free Software Foundation;
006: either version 2.1 of the License, or (at your option) any later version.
007:
008: This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
009: without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
010: See the GNU Lesser General Public License for more details.
011: */
012:
013: package com.openedit.webui.tree;
014:
015: import java.util.List;
016:
017: /**
018: * This class is a Web tree, which can render a <code>{@link WebTreeModel}</code> to an XML
019: * document.
020: *
021: * @author Eric Galluzzo
022: */
023: public class WebTree {
024: protected String fieldName;
025: protected String fieldId;
026:
027: protected WebTreeModel fieldModel;
028: protected TreeRenderer fieldTreeRenderer;
029:
030: public WebTree() {
031: }
032:
033: /**
034: * Create a new WebTree which listens to the given model.
035: *
036: * @param inModel DOCUMENT ME!
037: */
038: public WebTree(WebTreeModel inModel) {
039: setModel(inModel);
040: //expandNode(getModel().getRoot());
041: }
042:
043: public boolean isEmpty() {
044: if ((getModel() == null)
045: || (getModel().getChildCount(getModel().getRoot()) == 0)) {
046: return true;
047: } else {
048: return false;
049: }
050: }
051:
052: /**
053: * Sets the model.
054: *
055: * @param model The model to set
056: */
057: public void setModel(WebTreeModel model) {
058: fieldModel = model;
059: if (fieldModel != null && fieldTreeRenderer != null) {
060: getTreeRenderer().expandNode(fieldModel.getRoot());
061: }
062: }
063:
064: /**
065: * Gets the model.
066: *
067: * @return Returns a WebTreeModel
068: */
069: public WebTreeModel getModel() {
070: if (fieldModel == null) {
071: fieldModel = new DefaultWebTreeModel();
072: }
073:
074: return fieldModel;
075: }
076:
077: public Object getChildChildren(int inCount) {
078: List children = getModel().getChildren(getModel().getRoot());
079: if (children.size() < inCount) {
080: Object parent = children.get(inCount);
081: return getModel().getChildren(parent);
082: }
083: return null;
084: }
085:
086: /**
087: * DOCUMENT ME!
088: *
089: * @param inName
090: */
091: public void setName(String inName) {
092: fieldName = inName;
093: }
094:
095: /**
096: * DOCUMENT ME!
097: *
098: * @return
099: */
100: public String getName() {
101: if (fieldName == null) {
102: fieldName = "WebTree";
103: }
104:
105: return fieldName;
106: }
107:
108: /**
109: * DOCME
110: *
111: * @return DOCME
112: */
113: public String renderAsJavaScript() {
114: return render();
115: }
116:
117: public String render() {
118: TreeRenderer renderer = getTreeRenderer();
119: return renderer.renderAsString();
120: }
121:
122: public String render(String inNodeId) {
123: TreeRenderer renderer = getTreeRenderer();
124: return renderer.renderAsString(inNodeId);
125: }
126:
127: public TreeRenderer getTreeRenderer() {
128: if (fieldTreeRenderer == null) {
129: fieldTreeRenderer = new WebTreeNodeTreeRenderer(this );
130: }
131: return fieldTreeRenderer;
132: }
133:
134: public void setTreeRenderer(TreeRenderer inTreeRenderer) {
135: fieldTreeRenderer = inTreeRenderer;
136: if (fieldModel != null && inTreeRenderer != null) {
137: getTreeRenderer().expandNode(getModel().getRoot());
138: }
139:
140: }
141:
142: public String toString() {
143: return getTreeRenderer().renderAsString();
144: }
145:
146: public String getId() {
147: return fieldId;
148: }
149:
150: public void setId(String inId) {
151: fieldId = inId;
152: }
153: }
|