01: /*
02: ItsNat Java Web Application Framework
03: Copyright (C) 2007 Innowhere Software Services S.L., Spanish Company
04: Author: Jose Maria Arranz Santamaria
05:
06: This program is free software: you can redistribute it and/or modify
07: it under the terms of the GNU Affero General Public License as published by
08: the Free Software Foundation, either version 3 of the License, or
09: (at your option) any later version. See the GNU Affero General Public
10: License for more details. See the copy of the GNU Affero General Public License
11: included in this program. If not, see <http://www.gnu.org/licenses/>.
12: */
13:
14: package org.itsnat.comp;
15:
16: import org.w3c.dom.Element;
17:
18: /**
19: * Is used to render tree node values as markup into DOM elements.
20: *
21: * @author Jose Maria Arranz Santamaria
22: * @see ItsNatComponentManager#createDefaultItsNatTreeCellRenderer()
23: * @see ItsNatTree#getItsNatTreeCellRenderer()
24: * @see ItsNatTree#setItsNatTreeCellRenderer(ItsNatTreeCellRenderer)
25: */
26: public interface ItsNatTreeCellRenderer {
27: /**
28: * Renders as markup the specified tree node value into the specified element, usually
29: * as a text node.
30: *
31: * <p>Default implementation delegates to the default {@link org.itsnat.core.domutil.ElementRenderer}.</p>
32: *
33: * <p>Default implementation ignores <code>isSelected</code>, <code>isExpanded</code>, <code>isLeaf</code>
34: * and <code>hasFocus</code> (current implementation of ItsNat trees does not handle focus on tree nodes, ever is false).</p>
35: *
36: * @param tree the tree component, may be used to provide contextual information. Default implementation ignores it.
37: * @param row the tree node row (seeing the tree as a list).
38: * @param value the value to render.
39: * @param isSelected true if the tree node is selected.
40: * @param isExpanded true if the tree node is expanded.
41: * @param isLeaf true if the tree node is a leaf.
42: * @param hasFocus true if the tree node has the focus.
43: * @param treeNodeLabelElem the tree node label element to render the value into. Is a hint, if provided should be obtained by calling <code>tree.getItsNatTreeUI().getLabelElementFromRow(row)</code>.
44: * @param isNew true if this is the first time the markup is rendered. Default implementation ignores this parameter.
45: */
46: public void renderTreeCell(ItsNatTree tree, int row, Object value,
47: boolean isSelected, boolean isExpanded, boolean isLeaf,
48: boolean hasFocus, Element treeNodeLabelElem, boolean isNew);
49:
50: /**
51: * Unrenders the markup of the specified tree node. This method is called <i>before</i> the markup
52: * is removed.
53: *
54: * <p>Default implementation does nothing.</p>
55: *
56: * @param tree the tree component, may be used to provide contextual information. Default implementation ignores it.
57: * @param row the tree node row (seeing the tree as a list).
58: * @param treeNodeLabelElem the tree node label element to render the value into. Is a hint, if provided should be obtained by calling <code>tree.getItsNatTreeUI().getLabelElementFromRow(row)</code>.
59: */
60: public void unrenderTreeCell(ItsNatTree tree, int row,
61: Element treeNodeLabelElem);
62: }
|