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