텍스트 및 눈금자 풍선 도움말

풍선 도움말 지원은 플랫폼 텍스트 프레임워크에 제공되며, 편집기에 표시된 눈금자 및 텍스트에 정보 위에 정보를 주는 풍선 도움말(또는 정보 팝업)를 구현할 수 있습니다.

풍선 도움말 지원은 선택적입니다. 기본적으로 SourceViewerConfiguration은 일반 정보를 표시하는 데 유용하지 않으므로 풍선 도움말 작동을 설치하지 않습니다. 텍스트 또는 눈금자 풍선 도움말을 제공하려면, 플러그 가능 풍선 도움말 오브젝트를 정의할 수 있도록 편집기의 소스 표시기 구성을 구성해야 합니다.

다음과 같이 풍선 도움말 작동을 정의하는 메소드를 확인할 수 있도록 JavaSourceViewerConfiguration을 다시 살펴 봅니다.

public ITextHover getTextHover(ISourceViewer sourceViewer, String contentType) {
	return new JavaTextHover();
}
public IAnnotationHover getAnnotationHover(ISourceViewer sourceViewer) {
	return new JavaAnnotationHover();
}

또한 풍선 도움말 헬퍼 클래스는 SourceViewer 프로토콜(setTextHoversetAnnotationHover)을 사용하여 동적으로 설치될 수 있습니다. 이런 식으로 수행하는 경우 특별한 런타임 이점은 없으나 SourceViewerConfiguration의 서브클래스에 플러그 가능한 작동 대체사항을 모두 놓으면 한 위치에서 모든 작동 대체사항을 통합할 수 있는 이점이 있습니다.

두 가지 종류의 풍선 도움말을 제공하는 데 대한 세부사항을 살펴 봅니다.

풍선 도움말

풍선 도움말을 사용하여 편집기에 표시된 텍스트에 대한 정보 텍스트를 제공할 수 있습니다. 이것은 ITextHover 인터페이스를 사용하여 수행됩니다. 풍선 도움말은 문서에 오프셋이 있는 경우 풍선 도움말 정보의 소스로 사용되어야 할 영역을 계산해야 합니다. 또한 특정 영역에 대한 정보 텍스트도 제공해야 합니다.  JavaTextHover는 매우 단순합니다. 풍선 도움말에 제공된 오프셋이 텍스트 선택사항 내부에 포함되는지 확인합니다.   오프셋이 텍스트 선택사항 내부에 포함되는 경우, 풍선 도움말 영역으로 선택 범위를 제공합니다. 

public class JavaTextHover implements ITextHover {

	...
	
	public IRegion getHoverRegion(ITextViewer textViewer, int offset) {
		Point selection= textViewer.getSelectedRange();
		if (selection.x <= offset && offset < selection.x + selection.y)
			return new Region(selection.x, selection.y);
		return new Region(offset, 0);
	}
}

자체 계산된 풍선 도움말 영역이 있는 경우 문서에서 선택한 텍스트를 확보하여 풍선 도움말 정보로서 텍스트를 리턴합니다.

public class JavaTextHover implements ITextHover {

	public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
		if (hoverRegion != null) {
			try {
				if (hoverRegion.getLength() > -1)
					return textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
			} catch (BadLocationException x) {
			}
		}
		return JavaEditorMessages.getString("JavaTextHover.emptySelection"); 
	}
	...
}

편집기의 선택사항 위에 마우스를 놓으면 풍선 도움말에 선택사항이 표시되는 것을 확인할 수 있습니다.

선택한 영역에 대한 풍선 도움말 정보

보다 복잡한 컨텍스트 정보를 사용하여 유용한 풍선 도움말 정보를 계산할 수 있습니다. 이 예제는 JDT 편집기에 대해 구현된 JavaTextHover에서 찾을 수 있습니다.

눈금자 풍선 도움말

세로 눈금자의 풍선 도움말은 표시 행 지향 정보를 표시하는 데 유용합니다. 풍선 도움말 클래스는 위의 설명된 대로 구성됩니다. IAnnotationHover는 눈금자 풍선 도움말 오브젝트에 대한 인터페이스입니다.  풍선 도움말이 눈금자의 어노테이션용으로 디자인되었음을 이름이 의미한다고 해도 적절한 내용을 판별하는 것은 전적으로 개별 편집기에 달려 있습니다. 눈금자 풍선 도움말은 해당 행 마커의 존재에 관계없이 특정 행 번호와 연관된 정보 문자열을 리턴해야 합니다.   

Java 예제 편집기의 JavaAnnotationHover는 모든 행에 대한 풍선 도움말을 구현합니다. JavaAnnotationHover는 풍선 도움말 행의 모든 텍스트를 얻고 정보 문자열로 이 텍스트를 리턴하는 데 행 번호를 사용합니다.

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;
}

눈금자에 관한 풍선 도움말 정보

풍선 도움말에는 문서 및 소스 표시기에 대한 액세스 권한이 있으므로 표시될 정보에 대한 보다 복잡한 컨텍스트를 결정하는 데 필요한 모든 컨텍스트가 있습니다. 예를 들어, 어노테이션 모델은 세로 눈금자에 표시된 어노테이션에 대해 풍선 도움말 정보를 제공하기 위해 소스 표시기에서 검색될 수 있습니다. JDT 편집기를 통해 제공된 JavaAnnotationHover는 이 성능을 제공합니다.