Change to openFileInTextEditor to fix ticket issue #650.
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / PHPAnnotationHover.java
index 552183e..7972adf 100644 (file)
@@ -1,16 +1,16 @@
 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
+ 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
-    www.phpeclipse.de
-**********************************************************************/
+ Contributors:
+ IBM Corporation - Initial implementation
+ www.phpeclipse.de
+ **********************************************************************/
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -25,163 +25,153 @@ import org.eclipse.jface.text.source.IAnnotationModel;
 import org.eclipse.jface.text.source.ISourceViewer;
 import org.eclipse.ui.texteditor.MarkerAnnotation;
 
-/** 
+/**
  * The PHPAnnotationHover provides the hover support for PHP editors.
  */
+
 public class PHPAnnotationHover implements IAnnotationHover {
 
-       /* (non-Javadoc)
-        * Method declared on IAnnotationHover
+       /*
+        * (non-Javadoc) Method declared on IAnnotationHover
+        */
+       // public String getHoverInfo(ISourceViewer sourceViewer, int lineNumber) {
+       // IDocument document= sourceViewer.getDocument();
+       //
+       // try {
+       // IRegion info= document.getLineInformation(lineNumber);
+       // return document.get(info.getOffset(), info.getLength());
+       // } catch (BadLocationException x) {
+       // }
+       //
+       // return null;
+       // }
+       //      
+       static final int MAX_INFO_LENGTH = 80;
+
+       /**
+        * @see org.eclipse.jface.text.source.IAnnotationHover#getHoverInfo(org.eclipse.jface.text.source.ISourceViewer,
+        *      int)
+        */
+
+       public String getHoverInfo(ISourceViewer viewer, int line) {
+               String info = null;
+               List markers = getMarkersForLine(viewer, line);
+               if (markers != null) {
+                       info = "";
+                       for (int i = 0; i < markers.size(); i++) {
+                               IMarker marker = (IMarker) markers.get(i);
+                               String message = marker.getAttribute(IMarker.MESSAGE,
+                                               (String) null);
+                               if (message != null && message.trim().length() > 0) {
+
+                                       if (message.length() > MAX_INFO_LENGTH) {
+                                               message = splitMessage(message);
+                                       }
+                                       info += message;
+
+                                       if (i != markers.size() - 1) {
+                                               info += "\n";
+                                       }
+                               }
+                       }
+               }
+               return info;
+       }
+
+       private String splitMessage(String message) {
+               String result = "";
+
+               if (message.length() <= MAX_INFO_LENGTH) {
+                       return message;
+               }
+
+               String tmpStr = new String(message);
+
+               while (tmpStr.length() > MAX_INFO_LENGTH) {
+
+                       int spacepos = tmpStr.indexOf(" ", MAX_INFO_LENGTH);
+
+                       if (spacepos != -1) {
+                               result += tmpStr.substring(0, spacepos) + "\n";
+                               tmpStr = tmpStr.substring(spacepos);
+                       } else {
+                               result += tmpStr.substring(0, MAX_INFO_LENGTH) + "\n";
+                               tmpStr = tmpStr.substring(MAX_INFO_LENGTH);
+                       }
+
+               }
+
+               result += tmpStr;
+
+               return result;
+       }
+
+       /**
+        * Returns all markers which includes the ruler's line of activity.
+        */
+       protected List getMarkersForLine(ISourceViewer aViewer, int aLine) {
+               List markers = new ArrayList();
+               IAnnotationModel model = aViewer.getAnnotationModel();
+               if (model != null) {
+                       Iterator e = model.getAnnotationIterator();
+                       while (e.hasNext()) {
+                               Object o = e.next();
+                               if (o instanceof MarkerAnnotation) {
+                                       MarkerAnnotation a = (MarkerAnnotation) o;
+                                       if (compareRulerLine(model.getPosition(a), aViewer
+                                                       .getDocument(), aLine) != 0) {
+                                               markers.add(a.getMarker());
+                                       }
+                               }
+                       }
+               }
+               return markers;
+       }
+
+       /**
+        * Returns one marker which includes the ruler's line of activity.
+        */
+       protected IMarker getMarkerForLine(ISourceViewer aViewer, int aLine) {
+               IMarker marker = null;
+               IAnnotationModel model = aViewer.getAnnotationModel();
+               if (model != null) {
+                       Iterator e = model.getAnnotationIterator();
+                       while (e.hasNext()) {
+                               Object o = e.next();
+                               if (o instanceof MarkerAnnotation) {
+                                       MarkerAnnotation a = (MarkerAnnotation) o;
+                                       if (compareRulerLine(model.getPosition(a), aViewer
+                                                       .getDocument(), aLine) != 0) {
+                                               marker = a.getMarker();
+                                       }
+                               }
+                       }
+               }
+               return marker;
+       }
+
+       /**
+        * Returns distance of given line to specified position (1 = same line, 2 =
+        * included in given position, 0 = not related).
         */
-//     public String getHoverInfo(ISourceViewer sourceViewer, int lineNumber) {
-//             IDocument document= sourceViewer.getDocument();
-//
-//             try {
-//                     IRegion info= document.getLineInformation(lineNumber);
-//                     return document.get(info.getOffset(), info.getLength());
-//             } catch (BadLocationException x) {
-//             }
-//
-//             return null;
-//     }
-//     
-  static final int MAX_INFO_LENGTH = 80;
-
-  /**
-   * @see org.eclipse.jface.text.source.IAnnotationHover#getHoverInfo(org.eclipse.jface.text.source.ISourceViewer, int)
-   */
-       
-  public String getHoverInfo(ISourceViewer viewer, int line) {
-    String info = null;
-    List markers = getMarkersForLine(viewer, line);
-    if (markers != null) {
-      info = "";
-      for (int i =  0; i < markers.size(); i++) {
-        IMarker marker = (IMarker) markers.get(i);
-        String message =
-          marker.getAttribute(IMarker.MESSAGE, (String) null);
-        if (message != null && message.trim().length() > 0) {
-                                       
-          if (message.length() > MAX_INFO_LENGTH) {
-            message = splitMessage(message);
-          }
-          info += message;
-                                       
-          if(i != markers.size() - 1) {
-             info += "\n";
-          }
-        }
-      }
-    }
-    return info;
-  }
-
-  private String splitMessage(String message) {
-    String result = "";
-               
-    if(message.length() <= MAX_INFO_LENGTH) {
-      return message;
-    }
-               
-    String tmpStr = new String(message);
-               
-    while(tmpStr.length() > MAX_INFO_LENGTH) {
-                       
-      int spacepos = tmpStr.indexOf(" ", MAX_INFO_LENGTH);
-                       
-      if(spacepos != -1) {
-        result += tmpStr.substring(0, spacepos) + "\n";
-        tmpStr = tmpStr.substring(spacepos);
-      }
-      else {
-        result += tmpStr.substring(0, MAX_INFO_LENGTH) + "\n";
-        tmpStr = tmpStr.substring(MAX_INFO_LENGTH);
-      }
-                       
-                       
-                       
-    }
-               
-    result += tmpStr;
-               
-    return result;
-  }
-
-  /**
-   * Returns all markers which includes the ruler's line of activity.
-   */
-  protected List getMarkersForLine(ISourceViewer aViewer, int aLine) {
-    List markers = new ArrayList();
-    IAnnotationModel model = aViewer.getAnnotationModel();
-    if (model != null) {
-      Iterator e = model.getAnnotationIterator();
-      while (e.hasNext()) {
-        Object o = e.next();
-        if (o instanceof MarkerAnnotation) {
-          MarkerAnnotation a = (MarkerAnnotation) o;
-          if (compareRulerLine(model.getPosition(a),
-            aViewer.getDocument(),
-            aLine)
-            != 0) {
-            markers.add(a.getMarker());
-          }
-        }
-      }
-    }
-    return markers;
-  }
-
-  /**
-   * Returns one marker which includes the ruler's line of activity.
-   */
-  protected IMarker getMarkerForLine(ISourceViewer aViewer, int aLine) {
-    IMarker marker = null;
-    IAnnotationModel model = aViewer.getAnnotationModel();
-    if (model != null) {
-      Iterator e = model.getAnnotationIterator();
-      while (e.hasNext()) {
-        Object o = e.next();
-        if (o instanceof MarkerAnnotation) {
-          MarkerAnnotation a = (MarkerAnnotation) o;
-          if (compareRulerLine(model.getPosition(a),
-            aViewer.getDocument(),
-            aLine)
-            != 0) {
-            marker = a.getMarker();
-          }
-        }
-      }
-    }
-    return marker;
-  }
-
-  /**
-   * Returns distance of given line to specified position (1 = same line,
-   * 2 = included in given position, 0 = not related).
-   */
-  protected int compareRulerLine(
-    Position aPosition,
-    IDocument aDocument,
-    int aLine) {
-    int distance = 0;
-    if (aPosition.getOffset() > -1 && aPosition.getLength() > -1) {
-      try {
-        int markerLine =
-          aDocument.getLineOfOffset(aPosition.getOffset());
-        if (aLine == markerLine) {
-          distance = 1;
-        } else if (
-          markerLine <= aLine
-            && aLine
-              <= aDocument.getLineOfOffset(
-                aPosition.getOffset()
-                  + aPosition.getLength())) {
-          distance = 2;
-        }
-      } catch (BadLocationException e) {
-      }
-    }
-    return distance;
-  }
+       protected int compareRulerLine(Position aPosition, IDocument aDocument,
+                       int aLine) {
+               int distance = 0;
+               if (aPosition.getOffset() > -1 && aPosition.getLength() > -1) {
+                       try {
+                               int markerLine = aDocument.getLineOfOffset(aPosition
+                                               .getOffset());
+                               if (aLine == markerLine) {
+                                       distance = 1;
+                               } else if (markerLine <= aLine
+                                               && aLine <= aDocument.getLineOfOffset(aPosition
+                                                               .getOffset()
+                                                               + aPosition.getLength())) {
+                                       distance = 2;
+                               }
+                       } catch (BadLocationException e) {
+                       }
+               }
+               return distance;
+       }
 }