Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/enhydra/xml/lazydom/LazyNode.java


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$
22   */
23  
24  package org.enhydra.xml.lazydom;
25  
26  import org.w3c.dom.Node;
27  import org.w3c.dom.Document;
28  
29  // FIXME: A lot of the assumptions of LazyNode vs LazyParent described
30  // below might be better encoded as method calls.
31  
32  /**
33   * Interface use to define Lazy DOM methods that apply to every node.
34   * In addition to these methods, each node must:
35   * <UL>
36   * <LI> Supply a getTemplateXXX for the specific node type.
37   * <UL>
38   * <P>
39   * There are two basic interfaces for implementing LazyDOM nodes:
40   * LazyNode and LazyParent, with LazyParent extended LazyNode.
41   * They have the following properties:
42   * <UL>
43   * <LI> Only LazyParent nodes can contain other nodes.
44   * <LI> Only LazyParent nodes can exist with out their parent being
45   *      expanded.
46   * <LI> All children of a LazyParent are expanded if one of the children
47   *      is expanded.
48   * <LI> If a LazyNode that is not a LazyParent is expanded, its siblings
49   *      are expanded.
50   * <LI> If a LazyParent's parent is expanded, its siblings are expanded.
51   * <LI> If a LazyParent's parent is not expanded, its siblings may or may not
52   *      be expanded.
53   * </UL>
54   */
55  public interface LazyNode extends Node {
56      /**
57       * Constant to indicate an node does not have an id.
58       */
59      public static final int NULL_NODE_ID = -1;
60  
61      /**
62       * Node id returned for the Document node.
63       */
64      public static final int DOCUMENT_NODE_ID = 0;
65  
66      /*
67       * Mark this node into a template node.  This assigns the node id, and
68       * flags the node as template.
69       * @param nodeId The node id to associate with the node.
70       */
71      public void makeTemplateNode(int nodeId);
72  
73      /**
74       * Get the node numeric id number.
75       *
76       * @returns The node id number, unique to this document, or NULL_NODE_ID
77       *  if the node does not have an id assocaited with it.
78       */
79      public int getNodeId();
80  
81      /**
82       * Check if this node is a template node.
83       */
84      public boolean isTemplateNode();
85  
86      /**
87       * Get the template node as a LazyNode.
88       */
89      public LazyNode getTemplateNode();
90  
91      /**
92       * Create a new node, using this node as the template.
93       */
94      public LazyNode templateClone(Document ownerDocument);
95  }