JDT API¸¦ »ç¿ëÇÏ¸é ´Ù¸¥ Ç÷¯±×ÀÎÀÌ ÀϺΠJava ¿ä¼Ò¿¡¼ ÄÚµå Áö¿ø ¶Ç´Â ÄÚµå ¼±ÅÃÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¶ÀÛÀ» Çã¿ëÇÏ´Â ¿ä¼Ò´Â ICodeAssist¸¦ ±¸ÇöÇÕ´Ï´Ù.
Á¶ÀÛ¿¡´Â µÎ °¡Áö Á¾·ù°¡ ÀÖ½À´Ï´Ù.
Java ¸ðµ¨¿¡´Â ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â µÎ °³ÀÇ ¿ä¼Ò, IClassFile°ú ICompilationUnit°¡ ÀÖ½À´Ï´Ù. ÄÚµå ¿Ï·á ¹× ÄÚµå ¼±ÅÃÀº ¼Ò½º¸¦ ÷ºÎÇÑ °æ¿ì Ŭ·¡½º ÆÄÀÏÀÇ °á°ú¿¡¸¸ ÀÀ´äÇÕ´Ï´Ù.
ÄÚµå completionÀ» ÇÁ·Î±×·¡¹ÖÇÏ¿© ¼öÇàÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ICodeAssist.codeComplete¸¦ È£ÃâÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ÄÄÆÄÀÏ ´ÜÀ§¿¡¼ ¿øÇÏ´Â ÄÚµå completion ´ÙÀ½¿¡ ¿ÀÇÁ¼ÂÀ» ÁöÁ¤ÇÕ´Ï´Ù. °¡´ÉÇÑ completionÀ» Çã¿ëÇÏ·Á¸é ICompletionRequestor ÀνºÅϽºµµ Á¦°øÇØ¾ß ÇÕ´Ï´Ù.
ICompletionRequestorÀÇ °¢ ¸Þ¼Òµå´Â ÄÚµå completion°ú °ü·ÃÇÏ¿© ´Ù¸¥ Á¾·ùÀÇ Á¦¾ÈÀ» Çã¿ëÇÕ´Ï´Ù. °¢ ¸Þ¼ÒµåÀÇ ¸Å°³º¯¼ö¿¡´Â Á¦¾ÈµÈ ¿ä¼Ò(À̸§, ¼±¾ð À¯Çü µî), ÄÄÆÄÀÏ ´ÜÀ§¿¡¼ Á¦¾ÈµÈ »ðÀÔ À§Ä¡ ¹× ÇØ´ç °Ë»ö ´É·ÂÀ» ¼³¸íÇÏ´Â ÅØ½ºÆ®°¡ Æ÷ÇԵ˴ϴÙ.
completion ¿äûÀÚ´Â ´ÙÀ½ ¿ä¼ÒÀÇ »ðÀÔÀ» Æ÷ÇÔÇÏ¿© ¿©·¯ °¡Áö À¯ÇüÀÇ completionÀ» Çã¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
completion ¿äûÀÚ´Â ¶ÇÇÑ ÄÄÆÄÀÏ ¿À·ù¸¦ Çã¿ëÇÒ ¼öµµ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
Ç÷¯±×ÀÎÀÌ ¸ðµç Á¾·ùÀÇ ÄÚµå completion¿¡ °ü½ÉÀÌ ÀÖ´Â °ÍÀº ¾Æ´Ò °æ¿ì, CompletionRequestorAdapter¸¦ »ç¿ëÇÏ¿© °ü½ÉÀÌ ÀÖ´Â completion Á¾·ù¸¸ ±¸ÇöÇϵµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â Ŭ·¡½º completionÀ» Çã¿ëÇÏ´Â µ¥¸¸ »ç¿ëµÇ´Â ¾î´ðÅ͸¦ º¸¿©ÁÝ´Ï´Ù.
// Get the compilation unit ICompilationUnit unit = ...; // Get the offset int offset = ...; // Create the requestor ICompletionRequestor requestor = new CompletionRequestorAdapter() { public void acceptClass( char[] packageName, char[] className, char[] completionName, int modifiers, int completionStart, int completionEnd, int relevance) { System.out.println("propose a class named " + new String(className)); } }; // Compute proposals unit.codeComplete(offset, requestor);
¿©·¯ °¡Áö °¡´ÉÇÑ completionÀÌ ÀÖÀ» ¼ö ÀÖÀ¸¹Ç·Î Á¦½ÃµÈ completionÀÇ °Ë»ö ´É·ÂÀ» ´Ù¸¥ Á¦¾È»çÇ×°ú ºñ±³ÇÏ´Â µ¥ °Ë»ö ´É·Â °³³äÀ» »ç¿ëÇÕ´Ï´Ù. °Ë»ö ´É·ÂÀº ¾çÀÇ Á¤¼ö·Î Ç¥½ÃµË´Ï´Ù. ´Ù¸¥ Á¦¾È»çÇ×ÀÇ °ª¿¡ »ó´ëÀûÀ¸·Î »ç¿ëµÇ´Â Á¡À» Á¦¿ÜÇÏ°í °ª¿¡´Â ¾Ï½ÃÀû Àǹ̰¡ ¾ø½À´Ï´Ù. ÄÚµå completion Èĺ¸ÀÇ °Ë»ö ´É·ÂÀº ¿¹»óÇϴ ǥÇö½Ä À¯ÇüÀÇ ¿µÇâÀ» ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. º¯¼ö À¯Çü, ij½ºÆ® À¯Çü, ¸®ÅÏ À¯Çü°ú °°Àº ÁÖº¯ Äڵ忡 ÀÖ´Â À¯Çü¿¡ °ü·ÃÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. completion¿¡¼ÀÇ ¿¹»ó Á¢µÎºÎ ¶Ç´Â Á¢¹ÌºÎ Á¸Àç ¿©ºÎµµ °Ë»ö ´É·Â¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
JDT ÄÚ¾î Ç÷¯±×ÀÎÀº ÄÚµå completionÀÇ ÀÛµ¿À» Á¦¾îÇÏ´Â ¿É¼ÇÀ» Á¤ÀÇÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¿É¼ÇÀº ±âŸ Ç÷¯±×ÀÎÀ¸·Î º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.
Ãß°¡ ¿É¼ÇÀ» »ç¿ëÇÏ¿© Çʵå, Á¤Àû Çʵå, ·ÎÄà º¯¼ö ¹× ¸Þ¼Òµå Àμö¿¡ Á¦¾ÈµÈ completion À̸§ÀÇ Á¢µÎºÎ ¹× Á¢¹ÌºÎ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÄÚµå Áö¿ø ¿É¼Ç ¹× ±âº»°ª¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â JDT ÄÚ¾î ÄÚµå Áö¿ø ¿É¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.
ÄÚµå selectionÀº ÄÄÆÄÀÏ ´ÜÀ§¿¡¼ ÅØ½ºÆ® ¹üÀ§(º¸Åë ¼±ÅÃµÈ ÅØ½ºÆ®)·Î Ç¥½ÃµÇ´Â Java ¿ä¼Ò¸¦ ã´Â µ¥ »ç¿ëµË´Ï´Ù. ÇÁ·Î±×·¥¿¡ µû¶ó ÄÚµå selectionÀ» ¼öÇàÇÏ·Á¸é, ICodeAssist.codeSelect¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù. selectionÀÇ ½ÃÀÛ »öÀÎ À§Ä¡¿Í ÇØ´ç ±æÀ̸¦ Á¦°øÇØ¾ß ÇÕ´Ï´Ù. °á°ú´Â Java ¿ä¼ÒÀÇ ¹è¿ÀÔ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì ¹è¿¿¡´Â ÇÑ ¿ä¼Ò¸¸ ÀÖÁö¸¸ selectionÀÌ ¸ðÈ£ÇÏ¸é °¡´ÉÇÑ ¸ðµç ¿ä¼Ò°¡ ¸®Åϵ˴ϴÙ.
´ÙÀ½ ¿¹¿¡¼ ÄÚµå ¼±ÅÃÀº ÄÄÆÄÀÏ ´ÜÀ§·Î È£ÃâµË´Ï´Ù.
// Get the compilation unit
ICompilationUnit unit = ...;
// Get the offset and length
int offset = ...;
int length = ...;
// perform selection
IJavaElement[] elements = unit.codeSelect(offset, length);
System.out.println("the selected element is " + element[0].getElementName());
selection ±æÀ̸¦ 0À¸·Î ÁöÁ¤ÇÒ °æ¿ì, selectionÀº ÁöÁ¤µÈ ¿ÀÇÁ¼ÂÀ» ¿¡¿ö½Î´Â ¿ÏÀüÇÑ ÅäÅ«À» ã¾Æ¼ °è»êÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¸Þ¼Òµå ¿¹Á¦¸¦ °í·ÁÇØ º¸½Ê½Ã¿À.
public void fooMethod(Object) {
}