improved PHP parser
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / core / ImportContainer.java
index 54089a2..e8da010 100644 (file)
@@ -17,106 +17,126 @@ import net.sourceforge.phpdt.core.IParent;
 import net.sourceforge.phpdt.core.ISourceRange;
 import net.sourceforge.phpdt.core.ISourceReference;
 import net.sourceforge.phpdt.core.JavaModelException;
+import net.sourceforge.phpdt.core.WorkingCopyOwner;
+import net.sourceforge.phpdt.internal.core.util.MementoTokenizer;
+
 //import net.sourceforge.phpdt.internal.core.util.MementoTokenizer;
 
 /**
  * @see IImportContainer
  */
 public class ImportContainer extends SourceRefElement implements IImportContainer {
-protected ImportContainer(CompilationUnit parent) {
-       super(parent, ""); //$NON-NLS-1$
-}
-public boolean equals(Object o) {
-       if (!(o instanceof ImportContainer)) return false;
-       return super.equals(o);
-}
-/**
- * @see IJavaElement
- */
-public int getElementType() {
-       return IMPORT_CONTAINER;
-}
-/*
- * @see JavaElement
- */
-//public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
-//     switch (token.charAt(0)) {
-//             case JEM_COUNT:
-//                     return getHandleUpdatingCountFromMemento(memento, workingCopyOwner);
-//             case JEM_IMPORTDECLARATION:
-//                     if (memento.hasMoreTokens()) {
-//                             String importName = memento.nextToken();
-//                             JavaElement importDecl = (JavaElement)getImport(importName);
-//                             return importDecl.getHandleFromMemento(memento, workingCopyOwner);
-//                     } else {
-//                             return this;
-//                     }
-//     }
-//     return null;
-//}
-/**
- * @see JavaElement#getHandleMemento()
- */
-protected char getHandleMementoDelimiter() {
-       return JavaElement.JEM_IMPORTDECLARATION;
-}
-/**
- * @see IImportContainer
- */
-public IImportDeclaration getImport(String importName) {
-       return new ImportDeclaration(this, importName);
-}
-/*
- * @see JavaElement#getPrimaryElement(boolean)
- */
-public IJavaElement getPrimaryElement(boolean checkOwner) {
-       CompilationUnit cu = (CompilationUnit)this.parent;
-       if (checkOwner && cu.isPrimary()) return this;
-       return cu.getImportContainer();
-}
-/**
- * @see ISourceReference
- */
-public ISourceRange getSourceRange() throws JavaModelException {
-       IJavaElement[] imports= getChildren();
-       ISourceRange firstRange= ((ISourceReference)imports[0]).getSourceRange();
-       ISourceRange lastRange= ((ISourceReference)imports[imports.length - 1]).getSourceRange();
-       SourceRange range= new SourceRange(firstRange.getOffset(), lastRange.getOffset() + lastRange.getLength() - firstRange.getOffset());
-       return range;
-}
-/**
- * Import containers only exist if they have children.
- * @see IParent
- */
-public boolean hasChildren() {
-       return true;
-}
-/**
- */
-public String readableName() {
+  protected ImportContainer(CompilationUnit parent) {
+    super(parent, ""); //$NON-NLS-1$
+  }
 
-       return null;
-}
-/**
- * @private Debugging purposes
- */
-protected void toString(int tab, StringBuffer buffer) {
-       Object info = JavaModelManager.getJavaModelManager().peekAtInfo(this);
-       if (info == null || !(info instanceof JavaElementInfo)) return;
-       IJavaElement[] children = ((JavaElementInfo)info).getChildren();
-       for (int i = 0; i < children.length; i++) {
-               if (i > 0) buffer.append("\n"); //$NON-NLS-1$
-               ((JavaElement)children[i]).toString(tab, buffer);
-       }
-}
-/**
- *  Debugging purposes
- */
-protected void toStringInfo(int tab, StringBuffer buffer, Object info) {
-       buffer.append(this.tabString(tab));
-       buffer.append("<import container>"); //$NON-NLS-1$
-       if (info == null) {
-               buffer.append(" (not open)"); //$NON-NLS-1$
-       }
-}
-}
+  public boolean equals(Object o) {
+    if (!(o instanceof ImportContainer))
+      return false;
+    return super.equals(o);
+  }
+
+  /**
+   * @see IJavaElement
+   */
+  public int getElementType() {
+    return IMPORT_CONTAINER;
+  }
+
+  /*
+   * @see JavaElement
+   */
+  public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
+    switch (token.charAt(0)) {
+    case JEM_COUNT:
+      return getHandleUpdatingCountFromMemento(memento, workingCopyOwner);
+    case JEM_IMPORTDECLARATION:
+      if (memento.hasMoreTokens()) {
+        String importName = memento.nextToken();
+        JavaElement importDecl = (JavaElement) getImport(importName);
+        return importDecl.getHandleFromMemento(memento, workingCopyOwner);
+      } else {
+        return this;
+      }
+    }
+    return null;
+  }
+
+  /**
+   * @see JavaElement#getHandleMemento()
+   */
+  protected char getHandleMementoDelimiter() {
+    return JavaElement.JEM_IMPORTDECLARATION;
+  }
+
+  /**
+   * @see IImportContainer
+   */
+  public IImportDeclaration getImport(String importName) {
+    return new ImportDeclaration(this, importName);
+  }
+
+  /*
+   * @see JavaElement#getPrimaryElement(boolean)
+   */
+  public IJavaElement getPrimaryElement(boolean checkOwner) {
+    CompilationUnit cu = (CompilationUnit) this.parent;
+    if (checkOwner && cu.isPrimary())
+      return this;
+    return cu.getImportContainer();
+  }
+
+  /**
+   * @see ISourceReference
+   */
+  public ISourceRange getSourceRange() throws JavaModelException {
+    IJavaElement[] imports = getChildren();
+    ISourceRange firstRange = ((ISourceReference) imports[0]).getSourceRange();
+    ISourceRange lastRange = ((ISourceReference) imports[imports.length - 1]).getSourceRange();
+    SourceRange range = new SourceRange(firstRange.getOffset(), lastRange.getOffset() + lastRange.getLength()
+        - firstRange.getOffset());
+    return range;
+  }
+
+  /**
+   * Import containers only exist if they have children.
+   * 
+   * @see IParent
+   */
+  public boolean hasChildren() {
+    return true;
+  }
+
+  /**
+   */
+  public String readableName() {
+
+    return null;
+  }
+
+  /**
+   * @private Debugging purposes
+   */
+  protected void toString(int tab, StringBuffer buffer) {
+    Object info = JavaModelManager.getJavaModelManager().peekAtInfo(this);
+    if (info == null || !(info instanceof JavaElementInfo))
+      return;
+    IJavaElement[] children = ((JavaElementInfo) info).getChildren();
+    for (int i = 0; i < children.length; i++) {
+      if (i > 0)
+        buffer.append("\n"); //$NON-NLS-1$
+      ((JavaElement) children[i]).toString(tab, buffer);
+    }
+  }
+
+  /**
+   * Debugging purposes
+   */
+  protected void toStringInfo(int tab, StringBuffer buffer, Object info) {
+    buffer.append(this.tabString(tab));
+    buffer.append("<import container>"); //$NON-NLS-1$
+    if (info == null) {
+      buffer.append(" (not open)"); //$NON-NLS-1$
+    }
+  }
+}
\ No newline at end of file