X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/JavaAnnotationHover.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/JavaAnnotationHover.java deleted file mode 100644 index 9f6f980..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/text/JavaAnnotationHover.java +++ /dev/null @@ -1,197 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2003 IBM Corporation 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 API and implementation - *******************************************************************************/ -package net.sourceforge.phpdt.internal.ui.text; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import net.sourceforge.phpdt.internal.ui.PHPUIMessages; -import net.sourceforge.phpeclipse.phpeditor.IJavaAnnotation; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.Position; -import org.eclipse.jface.text.source.Annotation; -import org.eclipse.jface.text.source.IAnnotationHover; -import org.eclipse.jface.text.source.IAnnotationModel; -import org.eclipse.jface.text.source.ISourceViewer; -import org.eclipse.ui.externaltools.internal.ant.editor.derived.HTMLPrinter; - -// TODO: delete this class ? we use PHPAnnotationHover instead ! -/** - * Determines all markers for the given line and collects, concatenates, and formates - * their messages. - */ -public class JavaAnnotationHover implements IAnnotationHover { - - /** - * Returns the distance to the ruler line. - */ - protected int compareRulerLine(Position position, IDocument document, int line) { - - if (position.getOffset() > -1 && position.getLength() > -1) { - try { - int javaAnnotationLine= document.getLineOfOffset(position.getOffset()); - if (line == javaAnnotationLine) - return 1; - if (javaAnnotationLine <= line && line <= document.getLineOfOffset(position.getOffset() + position.getLength())) - return 2; - } catch (BadLocationException x) { - } - } - - return 0; - } - - /** - * Selects a set of markers from the two lists. By default, it just returns - * the set of exact matches. - */ - protected List select(List exactMatch, List including) { - return exactMatch; - } - - /** - * Returns one marker which includes the ruler's line of activity. - */ - protected List getJavaAnnotationsForLine(ISourceViewer viewer, int line) { - - IDocument document= viewer.getDocument(); - IAnnotationModel model= viewer.getAnnotationModel(); - - if (model == null) - return null; - - List exact= new ArrayList(); - List including= new ArrayList(); - - Iterator e= model.getAnnotationIterator(); - HashMap messagesAtPosition= new HashMap(); - while (e.hasNext()) { - Object o= e.next(); - if (o instanceof IJavaAnnotation) { - IJavaAnnotation a= (IJavaAnnotation)o; - if (!a.hasOverlay()) { - Position position= model.getPosition((Annotation)a); - if (position == null) - continue; - - if (isDuplicateJavaAnnotation(messagesAtPosition, position, a.getMessage())) - continue; - - switch (compareRulerLine(position, document, line)) { - case 1: - exact.add(a); - break; - case 2: - including.add(a); - break; - } - } - } - } - - return select(exact, including); - } - - private boolean isDuplicateJavaAnnotation(Map messagesAtPosition, Position position, String message) { - if (messagesAtPosition.containsKey(position)) { - Object value= messagesAtPosition.get(position); - if (message.equals(value)) - return true; - - if (value instanceof List) { - List messages= (List)value; - if (messages.contains(message)) - return true; - else - messages.add(message); - } else { - ArrayList messages= new ArrayList(); - messages.add(value); - messages.add(message); - messagesAtPosition.put(position, messages); - } - } else - messagesAtPosition.put(position, message); - return false; - } - - /* - * @see IVerticalRulerHover#getHoverInfo(ISourceViewer, int) - */ - public String getHoverInfo(ISourceViewer sourceViewer, int lineNumber) { - List javaAnnotations= getJavaAnnotationsForLine(sourceViewer, lineNumber); - if (javaAnnotations != null) { - - if (javaAnnotations.size() == 1) { - - // optimization - IJavaAnnotation javaAnnotation= (IJavaAnnotation) javaAnnotations.get(0); - String message= javaAnnotation.getMessage(); - if (message != null && message.trim().length() > 0) - return formatSingleMessage(message); - - } else { - - List messages= new ArrayList(); - - Iterator e= javaAnnotations.iterator(); - while (e.hasNext()) { - IJavaAnnotation javaAnnotation= (IJavaAnnotation) e.next(); - String message= javaAnnotation.getMessage(); - if (message != null && message.trim().length() > 0) - messages.add(message.trim()); - } - - if (messages.size() == 1) - return formatSingleMessage((String) messages.get(0)); - - if (messages.size() > 1) - return formatMultipleMessages(messages); - } - } - - return null; - } - - /* - * Formats a message as HTML text. - */ - private String formatSingleMessage(String message) { - StringBuffer buffer= new StringBuffer(); - HTMLPrinter.addPageProlog(buffer); - HTMLPrinter.addParagraph(buffer, HTMLPrinter.convertToHTMLContent(message)); - HTMLPrinter.addPageEpilog(buffer); - return buffer.toString(); - } - - /* - * Formats several message as HTML text. - */ - private String formatMultipleMessages(List messages) { - StringBuffer buffer= new StringBuffer(); - HTMLPrinter.addPageProlog(buffer); - HTMLPrinter.addParagraph(buffer, HTMLPrinter.convertToHTMLContent(PHPUIMessages.getString("JavaAnnotationHover.multipleMarkersAtThisLine"))); //$NON-NLS-1$ - - HTMLPrinter.startBulletList(buffer); - Iterator e= messages.iterator(); - while (e.hasNext()) - HTMLPrinter.addBullet(buffer, HTMLPrinter.convertToHTMLContent((String) e.next())); - HTMLPrinter.endBulletList(buffer); - - HTMLPrinter.addPageEpilog(buffer); - return buffer.toString(); - } -}