Java Äڵ忡 ´ëÇØ ÄÚµå Áö¿ø ¼öÇà

JDT API¸¦ »ç¿ëÇÏ¸é ´Ù¸¥ Ç÷¯±×ÀÎÀÌ ÀϺΠJava ¿ä¼Ò¿¡¼­ ÄÚµå Áö¿ø ¶Ç´Â ÄÚµå ¼±ÅÃÀ» ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿ÀÆÛ·¹À̼ÇÀ» Çã¿ëÇÏ´Â ¿ä¼Ò´Â ICodeAssist¸¦ ±¸ÇöÇÕ´Ï´Ù.

¿ÀÆÛ·¹À̼ǿ¡´Â µÎ °¡Áö Á¾·ù°¡ ÀÖ½À´Ï´Ù.

Java ¸ðµ¨¿¡´Â ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇÏ´Â µÎ °³ÀÇ ¿ä¼Ò, IClassFile°ú ICompilationUnit°¡ ÀÖ½À´Ï´Ù. ÄÚµå ¿Ï·á ¹× ÄÚµå ¼±ÅÃÀº ¼Ò½º¸¦ ÷ºÎÇÑ °æ¿ì Ŭ·¡½º ÆÄÀÏÀÇ °á°ú¿¡¸¸ ÀÀ´äÇÕ´Ï´Ù.

ÄÚµå ¿Ï·á

ÄÚµå completion ¼öÇà

ÄÚµå completionÀ» ÇÁ·Î±×·¡¹ÖÇÏ¿© ¼öÇàÇÏ´Â À¯ÀÏÇÑ ¹æ¹ýÀº ICodeAssist.codeComplete¸¦ È£ÃâÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ÄÄÆÄÀÏ ´ÜÀ§¿¡¼­ ¿øÇÏ´Â ÄÚµå completion ´ÙÀ½¿¡ ¿ÀÇÁ¼ÂÀ» ÁöÁ¤ÇÕ´Ï´Ù. °¡´ÉÇÑ completionÀ» Çã¿ëÇÏ·Á¸é CompletionRequestor ÀνºÅϽºµµ Á¦°øÇØ¾ß ÇÕ´Ï´Ù.

CompletionRequestor.acceptÀÇ ¸Þ¼Òµå´Â ÄÚµå ¿Ï¼ºÀ» À§ÇÑ ¸ðµç À¯ÇüÀÇ Á¦¾ÈÀ» Çã¿ëÇÕ´Ï´Ù. CompletionProposal ÀÇ ¸Þ¼Òµå¿¡´Â Á¦¾ÈµÈ ¿ä¼Ò(À̸§, ¼±¾ð À¯Çü µî), ÄÄÆÄÀÏ ´ÜÀ§¿¡¼­ Á¦¾ÈµÈ »ðÀÔ À§Ä¡ ¹× ÇØ´ç °Ë»ö ´É·ÂÀ» ¼³¸íÇÏ´Â Á¤º¸°¡ Á¦°øµË´Ï´Ù.   

¿Ï¼º ¿äûÀÚ´Â ¸¹Àº ´Ù¸¥ À¯ÇüÀÇ ¿Ï¼ºÀ» Çã¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. CompletionProposal.getKind°¡ ÀÌ À¯ÇüÀ» Á¦°øÇÕ´Ï´Ù.

¸î °¡Áö °¡´ÉÇÑ ¿Ï¼º À¯ÇüÀº ´ÙÀ½°ú °°½À´Ï´Ù(°¡´ÉÇÑ ¿Ï¼º À¯Çü Àüü ¸ñ·ÏÀº CompletionProposal¿¡¼­ º¼ ¼ö ÀÖÀ½).

completion ¿äûÀÚ´Â ¶ÇÇÑ ÄÄÆÄÀÏ ¿À·ù¸¦ Çã¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.  

Completion °Ë»ö ´É·Â

