added some rules for alternative case like <?Php <?pHp ...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / PHPContentOutlinePage.java
index 43e72ef..bdc86d8 100644 (file)
@@ -18,12 +18,12 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.TreeSet;
 
+import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
+import net.sourceforge.phpdt.internal.compiler.parser.PHPSegment;
+import net.sourceforge.phpdt.internal.compiler.parser.PHPSegmentWithChildren;
 import net.sourceforge.phpdt.internal.ui.viewsupport.ImageDescriptorRegistry;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
-import net.sourceforge.phpeclipse.phpeditor.phpparser.PHPClassDeclaration;
-import net.sourceforge.phpeclipse.phpeditor.phpparser.PHPOutlineInfo;
-import net.sourceforge.phpeclipse.phpeditor.phpparser.PHPParser;
-import net.sourceforge.phpeclipse.phpeditor.phpparser.PHPSegment;
+
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.text.BadPositionCategoryException;
 import org.eclipse.jface.text.DefaultPositionUpdater;
@@ -42,6 +42,8 @@ import org.eclipse.swt.widgets.Control;
 import org.eclipse.ui.texteditor.IDocumentProvider;
 import org.eclipse.ui.texteditor.ITextEditor;
 import org.eclipse.ui.views.contentoutline.ContentOutlinePage;
+import test.PHPParserSuperclass;
+import test.PHPParserManager;
 
 /**
  * A content outline page which always represents the functions of the
@@ -53,10 +55,10 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
 
   protected static class SegmentComparator implements Comparator {
     public int compare(Object o1, Object o2) {
-      if (o1 instanceof PHPClassDeclaration && !(o2 instanceof PHPClassDeclaration)) {
+      if (o1 instanceof PHPSegmentWithChildren && !(o2 instanceof PHPSegmentWithChildren)) {
         return 1;
       }
-      if (o2 instanceof PHPClassDeclaration && !(o1 instanceof PHPClassDeclaration)) {
+      if (o2 instanceof PHPSegmentWithChildren && !(o1 instanceof PHPSegmentWithChildren)) {
         return -1;
       }
       return ((PHPSegment) o1).toString().compareToIgnoreCase(((PHPSegment) o2).toString());
@@ -80,7 +82,7 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
     //      StringBuffer identifier = new StringBuffer();
     //      while (i < textLength) {
     //        c = text.charAt(i++);
-    //        if (Character.isJavaIdentifierPart(c) || (c == '$')) {
+    //        if (Scanner.isPHPIdentifierPart(c) || (c == '$')) {
     //          identifier.append(c);
     //        } else if ((i == firstIndex + 1) && (c == '$')) {
     //          identifier.append(c);
@@ -99,12 +101,12 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
       String name;
       int index;
       String text = document.get();
-      PHPParser parser = new PHPParser(null);
+      PHPParserSuperclass parser = PHPParserManager.getParser(null);
 
       PHPOutlineInfo outlineInfo = parser.parseInfo(fInput, text);
       fVariables = outlineInfo.getVariables();
 
-      PHPClassDeclaration declarations = outlineInfo.getDeclarations();
+      PHPSegmentWithChildren declarations = outlineInfo.getDeclarations();
       PHPSegment temp;
       for (int i = 0; i < declarations.size(); i++) {
         temp = declarations.get(i);
@@ -182,8 +184,8 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
      * @see ITreeContentProvider#hasChildren(Object)
      */
     public boolean hasChildren(Object element) {
-      if (element instanceof PHPClassDeclaration) {
-        return !((PHPClassDeclaration) element).getList().isEmpty();
+      if (element instanceof PHPSegmentWithChildren) {
+        return !((PHPSegmentWithChildren) element).getList().isEmpty();
       }
       return element == fInput;
     }
@@ -204,8 +206,8 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
     public Object[] getChildren(Object element) {
       if (element == fInput)
         return fContent.toArray();
-      if (element instanceof PHPClassDeclaration)
-        return ((PHPClassDeclaration) element).getList().toArray();
+      if (element instanceof PHPSegmentWithChildren)
+        return ((PHPSegmentWithChildren) element).getList().toArray();
       return new Object[0];
     }
   };