ÄÁÅÙÃ÷ Áö¿ø

ÄÁÅÙÃ÷ Áö¿øÀ» »ç¿ëÇÏ¿© ¿äû ½Ã ÄÁÅØ½ºÆ® ÄÁÅÙÃ÷ ¿Ï·á¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.  ÀÌ ±â´ÉÀº org.eclipse.jface.text.contentassistÀÇ Ç÷§Æû ÅØ½ºÆ® ÇÁ·¹ÀÓ¿öÅ©¸¦ ÅëÇØ ±¸ÇöµË´Ï´Ù.  ÆË¾÷ â(Á¤º¸ ÆË¾÷)Àº ¹®±¸¸¦ ¿Ï·áÇϱâ À§ÇØ »ç¿ë °¡´ÉÇÑ ÅØ½ºÆ® ¼±ÅûçÇ×À» Á¦¾ÈÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.  »ç¿ëÀÚ´Â ÅØ½ºÆ®¿¡ »ðÀÔÇÒ ¼±ÅûçÇ×À» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.  ¶ÇÇÑ ÄÁÅÙÃ÷ Áö¿øÀº ¹®¼­ÀÇ ÇöÀç À§Ä¡¿Í °ü·ÃµÈ Á¤º¸¸¦ »ç¿ëÀÚ¿¡°Ô Á¦°øÇÒ ¼ö ÀÖµµ·Ï ÄÁÅØ½ºÆ® Á¤º¸ ÆË¾÷À» Áö¿øÇÕ´Ï´Ù.  

ÄÁÅÙÃ÷ Áö¿ø ±¸ÇöÀº ¼±ÅÃÀûÀÔ´Ï´Ù.  ±âº»ÀûÀ¸·Î SourceViewerConfigurationÀº ƯÁ¤ ÆíÁý±â¿¡ »ç¿ëµÈ ¹®¼­ ¸ðµ¨À» ¸ð¸£°í ÄÁÅÙÃ÷ Áö¿ø¿¡ ´ëÇÑ ÀÏ¹Ý ÀÛµ¿ÀÌ ¾øÀ¸¹Ç·Î ÄÁÅÙÃ÷ Áö¿øÀ» ¼³Ä¡ÇÏÁö ¾Ê½À´Ï´Ù.  

ÄÁÅÙÃ÷ Áö¿øÀ» ±¸ÇöÇÏ·Á¸é ÄÁÅÙÃ÷ Áö¿øÀ» Á¤ÀÇÇϵµ·Ï ÆíÁý±âÀÇ ¼Ò½º Ç¥½Ã±â ±¸¼ºÀ» ±¸¼ºÇØ¾ß ÇÕ´Ï´Ù.  JavaSourceViewerConfiguration ³»ºÎÀÇ Java ÆíÁý±â ¿¹Á¦¿¡¼­ ±¸¼ºµË´Ï´Ù.

public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {

	ContentAssistant assistant= new ContentAssistant();
	assistant.setContentAssistProcessor(new JavaCompletionProcessor(), IDocument.DEFAULT_CONTENT_TYPE);
	assistant.setContentAssistProcessor(new JavaDocCompletionProcessor(), JavaPartitionScanner.JAVA_DOC);

	...
	return assistant;
}

ÄÁÅÙÃ÷ Áö¿ø ÀÛµ¿Àº ÀÎÅÍÆäÀ̽º IContentAssistant¿¡¼­ Á¤Àǵ˴ϴÙ.  ÄÁÅÙÃ÷ Áö¿øÀ» ¼³Á¤ÇÏ´Â °ÍÀº ±¸¹® °­Á¶Ç¥½Ã¸¦ ¼³Á¤ÇÏ´Â °Í°ú ´Ù¼Ò À¯»çÇÕ´Ï´Ù.  Áö¿øÀº ¼­·Î ´Ù¸¥ ¹®¼­ ÄÁÅÙÃ÷ À¯Çü°ú °ü·ÃÇÏ¿© »óÀÌÇÑ ¹®±¸ ¿Ï·á °èȹÀ¸·Î ±¸¼ºµÇ¾î¾ß ÇÕ´Ï´Ù.  ¿Ï·á °èȹÀº   IContentAssistProcessor¸¦ »ç¿ëÇÏ¿© ±¸ÇöµË´Ï´Ù.  ÇÁ·Î¼¼¼­´Â ¿Ï·á¸¦ Á¦¾ÈÇÏ°í Æ¯Á¤ ÄÁÅÙÃ÷ À¯Çü ³» ¿ÀÇÁ¼Â¿¡ ´ëÇÑ ÄÁÅØ½ºÆ® Á¤º¸¸¦ °è»êÇÕ´Ï´Ù.

