ÅØ½ºÆ® ¹× ´«±ÝÀÚ Ç³¼± µµ¿ò¸»

dz¼± µµ¿ò¸» Áö¿øÀº Ç÷§Æû ÅØ½ºÆ® ÇÁ·¹ÀÓ¿öÅ©¿¡ Á¦°øµÇ¸ç, ÆíÁý±â¿¡ Ç¥½ÃµÈ ´«±ÝÀÚ ¹× ÅØ½ºÆ®¿¡ Á¤º¸ À§¿¡ Á¤º¸¸¦ Áִ dz¼± µµ¿ò¸»(¶Ç´Â Á¤º¸ ÆË¾÷)¸¦ ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.

dz¼± µµ¿ò¸» Áö¿øÀº ¼±ÅÃÀûÀÔ´Ï´Ù.  ±âº»ÀûÀ¸·Î SourceViewerConfigurationÀº ÀÏ¹Ý Á¤º¸¸¦ Ç¥½ÃÇÏ´Â µ¥ À¯¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î dz¼± µµ¿ò¸» ÀÛµ¿À» ¼³Ä¡ÇÏÁö ¾Ê½À´Ï´Ù.  ÅؽºÆ® ¶Ç´Â ´«±ÝÀÚ Ç³¼± µµ¿ò¸»À» Á¦°øÇÏ·Á¸é, Ç÷¯±× °¡´É dz¼± µµ¿ò¸» ¿ÀºêÁ§Æ®¸¦ Á¤ÀÇÇÒ ¼ö ÀÖµµ·Ï ÆíÁý±âÀÇ ¼Ò½º Ç¥½Ã±â ±¸¼ºÀ» ±¸¼ºÇØ¾ß ÇÕ´Ï´Ù.

´ÙÀ½°ú °°ÀÌ Ç³¼± µµ¿ò¸» ÀÛµ¿À» Á¤ÀÇÇÏ´Â ¸Þ¼Òµå¸¦ È®ÀÎÇÒ ¼ö ÀÖµµ·Ï JavaSourceViewerConfigurationÀ» ´Ù½Ã »ìÆì º¾´Ï´Ù.

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

¶ÇÇÑ Ç³¼± µµ¿ò¸» ÇïÆÛ Ŭ·¡½º´Â SourceViewer ÇÁ·ÎÅäÄÝ(setTextHover ¹× setAnnotationHover)À» »ç¿ëÇÏ¿© µ¿ÀûÀ¸·Î ¼³Ä¡µÉ ¼ö ÀÖ½À´Ï´Ù.  ÀÌ·± ½ÄÀ¸·Î ¼öÇàÇÏ´Â °æ¿ì Ưº°ÇÑ ·±Å¸ÀÓ ÀÌÁ¡Àº ¾øÀ¸³ª SourceViewerConfigurationÀÇ ¼­ºêŬ·¡½º¿¡ Ç÷¯±× °¡´ÉÇÑ ÀÛµ¿ ´ëü»çÇ×À» ¸ðµÎ ³õÀ¸¸é ÇÑ À§Ä¡¿¡¼­ ¸ðµç ÀÛµ¿ ´ëü»çÇ×À» ÅëÇÕÇÒ ¼ö ÀÖ´Â ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù.

µÎ °¡Áö Á¾·ùÀÇ Ç³¼± µµ¿ò¸»À» Á¦°øÇÏ´Â µ¥ ´ëÇÑ ¼¼ºÎ»çÇ×À» »ìÆì º¾´Ï´Ù.

dz¼± µµ¿ò¸»

dz¼± µµ¿ò¸»À» »ç¿ëÇÏ¿© ÆíÁý±â¿¡ Ç¥½ÃµÈ ÅØ½ºÆ®¿¡ ´ëÇÑ Á¤º¸ ÅØ½ºÆ®¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.  À̰ÍÀº ITextHover ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© ¼öÇàµË´Ï´Ù.  Ç³¼± µµ¿ò¸»Àº ¹®¼­¿¡ ¿ÀÇÁ¼ÂÀÌ ÀÖ´Â °æ¿ì dz¼± µµ¿ò¸» Á¤º¸ÀÇ ¼Ò½º·Î »ç¿ëµÇ¾î¾ß ÇÒ ¿µ¿ªÀ» °è»êÇØ¾ß ÇÕ´Ï´Ù.  ¶ÇÇÑ Æ¯Á¤ ¿µ¿ª¿¡ ´ëÇÑ Á¤º¸ ÅØ½ºÆ®µµ Á¦°øÇØ¾ß ÇÕ´Ï´Ù.   JavaTextHover´Â ¸Å¿ì ´Ü¼øÇÕ´Ï´Ù.  Ç³¼± µµ¿ò¸»¿¡ Á¦°øµÈ ¿ÀÇÁ¼ÂÀÌ ÅØ½ºÆ® ¼±ÅûçÇ× ³»ºÎ¿¡ Æ÷ÇԵǴÂÁö È®ÀÎÇÕ´Ï´Ù.    ¿ÀÇÁ¼ÂÀÌ ÅØ½ºÆ® ¼±ÅûçÇ× ³»ºÎ¿¡ Æ÷ÇԵǴ °æ¿ì, dz¼± µµ¿ò¸» ¿µ¿ªÀ¸·Î ¼±Åà ¹üÀ§¸¦ Á¦°øÇÕ´Ï´Ù.  

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

