From c231d1e1e3631727590b73ffc5bc79f494a1710e Mon Sep 17 00:00:00 2001 From: khartlage Date: Thu, 4 Mar 2004 20:37:12 +0000 Subject: [PATCH] added old hover behaviour; added a php category for views --- net.sourceforge.phpeclipse/plugin.properties | 1 + net.sourceforge.phpeclipse/plugin.xml | 4 + .../ui/text/java/hover/AnnotationHover.java | 37 ++++++++-- .../phpeditor/PHPSourceViewerConfiguration.java | 27 ++++--- .../phpeclipse/phpeditor/PHPTextHover.java | 82 ++++++++++---------- 5 files changed, 90 insertions(+), 61 deletions(-) diff --git a/net.sourceforge.phpeclipse/plugin.properties b/net.sourceforge.phpeclipse/plugin.properties index d484cf9..47b698b 100644 --- a/net.sourceforge.phpeclipse/plugin.properties +++ b/net.sourceforge.phpeclipse/plugin.properties @@ -7,6 +7,7 @@ naturePHP.name=PHP Project phpProblemName=PHP Problem transientPHPProblemName=Transient PHP Problem phpTaskName=Java Task +viewCategoryName=PHP phpEditorTextHoversName=PHP Editor Text Hovers diff --git a/net.sourceforge.phpeclipse/plugin.xml b/net.sourceforge.phpeclipse/plugin.xml index 1dce0ed..fae4bbd 100644 --- a/net.sourceforge.phpeclipse/plugin.xml +++ b/net.sourceforge.phpeclipse/plugin.xml @@ -910,6 +910,10 @@ + + -1) return formatMessage(message); } - + // Added as long as the above doesn't work + if (fPHPTextHover!=null) { + message = fPHPTextHover.getHoverInfo(textViewer, hoverRegion); + if (message!=null) { + return formatMessage(message); + } + } return null; } @@ -93,10 +103,25 @@ public class AnnotationHover extends AbstractJavaEditorTextHover { * @see IJavaEditorTextHover#setEditor(IEditorPart) */ public void setEditor(IEditorPart editor) { - if (editor instanceof PHPUnitEditor) + if (editor instanceof PHPUnitEditor) { super.setEditor(editor); - else + if (editor != null) { + IEditorInput editorInput = editor.getEditorInput(); + if (editorInput instanceof IFileEditorInput) { + try { + IFile f = ((IFileEditorInput) editorInput).getFile(); + fPHPTextHover = new PHPTextHover(f.getProject()); + return; + } catch (NullPointerException e) { + // this exception occurs, if getTextHover is called by + // preference pages ! + } + } + } + fPHPTextHover = new PHPTextHover(null); + } else { super.setEditor(null); + } } /** diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java index c870909..627a046 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPSourceViewerConfiguration.java @@ -289,19 +289,20 @@ public class PHPSourceViewerConfiguration extends SourceViewerConfiguration { return new JavaEditorTextHoverProxy(hoverDescs[i], getEditor()); i++; } - if (fEditor != null) { - IEditorInput editorInput = fEditor.getEditorInput(); - if (editorInput instanceof IFileEditorInput) { - try { - IFile f = ((IFileEditorInput) editorInput).getFile(); - return new PHPTextHover(f.getProject()); - } catch (NullPointerException e) { - // this exception occurs, if getTextHover is called by - // preference pages ! - } - } - } - return new PHPTextHover(null); + return null; +// if (fEditor != null) { +// IEditorInput editorInput = fEditor.getEditorInput(); +// if (editorInput instanceof IFileEditorInput) { +// try { +// IFile f = ((IFileEditorInput) editorInput).getFile(); +// return new PHPTextHover(f.getProject()); +// } catch (NullPointerException e) { +// // this exception occurs, if getTextHover is called by +// // preference pages ! +// } +// } +// } +// return new PHPTextHover(null); } /* * @see SourceViewerConfiguration#getTextHover(ISourceViewer, String) diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPTextHover.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPTextHover.java index 32d7e9b..5535560 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPTextHover.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPTextHover.java @@ -1,82 +1,78 @@ /********************************************************************** -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 + 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 -**********************************************************************/ + Contributors: + IBM Corporation - Initial implementation + Klaus Hartlage - www.eclipseproject.de + **********************************************************************/ package net.sourceforge.phpeclipse.phpeditor; - import java.io.FileReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; - import net.sourceforge.phpdt.internal.corext.phpdoc.PHPDocUtil; import net.sourceforge.phpeclipse.PHPeclipsePlugin; import net.sourceforge.phpeclipse.builder.IdentifierIndexManager; import net.sourceforge.phpeclipse.builder.PHPIdentifierLocation; import net.sourceforge.phpeclipse.phpeditor.php.PHPElement; import net.sourceforge.phpeclipse.phpeditor.php.PHPWordExtractor; - import org.eclipse.core.resources.IProject; import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.ITextHover; import org.eclipse.jface.text.ITextViewer; import org.eclipse.jface.text.Region; import org.eclipse.swt.graphics.Point; - /** - * Implementation for an ITextHover - * which hovers over PHP code. + * Implementation for an ITextHover which hovers over PHP code. */ public class PHPTextHover implements ITextHover { public static HashMap functionDescriptions = null; - private static PHPWordExtractor phpWordDetector = new PHPWordExtractor(); /** * The current project; maybe null for preference pages */ private IProject fProject; - public PHPTextHover(IProject project) { fProject = project; } - /* (non-Javadoc) - * Method declared on ITextHover + /* + * (non-Javadoc) Method declared on ITextHover */ public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) { if (hoverRegion != null) { try { if (hoverRegion.getLength() > -1) { - String word = textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength()); + String word = textViewer.getDocument().get(hoverRegion.getOffset(), + hoverRegion.getLength()); if (functionDescriptions == null) { functionDescriptions = new HashMap(); - - ArrayList syntaxbuffer = PHPSyntaxRdr.getSyntaxData(); + ArrayList syntaxbuffer = PHPSyntaxRdr.getSyntaxData(); String strbuffer = null; PHPElement elbuffer = null; - if (syntaxbuffer!=null) { - for (int i=0;i 0) { try { @@ -84,11 +80,12 @@ public class PHPTextHover implements ITextHover { String filename; FileReader phpdocFileReader; StringBuffer hoverInfoBuffer = new StringBuffer(); - String workspaceLocation = PHPeclipsePlugin.getWorkspace().getRoot().getLocation().toString(); + String workspaceLocation = PHPeclipsePlugin.getWorkspace() + .getRoot().getLocation().toString(); // boolean foundPHPdoc = false; for (int i = 0; i < list.size(); i++) { location = (PHPIdentifierLocation) list.get(i); - filename = workspaceLocation + location.getFilename(); + filename = workspaceLocation + location.getFilename(); PHPDocUtil.appendPHPDoc(hoverInfoBuffer, filename, location); } hoverInfo = hoverInfoBuffer.toString(); @@ -106,16 +103,17 @@ public class PHPTextHover implements ITextHover { } return null; // don't show this annoying text -// return "empty selection"; + // return "empty selection"; } - - /* (non-Javadoc) - * Method declared on ITextHover + /* + * (non-Javadoc) Method declared on ITextHover */ public IRegion getHoverRegion(ITextViewer textViewer, int offset) { - Point selection = PHPWordExtractor.findWord(textViewer.getDocument(), offset); + Point selection = PHPWordExtractor.findWord(textViewer.getDocument(), + offset); // show the extracted word as a tooltip - if (selection != null && selection.x <= offset && offset < selection.x + selection.y) + if (selection != null && selection.x <= offset + && offset < selection.x + selection.y) return new Region(selection.x, selection.y); return new Region(offset, 0); } -- 1.7.1