001: /*
002: * This file is not part of the ItsNat framework.
003: *
004: * Original source code use and closed source derivatives are authorized
005: * to third parties with no restriction or fee.
006: * The original source code is owned by the author.
007: *
008: * This program is distributed AS IS in the hope that it will be useful,
009: * but WITHOUT ANY WARRANTY; without even the implied warranty of
010: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
011: *
012: * Author: Jose Maria Arranz Santamaria
013: * (C) Innowhere Software Services S.L., Spanish company, year 2007
014: */
015:
016: package org.itsnat.feashow.features.core.domutils;
017:
018: import org.itsnat.core.ItsNatDocument;
019: import org.itsnat.core.domutil.ElementTree;
020: import org.itsnat.core.domutil.ElementTreeNode;
021: import org.itsnat.core.domutil.ElementTreeNodeList;
022: import org.itsnat.core.domutil.ElementTreeNodeRenderer;
023: import org.itsnat.core.domutil.ElementTreeNodeStructure;
024: import org.itsnat.core.domutil.ItsNatDOMUtil;
025: import org.itsnat.core.domutil.ItsNatTreeWalker;
026: import org.itsnat.feashow.FeatureTreeNode;
027: import org.w3c.dom.Document;
028: import org.w3c.dom.Element;
029:
030: public class PatternBasedElementTreeTreeNode extends FeatureTreeNode {
031: public PatternBasedElementTreeTreeNode() {
032: }
033:
034: public void startExamplePanel() {
035: buildTree("treeId", false, null, null);
036: buildTree("treeId2", false, null, null);
037: buildTree("treeId3", false, null, null);
038: buildTree("treeId4", false, null, null);
039: buildTreeFixedRoot("treeId5", null, null);
040: buildTreeRootless("treeId6", false, null, null);
041:
042: ElementTreeNodeRenderer customRenderer = new ElementTreeNodeRenderer() {
043: public void renderTreeNode(ElementTreeNode treeNode,
044: Object value, Element labelElem, boolean isNew) {
045: int level = treeNode.getDeepLevel();
046:
047: String style;
048: if (level == 0)
049: style = "font-size:large;";
050: else if (level == 1)
051: style = "font-weight:bold;";
052: else
053: style = "font-style:italic;";
054:
055: labelElem.setAttribute("style", style);
056: ItsNatDOMUtil.setTextContent(labelElem, value
057: .toString());
058: }
059:
060: public void unrenderTreeNode(ElementTreeNode treeNode,
061: Element labelElem) {
062: }
063: };
064:
065: ElementTreeNodeStructure customStructure = new ElementTreeNodeStructure() {
066: public Element getContentElement(ElementTreeNode treeNode,
067: Element nodeElem) {
068: Element child = ItsNatTreeWalker
069: .getFirstChildElement(nodeElem);
070: return ItsNatTreeWalker.getFirstChildElement(child);
071: }
072:
073: public Element getHandleElement(ElementTreeNode treeNode,
074: Element nodeElem) {
075: return null;
076: }
077:
078: public Element getIconElement(ElementTreeNode treeNode,
079: Element nodeElem) {
080: return null;
081: }
082:
083: public Element getLabelElement(ElementTreeNode treeNode,
084: Element nodeElem) {
085: return getContentElement(treeNode, nodeElem);
086: }
087:
088: public Element getChildListElement(
089: ElementTreeNode treeNode, Element nodeElem) {
090: Element contentParentElem = getContentElement(treeNode,
091: nodeElem);
092: return ItsNatTreeWalker
093: .getNextSiblingElement(contentParentElem);
094: }
095: };
096:
097: buildTree("treeId7", false, customStructure, customRenderer);
098:
099: // TreeTable with <table>
100: buildTree("treeId8", true, null, customRenderer);
101:
102: // TreeTable without <table>
103: buildTree("treeId9", true, null, customRenderer);
104: }
105:
106: public void buildTree(String parentId, boolean treeTable,
107: ElementTreeNodeStructure customStructure,
108: ElementTreeNodeRenderer customRenderer) {
109: ItsNatDocument itsNatDoc = getItsNatDocument();
110: Document doc = itsNatDoc.getDocument();
111: Element parent = doc.getElementById(parentId);
112: ElementTree elemTree = itsNatDoc.createElementTree(treeTable,
113: parent, true, customStructure, customRenderer);
114: ElementTreeNode rootNode = elemTree.addRootNode("Spain");
115:
116: buildTree(rootNode);
117: }
118:
119: public void buildTreeFixedRoot(String parentId,
120: ElementTreeNodeStructure customStructure,
121: ElementTreeNodeRenderer customRenderer) {
122: ItsNatDocument itsNatDoc = getItsNatDocument();
123: Document doc = itsNatDoc.getDocument();
124: Element parent = doc.getElementById(parentId);
125:
126: ElementTreeNode rootNode = itsNatDoc.createElementTreeNode(
127: parent, true, customStructure, customRenderer);
128: rootNode.setValue("Spain");
129: buildTree(rootNode);
130: }
131:
132: public void buildTreeRootless(String parentId, boolean treeTable,
133: ElementTreeNodeStructure customStructure,
134: ElementTreeNodeRenderer customRenderer) {
135: ItsNatDocument itsNatDoc = getItsNatDocument();
136: Document doc = itsNatDoc.getDocument();
137: Element parent = doc.getElementById(parentId);
138: ElementTreeNodeList rootList = itsNatDoc
139: .createElementTreeNodeList(treeTable, parent, true,
140: customStructure, customRenderer);
141:
142: buildTree(rootList);
143: }
144:
145: public void buildTree(ElementTreeNode rootNode) {
146: ElementTreeNodeList rootChildren = rootNode
147: .getChildTreeNodeList();
148: buildTree(rootChildren);
149: }
150:
151: public void buildTree(ElementTreeNodeList rootChildren) {
152: ElementTreeNode provincesNode = rootChildren
153: .addTreeNode("Autonomous Communities");
154: ElementTreeNodeList provinces = provincesNode
155: .getChildTreeNodeList();
156: provinces.addTreeNode("Asturias");
157: provinces.addTreeNode("Cantabria");
158: provinces.addTreeNode("Castilla La Mancha");
159:
160: ElementTreeNode ccaaNode = rootChildren.addTreeNode("Cities");
161: ElementTreeNodeList ccaas = ccaaNode.getChildTreeNodeList();
162: ccaas.addTreeNode("Madrid");
163: ccaas.addTreeNode("Barcelona");
164: ccaas.addTreeNode("Sevilla");
165: }
166:
167: public void endExamplePanel() {
168: }
169:
170: }
|