X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPContentOutlinePage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPContentOutlinePage.java deleted file mode 100644 index 6d9d031..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPContentOutlinePage.java +++ /dev/null @@ -1,301 +0,0 @@ -package net.sourceforge.phpeclipse.phpeditor; - -/********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. and others. -All rights reserved. This program and the accompanying materials -are made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html - -Contributors: - IBM Corporation - Initial implementation - Klaus Hartlage - www.eclipseproject.de -**********************************************************************/ - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -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.ui.viewsupport.ImageDescriptorRegistry; -import net.sourceforge.phpeclipse.PHPeclipsePlugin; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.text.BadPositionCategoryException; -import org.eclipse.jface.text.DefaultPositionUpdater; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.IPositionUpdater; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.SelectionChangedEvent; -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.ui.texteditor.IDocumentProvider; -import org.eclipse.ui.texteditor.ITextEditor; - -import test.PHPParserManager; -import test.PHPParserSuperclass; - -/** - * A content outline page which always represents the functions of the - * connected PHPEditor. - */ -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 OutlineableWithChildren && !(o2 instanceof OutlineableWithChildren)) { - return 1; - } - if (o2 instanceof OutlineableWithChildren && !(o1 instanceof OutlineableWithChildren)) { - return -1; - } - return ((Outlineable) o1).toString().compareToIgnoreCase(((Outlineable) o2).toString()); - } - } - - /** - * Divides the editor's document into ten segments and provides elements for them. - */ - protected class ContentProvider implements ITreeContentProvider { - - protected final static String SEGMENTS = "__php_segments"; //$NON-NLS-1$ - protected IPositionUpdater fPositionUpdater = new DefaultPositionUpdater(SEGMENTS); - protected List fContent = new ArrayList(10); - protected TreeSet fVariables = new TreeSet(); - - // private String getIdentifier(String text, int firstIndex) { - // int i = firstIndex; - // char c; - // int textLength = text.length(); - // StringBuffer identifier = new StringBuffer(); - // while (i < textLength) { - // c = text.charAt(i++); - // if (Scanner.isPHPIdentifierPart(c) || (c == '$')) { - // identifier.append(c); - // } else if ((i == firstIndex + 1) && (c == '$')) { - // identifier.append(c); - // } else { - // return identifier.toString(); - // } - // } - // return null; - // } - - protected void parse(IDocument document) { - - // int lines = document.getNumberOfLines(); - // int increment = Math.max(Math.round((float) (lines / 10)), 10); - - String name; - int index; - String text = document.get(); - PHPParserSuperclass parser = PHPParserManager.getParser(null); - - PHPOutlineInfo outlineInfo = parser.parseInfo(fInput, text); - fVariables = outlineInfo.getVariables(); - - 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 IContentProvider#inputChanged(Viewer, Object, Object) - */ - public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { - if (oldInput != null) { - IDocument document = fDocumentProvider.getDocument(oldInput); - if (document != null) { - try { - document.removePositionCategory(SEGMENTS); - } catch (BadPositionCategoryException x) { - } - document.removePositionUpdater(fPositionUpdater); - } - } - - fContent.clear(); - fVariables.clear(); - - if (newInput != null) { - IDocument document = fDocumentProvider.getDocument(newInput); - if (document != null) { - document.addPositionCategory(SEGMENTS); - document.addPositionUpdater(fPositionUpdater); - - parse(document); - } - } - } - - /* - * @see IContentProvider#dispose - */ - public void dispose() { - if (fContent != null) { - fContent.clear(); - fContent = null; - } - if (fVariables != null) { - fVariables.clear(); - fVariables = null; - } - } - - /* - * @see IContentProvider#isDeleted(Object) - */ - public boolean isDeleted(Object element) { - return false; - } - - /** - * returns all PHP variables - */ - public Object[] getVariables() { - return fVariables.toArray(); - } - - /* - * @see IStructuredContentProvider#getElements(Object) - */ - public Object[] getElements(Object element) { - return fContent.toArray(); - } - - /* - * @see ITreeContentProvider#hasChildren(Object) - */ - public boolean hasChildren(Object element) { - if (element instanceof OutlineableWithChildren) { - return !((OutlineableWithChildren) element).getList().isEmpty(); - } - return element == fInput; - } - - /* - * @see ITreeContentProvider#getParent(Object) - */ - public Object getParent(Object element) { - if (element instanceof Outlineable) { - return ((Outlineable) element).getParent(); - } - return null; - } - - /* - * @see ITreeContentProvider#getChildren(Object) - */ - public Object[] getChildren(Object element) { - if (element == fInput) - return fContent.toArray(); - if (element instanceof OutlineableWithChildren) - return ((OutlineableWithChildren) element).getList().toArray(); - return new Object[0]; - } - }; - - protected class OutlineLabelProvider extends LabelProvider { - private ImageDescriptorRegistry fRegistry; - - public OutlineLabelProvider() { - fRegistry = PHPeclipsePlugin.getImageDescriptorRegistry(); - } - /** - * The LabelProvider implementation of this - * ILabelProvider method returns null. Subclasses may - * override. - */ - public Image getImage(Object element) { - if (element instanceof Outlineable) { - ImageDescriptor descriptor = ((Outlineable) element).getImage(); - return fRegistry.get(descriptor); - } - return null; - } - } - - protected IDocumentProvider fDocumentProvider; - protected ITextEditor fTextEditor; - protected PHPEditor fEditor; - protected ContentProvider fContentProvider; - - /** - * Creates a content outline page using the given provider and the given editor. - */ - public PHPContentOutlinePage(IDocumentProvider provider, ITextEditor editor) { - super(); - fContentProvider = null; - fDocumentProvider = provider; - fTextEditor = editor; - if (editor instanceof PHPEditor) - fEditor = (PHPEditor) editor; - } - - /* (non-Javadoc) - * Method declared on ContentOutlinePage - */ - public void createControl(Composite parent) { - - super.createControl(parent); - - TreeViewer viewer = getTreeViewer(); - - fContentProvider = new ContentProvider(); - viewer.setContentProvider(fContentProvider); - viewer.setLabelProvider(new OutlineLabelProvider()); - - viewer.addSelectionChangedListener(this); - - if (fInput != null) - viewer.setInput(fInput); - } - - /* (non-Javadoc) - * Method declared on ContentOutlinePage - */ - public void selectionChanged(SelectionChangedEvent event) { - - super.selectionChanged(event); - - ISelection selection = event.getSelection(); - if (selection.isEmpty()) - fTextEditor.resetHighlightRange(); - else { - Outlineable segment = (Outlineable) ((IStructuredSelection) selection).getFirstElement(); - int start = segment.getPosition().getOffset(); - int length = segment.getPosition().getLength(); - try { - fTextEditor.setHighlightRange(start, length, true); - } catch (IllegalArgumentException x) { - fTextEditor.resetHighlightRange(); - } - } - } - - public Object[] getVariables() { - if (fContentProvider != null) { - return fContentProvider.getVariables(); - } - return null; - } - // public ContentProvider getContentProvider() { - // return contentProvider; - // } - -}