ÄÁÅÙÃ÷ Áö¿ø ÇÁ·Î¼¼¼­

¸ðµç ÄÁÅÙÃ÷ À¯Çü¿¡ ÄÁÅÙÃ÷ Áö¿øÀÌ ÀÖ¾î¾ß ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.  Java ¿¹Á¦ ÆíÁý±â¿¡¼­ ÄÁÅÙÃ÷ Áö¿ø ÇÁ·Î¼¼¼­´Â ±âº» ÄÁÅÙÃ÷ À¯Çü ¹× javadoc¿¡ Á¦°øµÇÁö¸¸, º¹¼öÇà ÁÖ¼®¿¡´Â Á¦°øµÇÁö ¾Ê½À´Ï´Ù.  °¢°¢ÀÇ ÇÁ·Î¼¼¼­¸¦ »ìÆìº¾½Ã´Ù.

JavaCompletionProcessor´Â ¸Å¿ì °£´ÜÇÕ´Ï´Ù.  ÀÌ Å°¿öµå´Â ¿Ï·á Èĺ¸·Î¼­¸¸ Ű¿öµå¸¦ Á¦¾ÈÇÒ ¼ö ÀÖ½À´Ï´Ù.  Å°¿öµå´Â Çʵå fgProposals¿¡ Á¤ÀǵǸç ÀÌ·¯ÇÑ Å°¿öµå´Â È帷ΠÇ×»ó Á¦¾ÈµË´Ï´Ù.

public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer, int documentOffset) {
	ICompletionProposal[] result= new ICompletionProposal[fgProposals.length];
	for (int i= 0; i < fgProposals.length; i++) {
		IContextInformation info= new ContextInformation(fgProposals[i], MessageFormat.format(JavaEditorMessages.getString("CompletionProcessor.Proposal.ContextInfo.pattern"), new Object[] { fgProposals[i] })); //$NON-NLS-1$
		result[i]= new CompletionProposal(fgProposals[i], documentOffset, 0, fgProposals[i].length(), null, fgProposals[i], info, MessageFormat.format(JavaEditorMessages.getString("CompletionProcessor.Proposal.hoverinfo.pattern"), new Object[] { fgProposals[i]})); //$NON-NLS-1$
	}
	return result;
}

¿Ï·á´Â »ç¿ëÀÚ ¿äûÀ» ÅëÇØ Æ®¸®°ÅµÇ°Å³ª "(" ¶Ç´Â "." ¹®ÀÚ ÀÔ·Â ½Ã ÀÚµ¿À¸·Î Æ®¸®°ÅµÉ ¼ö ÀÖ½À´Ï´Ù.

public char[] getCompletionProposalAutoActivationCharacters() {
	return new char[] { '.', '(' };
}

¿Ï·á Á¦¾È ¿Ü¿¡ JavaCompletionProcessor´Â »ç¿ëÀÚ°¡ ¿äûÇÒ ¼ö ÀÖ´Â ÄÁÅØ½ºÆ® Á¤º¸¸¦ Á¤ÀÇÇÕ´Ï´Ù.  ÄÁÅØ½ºÆ® Á¤º¸¿¡´Â Á¦°øµÈ ÄÁÅØ½ºÆ® ¹× ÀÚ¼¼ÇÑ Á¤º¸ ¸Þ½ÃÁö¿¡¼­ »ç¿ë °¡´ÉÇÑ Á¤º¸¿¡ ´ëÇÑ ¼³¸íÀÌ Æ÷ÇԵ˴ϴÙ.   

