package tk.eclipse.plugin.htmleditor.editors;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.source.IAnnotationHover;
import org.eclipse.jface.text.source.ISourceViewer;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
/**
* @author Naoki Takezoe
*/
public class HTMLAnnotationHover implements IAnnotationHover {
private IEditorPart editor;
public HTMLAnnotationHover(IEditorPart editor) {
this.editor = editor;
}
private IMarker[] getMarker() {
try {
IFileEditorInput input = (IFileEditorInput)editor.getEditorInput();
IFile file = input.getFile();
return file.findMarkers(IMarker.MARKER, true, IFile.DEPTH_ZERO);
} catch (CoreException e) {
return new IMarker[0];
}
}
public String getHoverInfo(ISourceViewer sourceViewer, int lineNumber) {
IMarker[] marker = getMarker();
if(marker != null) {
StringBuffer buffer = new StringBuffer();
for(int i = 0; i < marker.length; i++) {
try {
Integer integer = (Integer)marker[i].getAttribute(IMarker.LINE_NUMBER);
if((integer != null) && (integer.intValue() == lineNumber + 1)) {
String message = (String)marker[i].getAttribute(IMarker.MESSAGE);
if(message!=null && message.length()!=0) {
if(buffer.length() > 0) {
buffer.append("\r\n");
}
buffer.append(message);
}
}
} catch (CoreException e) {
}
}
return buffer.toString();
}
return null;
}
}