001: /**
002: * Copyright 2006 Webmedia Group Ltd.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: **/package org.araneaframework.uilib.tree;
016:
017: import java.io.Serializable;
018: import java.io.Writer;
019:
020: /**
021: * Tree widget renderer.
022: *
023: * @author Alar Kvell (alar@araneaframework.org)
024: * @since 1.0.7
025: */
026: public interface TreeRenderer extends Serializable {
027:
028: /**
029: * Renders HTML in the beginning of the whole tree.
030: *
031: * @param node
032: * tree node that is being rendered
033: */
034: void renderTreeStart(Writer out, TreeNodeContext node)
035: throws Exception;
036:
037: /**
038: * Renders HTML in the end of the whole tree.
039: *
040: * @param node
041: * tree node that is being rendered
042: */
043: void renderTreeEnd(Writer out, TreeNodeContext node)
044: throws Exception;
045:
046: /**
047: * Renders toggle link after display prefix and before DisplayWidget. Called
048: * only if TreeDataProvider exists.
049: *
050: * @param node
051: * tree node that is being rendered
052: */
053: void renderToggleLink(Writer out, TreeNodeContext node)
054: throws Exception;
055:
056: /**
057: * Renders HTML after DisplayWidget and before child nodes. Called only if
058: * there are child nodes and they are not collapsed.
059: *
060: * @param node
061: * tree node that is being rendered
062: */
063: void renderChildrenStart(Writer out, TreeNodeContext node)
064: throws Exception;
065:
066: /**
067: * Renders HTML after all child nodes have been rendered. Called only if there
068: * are child nodes and they are not collapsed.
069: *
070: * @param node
071: * tree node that is being rendered
072: */
073: void renderChildrenEnd(Writer out, TreeNodeContext node)
074: throws Exception;
075:
076: /**
077: * Renders HTML immediately before each child node.
078: *
079: * @param node
080: * parent node whose children are being rendered
081: * @param childNode
082: * child node that is about to be rendered
083: */
084: void renderChildStart(Writer out, TreeNodeContext node,
085: TreeNodeContext childNode) throws Exception;
086:
087: /**
088: * Renders HTML immediately after each child node.
089: *
090: * @param node
091: * parent node whose children are being rendered
092: * @param childNode
093: * child node that was just rendered
094: */
095: void renderChildEnd(Writer out, TreeNodeContext node,
096: TreeNodeContext childNode) throws Exception;
097:
098: /**
099: * Renders HTML before DisplayWidget's toggle link. Called for each
100: * TreeNodeWidget, staring from TreeWidget. Usually overridden.
101: *
102: * @param node
103: * tree node that is being rendered
104: * @param current
105: * if this TreeNodeWidget's DisplayWidget is about to be rendered
106: */
107: void renderDisplayPrefix(Writer out, TreeNodeContext node,
108: boolean current) throws Exception;
109:
110: }
|