import java.util.List;
import java.util.TreeSet;
+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.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;
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.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 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());
+ return ((Outlineable) o1).toString().compareToIgnoreCase(((Outlineable) o2).toString());
}
}
// 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);
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();
- PHPSegment temp;
+ OutlineableWithChildren declarations = outlineInfo.getDeclarations();
+ Outlineable temp;
for (int i = 0; i < declarations.size(); i++) {
temp = declarations.get(i);
fContent.add(temp);
}
Collections.sort(fContent, new SegmentComparator());
-
}
/*
* @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;
}
* @see ITreeContentProvider#getParent(Object)
*/
public Object getParent(Object element) {
- if (element instanceof PHPSegment) {
- return ((PHPSegment) element).getParent();
+ if (element instanceof Outlineable) {
+ return ((Outlineable) element).getParent();
}
return null;
}
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];
}
};
* override.
*/
public Image getImage(Object element) {
- if (element instanceof PHPSegment) {
- ImageDescriptor descriptor = ((PHPSegment) element).getImage();
+ if (element instanceof Outlineable) {
+ ImageDescriptor descriptor = ((Outlineable) element).getImage();
return fRegistry.get(descriptor);
}
return null;
}
}
- 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)
TreeViewer viewer = getTreeViewer();
- contentProvider = new ContentProvider();
- viewer.setContentProvider(contentProvider);
+ fContentProvider = new ContentProvider();
+ viewer.setContentProvider(fContentProvider);
viewer.setLabelProvider(new OutlineLabelProvider());
viewer.addSelectionChangedListener(this);
}
}
}
-
- /**
- * 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;
}