¿©·¯ °¡Áö °¡´ÉÇÑ completionÀÌ ÀÖÀ» ¼ö ÀÖÀ¸¹Ç·Î Á¦½ÃµÈ completionÀÇ °Ë»ö ´É·ÂÀ» ´Ù¸¥ Á¦¾È»çÇ×°ú ºñ±³ÇÏ´Â µ¥ °Ë»ö ´É·Â °³³äÀ» »ç¿ëÇÕ´Ï´Ù. °Ë»ö ´É·ÂÀº ¾çÀÇ Á¤¼ö·Î Ç¥½ÃµË´Ï´Ù. ´Ù¸¥ Á¦¾È»çÇ×ÀÇ °ª¿¡ »ó´ëÀûÀ¸·Î »ç¿ëµÇ´Â Á¡À» Á¦¿ÜÇÏ°í °ª¿¡´Â ¾Ï½ÃÀû Àǹ̰¡ ¾ø½À´Ï´Ù. ÄÚµå completion Èĺ¸ÀÇ °Ë»ö ´É·ÂÀº ¿¹»óÇϴ ǥÇö½Ä À¯ÇüÀÇ ¿µÇâÀ» ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. º¯¼ö À¯Çü, ij½ºÆ® À¯Çü, ¸®ÅÏ À¯Çü°ú °°Àº ÁÖº¯ Äڵ忡 ÀÖ´Â À¯Çü¿¡ °ü·ÃÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. completion¿¡¼­ÀÇ ¿¹»ó Á¢µÎºÎ ¶Ç´Â Á¢¹ÌºÎ Á¸Àç ¿©ºÎµµ °Ë»ö ´É·Â¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

ÄÚµå completion ¿É¼Ç

JDT ÄÚ¾î Ç÷¯±×ÀÎÀº ÄÚµå completionÀÇ µ¿ÀÛÀ» Á¦¾îÇÏ´Â ¿É¼ÇÀ» Á¤ÀÇÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¿É¼ÇÀº ±âŸ Ç÷¯±×ÀÎÀ¸·Î º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.  

Ãß°¡ ¿É¼ÇÀ» »ç¿ëÇÏ¿© Çʵå, static Çʵå, ·ÎÄà º¯¼ö ¹× ¸Þ¼Òµå Àμö¿¡ Á¦¾ÈµÈ completion À̸§ÀÇ Á¢µÎºÎ ¹× Á¢¹ÌºÎ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.  

ÄÚµå Áö¿ø ¿É¼Ç ¹× ±âº»°ª¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â  JDT ÄÚ¾î ÄÚµå Áö¿ø ¿É¼ÇÀ» ÂüÁ¶ÇϽʽÿÀ.

ÄÚµå selection

ÄÚµå selection ¼öÇà

ÄÚµå selectionÀº ÄÄÆÄÀÏ ´ÜÀ§¿¡¼­ ÅØ½ºÆ® ¹üÀ§(º¸Åë ¼±ÅÃµÈ ÅØ½ºÆ®)·Î Ç¥½ÃµÇ´Â Java ¿ä¼Ò¸¦ ã´Â µ¥ »ç¿ëµË´Ï´Ù. ÇÁ·Î±×·¥¿¡ µû¶ó ÄÚµå selectionÀ» ¼öÇàÇÏ·Á¸é, ICodeAssist.codeSelect¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù. selectionÀÇ ½ÃÀÛ »öÀÎ À§Ä¡¿Í ÇØ´ç ±æÀ̸¦ Á¦°øÇØ¾ß ÇÕ´Ï´Ù. °á°ú´Â Java ¿ä¼ÒÀÇ ¹è¿­ÀÔ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì ¹è¿­¿¡´Â ÇϳªÀÇ ¿ä¼Ò¸¸ ÀÖÁö¸¸ ¼±ÅÃÀÌ ¸ðÈ£ÇÑ °æ¿ì¿¡´Â °¡´ÉÇÑ ¸ðµç ¿ä¼Ò°¡ ¸®Åϵ˴ϴÙ.

´ÙÀ½ ¿¹¿¡¼­ ÄÚµå ¼±ÅÃÀº ÄÄÆÄÀÏ ´ÜÀ§·Î È£ÃâµË´Ï´Ù.

      // 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) {
   }

fooMethodÀÇ Ã¹ ¹øÂ° ¹®ÀÚ ´ÙÀ½¿¡ ¿ÀÇÁ¼ÂÀ» ÁöÁ¤ÇÏ°í ±æÀÌ·Î 0À» ÁöÁ¤ÇÒ °æ¿ì, selectionÀº ÅäÅ« fooMethod Àüü¸¦ Æ÷ÇÔÇϵµ·Ï °è»êµË´Ï´Ù. ´ë½Å ±æÀÌ·Î 5¸¦ ÁöÁ¤ÇÒ °æ¿ì, selectionÀº ooMet·Î °£Áֵ˴ϴÙ.