KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > enhydra > xml > lazydom > LazyDOMInfoPrinter


1 /*
2  * Enhydra Java Application Server Project
3  *
4  * The contents of this file are subject to the Enhydra Public License
5  * Version 1.1 (the "License"); you may not use this file except in
6  * compliance with the License. You may obtain a copy of the License on
7  * the Enhydra web site ( http://www.enhydra.org/ ).
8  *
9  * Software distributed under the License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
11  * the License for the specific terms governing rights and limitations
12  * under the License.
13  *
14  * The Initial Developer of the Enhydra Application Server is Lutris
15  * Technologies, Inc. The Enhydra Application Server and portions created
16  * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
17  * All Rights Reserved.
18  *
19  * Contributor(s):
20  *
21  * $Id: LazyDOMInfoPrinter.java,v 1.2 2005/01/26 08:29:24 jkjome Exp $
22  */

23
24 package org.enhydra.xml.lazydom;
25
26 import java.io.PrintWriter JavaDoc;
27
28 import org.enhydra.xml.dom.DOMInfoPrinter;
29 import org.enhydra.xml.dom.DOMTraversal;
30 import org.w3c.dom.Element JavaDoc;
31 import org.w3c.dom.Node JavaDoc;
32
33 /**
34  * LazyDOM DOMInfo traversal handler.
35  */

36 final public class LazyDOMInfoPrinter extends DOMInfoPrinter {
37     /**
38      * Constructor.
39      */

40     public LazyDOMInfoPrinter(int options,
41                               DOMTraversal traverser,
42                               PrintWriter JavaDoc out) {
43         super(options, traverser, out);
44     }
45
46     /**
47      * Print node name, add template indicator if a template node.
48      */

49     protected void printNodeName(Node JavaDoc node) {
50         super.printNodeName(node);
51         if (((LazyNode)node).isTemplateNode()) {
52             fOut.print("%[T]");
53         }
54     }
55
56     /**
57      * Determine if an element has attributes that are to be printed, This
58      * overrides the DOMInfoPrinter method and handles switching from instance
59      * to template nodes.
60      */

61     protected boolean hasPrintAttributes(Element JavaDoc element) {
62         LazyElement lazyElement = (LazyElement)element;
63         if (lazyElement.isTemplateNode()) {
64             // attribute are all template if node is template
65
return super.hasPrintAttributes(lazyElement);
66         } else if (lazyElement.areAttributesExpanded()) {
67             // expand instance attributes, handle as normal
68
return super.hasPrintAttributes(lazyElement);
69         } else {
70             // switch to template
71
return super.hasPrintAttributes(lazyElement.getTemplateElement());
72         }
73     }
74 }
75
Popular Tags