01: /*
02: * The contents of this file are subject to the terms of the Common Development
03: * and Distribution License (the License). You may not use this file except in
04: * compliance with the License.
05: *
06: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
07: * or http://www.netbeans.org/cddl.txt.
08: *
09: * When distributing Covered Code, include this CDDL Header Notice in each file
10: * and include the License file at http://www.netbeans.org/cddl.txt.
11: * If applicable, add the following below the CDDL Header, with the fields
12: * enclosed by brackets [] replaced by your own identifying information:
13: * "Portions Copyrighted [year] [name of copyright owner]"
14: *
15: * The Original Software is NetBeans. The Initial Developer of the Original
16: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17: * Microsystems, Inc. All Rights Reserved.
18: */
19: package org.netbeans.modules.xslt.mapper.model.targettree;
20:
21: import java.util.ArrayList;
22: import java.util.List;
23: import org.netbeans.modules.xml.axi.AXIComponent;
24: import org.netbeans.modules.xslt.mapper.model.nodes.NodeFactory;
25: import org.netbeans.modules.xslt.mapper.model.nodes.TreeNode;
26: import org.netbeans.modules.xslt.mapper.view.XsltMapper;
27: import org.netbeans.modules.xslt.model.XslComponent;
28:
29: /**
30: *
31: * @author Alexey
32: */
33: public class TemplateNode extends RuleNode {
34:
35: /** Creates a new instance of TemplateNode **/
36: public TemplateNode(XslComponent component, XsltMapper mapper) {
37: super (component, mapper);
38: }
39:
40: /** Root template is combining behaviors of schema placeholder node and rule node:
41: * it adds schema placeholdeers to the list of XSLT children
42: **/
43: protected List<TreeNode> loadChildren() {
44: XslComponent myself = (XslComponent) getDataObject();
45: List<TreeNode> result = super .loadChildren();
46:
47: AXIComponent rootType = getMapper().getContext()
48: .getTargetType();
49:
50: if (rootType == null) {
51: return result;
52: }
53:
54: boolean hasRootType = false;
55:
56: for (TreeNode t : result) {
57: AXIComponent type = t.getType();
58: if (type != null && type.equals(rootType)) {
59: hasRootType = true;
60: }
61: }
62:
63: if (!hasRootType) {
64: TreeNode newNode = (TreeNode) NodeFactory.createNode(
65: rootType, getMapper());
66: newNode.setParent(this);
67: result.add(newNode);
68: }
69:
70: return result;
71: }
72: }
|