ÀÚü °è»êµÈ dz¼± µµ¿ò¸» ¿µ¿ªÀÌ ÀÖ´Â °æ¿ì ¹®¼­¿¡¼­ ¼±ÅÃÇÑ ÅØ½ºÆ®¸¦ È®º¸ÇÏ¿© dz¼± µµ¿ò¸» Á¤º¸·Î¼­ ÅØ½ºÆ®¸¦ ¸®ÅÏÇÕ´Ï´Ù.

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"); 
	}
	...
}

ÆíÁý±âÀÇ ¼±ÅûçÇ× À§¿¡ ¸¶¿ì½º¸¦ ³õÀ¸¸é dz¼± µµ¿ò¸»¿¡ ¼±ÅûçÇ×ÀÌ Ç¥½ÃµÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

º¸´Ù º¹ÀâÇÑ ÄÁÅØ½ºÆ® Á¤º¸¸¦ »ç¿ëÇÏ¿© À¯¿ëÇÑ Ç³¼± µµ¿ò¸» Á¤º¸¸¦ °è»êÇÒ ¼ö ÀÖ½À´Ï´Ù.  ÀÌ ¿¹Á¦´Â JDT ÆíÁý±â¿¡ ´ëÇØ ±¸ÇöµÈ JavaTextHover¿¡¼­ ãÀ» ¼ö ÀÖ½À´Ï´Ù.

´«±ÝÀÚ Ç³¼± µµ¿ò¸»

¼¼·Î ´«±ÝÀÚÀÇ Ç³¼± µµ¿ò¸»Àº Ç¥½Ã Çà ÁöÇâ Á¤º¸¸¦ Ç¥½ÃÇÏ´Â µ¥ À¯¿ëÇÕ´Ï´Ù.  Ç³¼± µµ¿ò¸» Ŭ·¡½º´Â À§ÀÇ ¼³¸íµÈ ´ë·Î ±¸¼ºµË´Ï´Ù.  IAnnotationHover´Â ´«±ÝÀÚ Ç³¼± µµ¿ò¸» ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù.  Ç³¼± µµ¿ò¸»ÀÌ ´«±ÝÀÚÀÇ ¾î³ëÅ×À̼ǿëÀ¸·Î µðÀÚÀεǾúÀ½À» À̸§ÀÌ ÀǹÌÇÑ´Ù°í ÇØµµ ÀûÀýÇÑ ³»¿ëÀ» ÆÇº°ÇÏ´Â °ÍÀº ÀüÀûÀ¸·Î °³º° ÆíÁý±â¿¡ ´Þ·Á ÀÖ½À´Ï´Ù.  ´«±ÝÀÚ Ç³¼± µµ¿ò¸»Àº ÇØ´ç Çà ¸¶Ä¿ÀÇ Á¸Àç¿¡ °ü°è¾øÀÌ Æ¯Á¤ Çà ¹øÈ£¿Í ¿¬°üµÈ Á¤º¸ ¹®ÀÚ¿­À» ¸®ÅÏÇØ¾ß ÇÕ´Ï´Ù.    

Java ¿¹Á¦ ÆíÁý±âÀÇ JavaAnnotationHover´Â ¸ðµç Çà¿¡ ´ëÇÑ Ç³¼± µµ¿ò¸»À» ±¸ÇöÇÕ´Ï´Ù.  JavaAnnotationHover´Â dz¼± µµ¿ò¸» ÇàÀÇ ¸ðµç ÅØ½ºÆ®¸¦ ¾ò°í Á¤º¸ ¹®ÀÚ¿­·Î ÀÌ ÅØ½ºÆ®¸¦ ¸®ÅÏÇÏ´Â µ¥ Çà ¹øÈ£¸¦ »ç¿ëÇÕ´Ï´Ù.

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

dz¼± µµ¿ò¸»¿¡´Â ¹®¼­ ¹× ¼Ò½º Ç¥½Ã±â¿¡ ´ëÇÑ ¾×¼¼½º ±ÇÇÑÀÌ ÀÖÀ¸¹Ç·Î Ç¥½ÃµÉ Á¤º¸¿¡ ´ëÇÑ º¸´Ù º¹ÀâÇÑ ÄÁÅØ½ºÆ®¸¦ °áÁ¤ÇÏ´Â µ¥ ÇÊ¿äÇÑ ¸ðµç ÄÁÅØ½ºÆ®°¡ ÀÖ½À´Ï´Ù.  ¿¹¸¦ µé¾î, ¾î³ëÅ×ÀÌ¼Ç ¸ðµ¨Àº ¼¼·Î ´«±ÝÀÚ¿¡ Ç¥½ÃµÈ ¾î³ëÅ×À̼ǿ¡ ´ëÇØ dz¼± µµ¿ò¸» Á¤º¸¸¦ Á¦°øÇϱâ À§ÇØ ¼Ò½º Ç¥½Ã±â¿¡¼­ °Ë»öµÉ ¼ö ÀÖ½À´Ï´Ù.  JDT ÆíÁý±â¸¦ ÅëÇØ Á¦°øµÈ JavaAnnotationHover´Â ÀÌ ¼º´ÉÀ» Á¦°øÇÕ´Ï´Ù.

Copyright IBM Corporation and others 2000, 2003.