41200ae2d279229e94a01c2aca206b745e12f85a
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / compiler / ast / PHPDocument.java
1 package net.sourceforge.phpdt.internal.compiler.ast;
2
3 import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren;
4 import net.sourceforge.phpdt.internal.compiler.parser.Outlineable;
5 import net.sourceforge.phpdt.internal.ui.PHPUiImages;
6 import org.eclipse.jface.resource.ImageDescriptor;
7
8 import java.util.ArrayList;
9
10 /**
11  * It's a php document.
12  * This class is an outlineable object
13  * It will contains html and php
14  * @author Matthieu Casanova
15  */
16 public class PHPDocument implements OutlineableWithChildren {
17
18   /**
19    * The nodes.
20    * It will include html nodes or php nodes
21    */
22   public AstNode[] nodes;
23
24   /** The parent of the object. */
25   public Object parent;
26
27   /** The outlineable children (those will be in the node array too. */
28   private ArrayList children = new ArrayList();
29
30   /**
31    * Create the PHPDocument.
32    * @param parent the parent object (it should be null isn't it ?)
33    */
34   public PHPDocument(Object parent) {
35     this.parent = parent;
36   }
37
38   /**
39    * Return the php document as String.
40    * @return  a string representation of the object.
41    */
42   public String toString() {
43     final StringBuffer buff = new StringBuffer();
44     AstNode node;
45     int i;
46     for (i = 0; i < nodes.length; i++) {
47       node = nodes[i];
48       if (node == null) {
49         break;
50       }
51       buff.append(node.toString(0));
52     }
53     return buff.toString();
54   }
55
56   /**
57    * Add an outlineable object.
58    * @param o the new outlineable
59    * @return does the addition worked ?
60    */
61   public boolean add(Outlineable o) {
62     return children.add(o);
63   }
64
65   /**
66    * Return the outlineable at the index.
67    * @param index the index
68    * @return an outlineable object
69    */
70   public Outlineable get(int index) {
71     return (Outlineable) children.get(index);
72   }
73
74   /**
75    * The number of outlineable children.
76    * @return the number of children that are outlineable
77    */
78   public int size() {
79     return children.size();
80   }
81
82   /**
83    * This will return the image for the outline of the object.
84    * @return an image
85    */
86   public ImageDescriptor getImage() {
87     return PHPUiImages.DESC_CLASS;
88   }
89
90   /**
91    * Get the parent of the object.
92    * @return the parent of the object
93    */
94   public Object getParent() {
95     return parent;
96   }
97 }