misc parser changes
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / PHPContentOutlinePage.java
index 78afe4e..6d9d031 100644 (file)
@@ -18,7 +18,9 @@ import java.util.Comparator;
 import java.util.List;
 import java.util.TreeSet;
 
-import net.sourceforge.phpdt.internal.compiler.parser.*;
+import net.sourceforge.phpdt.internal.compiler.parser.Outlineable;
+import net.sourceforge.phpdt.internal.compiler.parser.OutlineableWithChildren;
+import net.sourceforge.phpdt.internal.compiler.parser.PHPOutlineInfo;
 import net.sourceforge.phpdt.internal.ui.viewsupport.ImageDescriptorRegistry;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 
@@ -36,27 +38,26 @@ import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.widgets.Composite;
-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;
+import test.PHPParserSuperclass;
 
 /**
  * A content outline page which always represents the functions of the
  * connected PHPEditor.
  */
-public class PHPContentOutlinePage extends ContentOutlinePage {
+public class PHPContentOutlinePage extends AbstractContentOutlinePage {
   private static final String ERROR = "error"; //$NON-NLS-1$
   private static final String WARNING = "warning"; //$NON-NLS-1$
 
   protected static class SegmentComparator implements Comparator {
     public int compare(Object o1, Object o2) {
-      if (o1 instanceof PHPSegmentWithChildren && !(o2 instanceof PHPSegmentWithChildren)) {
+      if (o1 instanceof OutlineableWithChildren && !(o2 instanceof OutlineableWithChildren)) {
         return 1;
       }
-      if (o2 instanceof PHPSegmentWithChildren && !(o1 instanceof PHPSegmentWithChildren)) {
+      if (o2 instanceof OutlineableWithChildren && !(o1 instanceof OutlineableWithChildren)) {
         return -1;
       }
       return ((Outlineable) o1).toString().compareToIgnoreCase(((Outlineable) o2).toString());
@@ -181,8 +182,8 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
      * @see ITreeContentProvider#hasChildren(Object)
      */
     public boolean hasChildren(Object element) {
-      if (element instanceof PHPSegmentWithChildren) {
-        return !((PHPSegmentWithChildren) element).getList().isEmpty();
+      if (element instanceof OutlineableWithChildren) {
+        return !((OutlineableWithChildren) element).getList().isEmpty();
       }
       return element == fInput;
     }
@@ -203,8 +204,8 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
     public Object[] getChildren(Object element) {
       if (element == fInput)
         return fContent.toArray();
-      if (element instanceof PHPSegmentWithChildren)
-        return ((PHPSegmentWithChildren) element).getList().toArray();
+      if (element instanceof OutlineableWithChildren)
+        return ((OutlineableWithChildren) element).getList().toArray();
       return new Object[0];
     }
   };
@@ -214,7 +215,6 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
 
     public OutlineLabelProvider() {
       fRegistry = PHPeclipsePlugin.getImageDescriptorRegistry();
-      ;
     }
     /**
     * The <code>LabelProvider</code> implementation of this 
@@ -230,18 +230,17 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
     }
   }
 
-  protected Object fInput;
   protected IDocumentProvider fDocumentProvider;
   protected ITextEditor fTextEditor;
   protected PHPEditor fEditor;
-  protected ContentProvider contentProvider;
+  protected ContentProvider fContentProvider;
 
   /**
    * Creates a content outline page using the given provider and the given editor.
    */
   public PHPContentOutlinePage(IDocumentProvider provider, ITextEditor editor) {
     super();
-    contentProvider = null;
+    fContentProvider = null;
     fDocumentProvider = provider;
     fTextEditor = editor;
     if (editor instanceof PHPEditor)
@@ -257,8 +256,8 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
 
     TreeViewer viewer = getTreeViewer();
 
-    contentProvider = new ContentProvider();
-    viewer.setContentProvider(contentProvider);
+    fContentProvider = new ContentProvider();
+    viewer.setContentProvider(fContentProvider);
     viewer.setLabelProvider(new OutlineLabelProvider());
 
     viewer.addSelectionChangedListener(this);
@@ -278,7 +277,7 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
     if (selection.isEmpty())
       fTextEditor.resetHighlightRange();
     else {
-      PHPSegment segment = (PHPSegment) ((IStructuredSelection) selection).getFirstElement();
+      Outlineable segment = (Outlineable) ((IStructuredSelection) selection).getFirstElement();
       int start = segment.getPosition().getOffset();
       int length = segment.getPosition().getLength();
       try {
@@ -288,35 +287,10 @@ public class PHPContentOutlinePage extends ContentOutlinePage {
       }
     }
   }
-
-  /**
-   * Sets the input of the outline page
-   */
-  public void setInput(Object input) {
-    fInput = input;
-    update();
-  }
-
-  /**
-   * Updates the outline page.
-   */
-  public void update() {
-    TreeViewer viewer = getTreeViewer();
-
-    if (viewer != null) {
-      Control control = viewer.getControl();
-      if (control != null && !control.isDisposed()) {
-        control.setRedraw(false);
-        viewer.setInput(fInput);
-        viewer.expandAll();
-        control.setRedraw(true);
-      }
-    }
-  }
   
   public Object[] getVariables() {
-    if (contentProvider != null) {
-      return contentProvider.getVariables();
+    if (fContentProvider != null) {
+      return fContentProvider.getVariables();
     }
     return null;
   }