X-Git-Url: http://git.phpeclipse.com 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 22e1470..bc388b1 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPTextHover.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPTextHover.java @@ -11,7 +11,6 @@ **********************************************************************/ package net.sourceforge.phpeclipse.phpeditor; -import java.io.FileReader; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -21,6 +20,7 @@ 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.PHPFunction; import net.sourceforge.phpeclipse.phpeditor.php.PHPWordExtractor; import org.eclipse.core.resources.IProject; @@ -34,9 +34,9 @@ import org.eclipse.swt.graphics.Point; * Implementation for an ITextHover which hovers over PHP code. */ public class PHPTextHover implements ITextHover { - public static HashMap functionDescriptions = null; + private static HashMap functionDescriptions = null; - private static PHPWordExtractor phpWordDetector = new PHPWordExtractor(); + private static HashMap identDescriptions = null; /** * The current project; maybe null for preference pages @@ -54,52 +54,69 @@ public class PHPTextHover implements ITextHover { 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(); + identDescriptions = new HashMap(); ArrayList syntaxbuffer = PHPSyntaxRdr.getSyntaxData(); - String strbuffer = null; PHPElement elbuffer = null; if (syntaxbuffer != null) { for (int i = 0; i < syntaxbuffer.size(); i++) { elbuffer = (PHPElement) syntaxbuffer.get(i); - functionDescriptions.put(elbuffer.getName(), elbuffer.getHoverText()); + if (elbuffer instanceof PHPFunction) { + functionDescriptions.put( + elbuffer.getName(), elbuffer + .getHoverText()); + } else { + identDescriptions.put(elbuffer.getName(), + elbuffer.getHoverText()); + } } } // // while ((syntaxbuffer != null) - // && (!syntaxbuffer.isEmpty() && ((elbuffer = (PHPElement) + // && (!syntaxbuffer.isEmpty() && ((elbuffer = + // (PHPElement) // syntaxbuffer.remove(0)) != null))) { // functionDescriptions.put(elbuffer.getName(), // elbuffer.getHoverText()); // } } - String hoverInfo = (String) functionDescriptions.get(word); + String hoverInfo = (String) identDescriptions.get(word); if (hoverInfo == null & word.length() > 0) { - hoverInfo = (String) functionDescriptions.get(word.toLowerCase()); + hoverInfo = (String) functionDescriptions.get(word + .toLowerCase()); } if (hoverInfo == null && fProject != null) { - // get the possible PHPDoc information from the index file - IdentifierIndexManager indexManager = PHPeclipsePlugin.getDefault().getIndexManager(fProject); + // get the possible PHPDoc information from the index + // file + IdentifierIndexManager indexManager = PHPeclipsePlugin + .getDefault().getIndexManager(fProject); List list = indexManager.getLocations(word); if (list.size() > 0) { try { PHPIdentifierLocation location; String filename; - FileReader phpdocFileReader; StringBuffer hoverInfoBuffer = new StringBuffer(); String workspaceLocation; if (fProject != null) { - workspaceLocation = fProject.getLocation().toString() + '/'; + workspaceLocation = fProject.getFullPath() + .toString() + '/'; } else { // should never happen? - workspaceLocation = PHPeclipsePlugin.getWorkspace().getRoot().getLocation().toString(); + workspaceLocation = PHPeclipsePlugin + .getWorkspace().getRoot() + .getFullPath().toString(); } // boolean foundPHPdoc = false; for (int i = 0; i < list.size(); i++) { - location = (PHPIdentifierLocation) list.get(i); - filename = workspaceLocation + location.getFilename(); - PHPDocUtil.appendPHPDoc(hoverInfoBuffer, filename, location); + location = (PHPIdentifierLocation) list + .get(i); + filename = workspaceLocation + + location.getFilename(); + PHPDocUtil.appendPHPDoc(hoverInfoBuffer, + filename, location); } hoverInfo = hoverInfoBuffer.toString(); } catch (Throwable e) { @@ -123,9 +140,11 @@ public class PHPTextHover implements 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); }