Java ÆíÁý±â ¿¹Á¦¿¡¼­ Á¤º¸´Â ½ÇÁ¦ ÄÁÅØ½ºÆ®°¡ ¾Æ´Õ´Ï´Ù.  »ç¿ëÀÚ°¡ ÄÁÅØ½ºÆ® Á¤º¸¸¦ ¿äûÇÒ ¶§ ´Ù¼¸ °³ÀÇ ºñ½ÁÇÑ ÄÁÅØ½ºÆ® Á¤º¸ ¿ÀºêÁ§Æ®°¡ Æ÷ÇÔµÈ ¹è¿­ÀÌ ÇöÀç ¿ÀÇÁ¼ÂÀ¸·Î °è»êµË´Ï´Ù.  ÀÌ·± ÄÁÅØ½ºÆ® Á¤º¸ ¿ÀºêÁ§Æ®´Â ¸ðµÎ ¿ÀÇÁ¼Â ¾Õ¿¡ 5ÀÚ¿Í ¿ÀÇÁ¼Â µÚ¿¡ 5ÀÚ¸¦ Æ÷ÇÔÇÏ´Â ÄÁÅØ½ºÆ®¸¦ Á¤ÀÇÇÕ´Ï´Ù. ´Ù¼¸ °¡Áö Á¦¾È Áß Çϳª°¡ ¼±ÅõǸé ÀÚ¼¼ÇÑ Á¤º¸°¡ Ä¿¼­ ±Ùó¿¡ ³ªÅ¸³ª¸ç Ä¿¼­°¡ ¿ÀÇÁ¼Â ÁÖÀ§ÀÇ 5ÀÚ ÄÁÅØ½ºÆ® ³»¿¡ ÀÖ´Â ÇÑ Á¤º¸°¡ À¯ÁöµË´Ï´Ù.

public IContextInformation[] computeContextInformation(ITextViewer viewer, int documentOffset) {
	IContextInformation[] result= new IContextInformation[5];
	for (int i= 0; i < result.length; i++)
		result[i]= new ContextInformation(
			MessageFormat.format(JavaEditorMessages.getString("CompletionProcessor.ContextInfo.display.pattern"), new Object[] { new Integer(i), new Integer(documentOffset) }),
			MessageFormat.format(JavaEditorMessages.getString("CompletionProcessor.ContextInfo.value.pattern"), new Object[] { new Integer(i), new Integer(documentOffset - 5), new Integer(documentOffset + 5)}));
	return result;
}

 

ÀÌ ÄÁÅØ½ºÆ® Á¤º¸´Â "#" ¹®ÀÚ°¡ ÀÔ·ÂµÉ ¶§ ÀÚµ¿À¸·Î Ç¥½ÃµË´Ï´Ù.

public char[] getContextInformationAutoActivationCharacters() {
	return new char[] { '#' };
}

ÄÁÅÙÃ÷ Áö¿ø ±¸¼º

ÄÁÅÙÃ÷ Áö¿øÀÇ ¸ð¾ç ¹× ÀÛµ¿Àº IContentAssistant¸¦ »ç¿ëÇÏ¿© ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.  ¿¹¸¦ µé¾î, ÀÚµ¿ Ȱ¼ºÈ­ Á¦Çѽð£ ¹× Á¤º¸ ÆË¾÷ÀÇ ¹æÇâ°ú »ö»óÀ» ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {

	ContentAssistant assistant= new ContentAssistant();
	...
	assistant.enableAutoActivation(true);
	assistant.setAutoActivationDelay(500);
	assistant.setProposalPopupOrientation(IContentAssistant.PROPOSAL_OVERLAY);
	assistant.setContextInformationPopupOrientation(IContentAssistant.CONTEXT_INFO_ABOVE);
	assistant.setContextInformationPopupBackground(JavaEditorEnvironment.getJavaColorProvider().getColor(new RGB(150, 150, 0)));

	return assistant;
}

 

Copyright IBM Corporation and others 2000, 2003.