improved PHP parser
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / core / SourceRefElement.java
index b8dd333..6f89844 100644 (file)
@@ -16,19 +16,18 @@ import net.sourceforge.phpdt.core.IBuffer;
 import net.sourceforge.phpdt.core.ICompilationUnit;
 import net.sourceforge.phpdt.core.IJavaElement;
 import net.sourceforge.phpdt.core.IJavaProject;
+import net.sourceforge.phpdt.core.IMember;
 import net.sourceforge.phpdt.core.IOpenable;
+import net.sourceforge.phpdt.core.ISourceManipulation;
 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 org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import net.sourceforge.phpdt.internal.core.JavaElementInfo;
-import net.sourceforge.phpdt.internal.core.JavaModelManager;
-import net.sourceforge.phpdt.internal.core.Openable;
-
-import net.sourceforge.phpdt.internal.core.JavaElement;
 
 
 /**
@@ -55,7 +54,7 @@ protected Object createElementInfo() {
  */
 //public void copy(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 //     if (container == null) {
-//             throw new IllegalArgumentException(Util.bind("operation.nullContainer")); //$NON-NLS-1$
+//             throw new IllegalArgumentException(ProjectPrefUtil.bind("operation.nullContainer")); //$NON-NLS-1$
 //     }
 //     IJavaElement[] elements= new IJavaElement[] {this};
 //     IJavaElement[] containers= new IJavaElement[] {container};
@@ -104,6 +103,16 @@ public IResource getCorrespondingResource() throws JavaModelException {
        if (!exists()) throw newNotPresentException();
        return null;
 }
+/*
+ * @see JavaElement
+ */
+public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner workingCopyOwner) {
+       switch (token.charAt(0)) {
+               case JEM_COUNT:
+                       return getHandleUpdatingCountFromMemento(memento, workingCopyOwner);
+       }
+       return this;
+}
 /**
  * Return the first instance of IOpenable in the hierarchy of this
  * type (going up the hierarchy from this type);
@@ -118,6 +127,7 @@ public IOpenable getOpenableParent() {
        }
        return null;
 }
+
 /*
  * @see IJavaElement
  */
@@ -145,7 +155,14 @@ public String getSource() throws JavaModelException {
        if (offset == -1 || length == 0 ) {
                return null;
        }
-       return buffer.getText(offset, length);
+       try {
+         return buffer.getText(offset, length);
+         // jsurfer insert start
+       } catch (ArrayIndexOutOfBoundsException e) {
+               
+       }
+       return null;
+//      jsurfer insert end
 }
 /**
  * @see ISourceReference
@@ -166,7 +183,7 @@ public IResource getUnderlyingResource() throws JavaModelException {
  */
 //public void move(IJavaElement container, IJavaElement sibling, String rename, boolean force, IProgressMonitor monitor) throws JavaModelException {
 //     if (container == null) {
-//             throw new IllegalArgumentException(Util.bind("operation.nullContainer")); //$NON-NLS-1$
+//             throw new IllegalArgumentException(ProjectPrefUtil.bind("operation.nullContainer")); //$NON-NLS-1$
 //     }
 //     IJavaElement[] elements= new IJavaElement[] {this};
 //     IJavaElement[] containers= new IJavaElement[] {container};
@@ -185,7 +202,7 @@ public IResource getUnderlyingResource() throws JavaModelException {
  */
 //public void rename(String name, boolean force, IProgressMonitor monitor) throws JavaModelException {
 //     if (name == null) {
-//             throw new IllegalArgumentException(Util.bind("element.nullName")); //$NON-NLS-1$
+//             throw new IllegalArgumentException(ProjectPrefUtil.bind("element.nullName")); //$NON-NLS-1$
 //     }
 //     IJavaElement[] elements= new IJavaElement[] {this};
 //     IJavaElement[] dests= new IJavaElement[] {this.getParent()};