added old hover behaviour;
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / text / java / hover / AnnotationHover.java
index 1c533df..3839e78 100644 (file)
@@ -17,15 +17,19 @@ import net.sourceforge.phpdt.internal.ui.text.HTMLPrinter;
 import net.sourceforge.phpdt.ui.PreferenceConstants;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 import net.sourceforge.phpeclipse.phpeditor.JavaAnnotationIterator;
+import net.sourceforge.phpeclipse.phpeditor.PHPTextHover;
 import net.sourceforge.phpeclipse.phpeditor.PHPUnitEditor;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.text.IRegion;
 import org.eclipse.jface.text.ITextViewer;
 import org.eclipse.jface.text.Position;
 import org.eclipse.jface.text.source.Annotation;
 import org.eclipse.jface.text.source.IAnnotationModel;
+import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IFileEditorInput;
 import org.eclipse.ui.editors.text.EditorsUI;
 import org.eclipse.ui.texteditor.AnnotationPreference;
 import org.eclipse.ui.texteditor.DefaultMarkerAnnotationAccess;
@@ -36,7 +40,7 @@ public class AnnotationHover extends AbstractJavaEditorTextHover {
 
        private IPreferenceStore fStore= PHPeclipsePlugin.getDefault().getPreferenceStore();
        private DefaultMarkerAnnotationAccess fAnnotationAccess= new DefaultMarkerAnnotationAccess();
-       
+       private PHPTextHover fPHPTextHover = null;
        /*
         * Formats a message as HTML text.
         */
@@ -58,11 +62,11 @@ public class AnnotationHover extends AbstractJavaEditorTextHover {
                
                IDocumentProvider provider= PHPeclipsePlugin.getDefault().getCompilationUnitDocumentProvider();
                IAnnotationModel model= provider.getAnnotationModel(getEditor().getEditorInput());
-               
+               String message= null;
                if (model != null) {
                        Iterator e= new JavaAnnotationIterator(model, true);
                        int layer= -1;
-                       String message= null;
+                       
                        while (e.hasNext()) {
                                Annotation a= (Annotation) e.next();
 
@@ -85,7 +89,13 @@ public class AnnotationHover extends AbstractJavaEditorTextHover {
                        if (layer > -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);
+               }
        }
 
        /**