Çʵå Áö¿ø

ÀϹÝÀûÀ¸·Î »ç¿ëÀÚ´Â ÅØ½ºÆ® ÇÊµå ¶Ç´Â ÄÞº¸ »óÀÚ¿Í °°Àº ´Ü¼ø Çʵ忡 ÅØ½ºÆ® Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌ Çʵ带 ä¿ì´Â ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå´Â ÀϹÝÀûÀ¸·Î Ç¥ ¶Ç´Â Æ®¸®¿Í °°ÀÌ º¹ÀâÇÑ À§ÁöÆ®(widget)¸¦ ä¿ì´Â Äڵ庸´Ù´Â ÈξÀ ´Ü¼øÇÏÁö¸¸ ÀÌ "´Ü¼ø" Çʵå´Â ÀϹÝÀûÀ¸·Î »ç¿ëÀÚ¿¡°Ô ¸¹Àº ºÎ´ãÀ» ÁÝ´Ï´Ù. Áï, »ç¿ëÀÚ´Â ÄÁÅÙÃ÷°¡ ÇÊ¿äÇÑ Çʵå, Çʵ忡 ¿Ã¹Ù¸¥ ÄÁÅÙÃ÷°¡ µé¾î ÀÖ´ÂÁö ¿©ºÎ ¹× ¿¹»ó ¼±ÅûçÇ×À» ½Äº°ÇØ¾ß ÇÕ´Ï´Ù. JFace Çʵå Áö¿øÀº »ç¿ëÀÚ¿¡°Ô ÀԷ Ÿ½ºÅ©¸¦ ¾È³»Çϴ Ŭ·¡½º¸¦ Á¦°øÇÕ´Ï´Ù.

org.eclipse.jface.fieldassist ÆÐŰÁö´Â µÎ °¡Áö ¹æ½ÄÀ¸·Î Áö¿øÀ» Á¦°øÇÕ´Ï´Ù. µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ忡 ´ëÇÑ Áö¿øÀ» »ç¿ëÇÏ¸é Æ¯Á¤ ÇÊµå »óÅ¿¡ ´ëÇÑ Á¤º¸¸¦ »ç¿ëÀÚ¿¡°Ô Á¦°øÇÏ´Â À̹ÌÁö µ¥ÄÚ·¹À̼ÇÀ» Æ÷ÇÔ½Ãų ¼ö ÀÖ½À´Ï´Ù. ÄÁÅÙÃ÷ Á¦¾È Áö¿øÀ» »ç¿ëÇÏ¸é »ç¿ëÀÚ¿¡°Ô ÄÁÅÙÃ÷ ¼±ÅûçÇ×À» Á¦°øÇÏ´Â ÄÁÅÙÃ÷ Áö¿ø ÆË¾÷À» Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù.

µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵå

µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ带 »ç¿ëÇϸé â ¶Ç´Â ´ëÈ­ »óÀÚ¿¡ Á¤ÀÇµÈ ÇÊµå ¿·¿¡ À̹ÌÁö µ¥ÄÚ·¹À̼ÇÀ» ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥ÄÚ·¹À̼ÇÀº ÇʵåÀÇ ³× ±¸¼® Áß ÇÑ ±¸¼® ¿·¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵå´Â Ç¥½Ã±â¿Í ¸¶Âù°¡Áö·Î, ±âº» Á¦¾î¿¡ ´ëÇÑ ¾×¼¼½º¸¦ °è¼Ó Á¦°øÇϸ鼭 SWT Á¦¾î¿¡ ±â´ÉÀ» Ãß°¡Çϱâ À§ÇÑ ¿ëµµ·Î »ç¿ëµË´Ï´Ù. DecoratedField¿ë API¸¦ »ç¿ëÇÏ¸é µ¥ÄÚ·¹À̼ÇÀ» Ãß°¡ ¶Ç´Â ¼û±â°Å³ª ÇÊµå ¿·¿¡ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ±âº» Á¦¾î¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ¾î ±âÁ¸ SWT API¸¦ »ç¿ëÇÏ¿© ÇØ´ç ÄÁÅÙÃ÷, »ö»ó ¹× ±Û²Ã ¼³Á¤°ú °°Àº ±âº» Á¦¾î¿¡ ¿µÇâÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù.

µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵå ÀÛ¼º

¿ÜºÎ¿¡¼­´Â µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ尡 ´ÜÀÏ Á¦¾î¿Í °°Àº ±â´ÉÀ» ¼öÇàÇÕ´Ï´Ù. ³»ºÎ¿¡¼­´Â µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ尡 ÄÄÆ÷ÁöÆ® Á¦¾î¸¦ »ç¿ëÇÏ¿© ÇÊµå ¹× ÇØ´ç µ¥ÄÚ·¹À̼ÇÀÇ ·¹À̾ƿôÀ» °ü¸®ÇÕ´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì, À̴ Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ëÇÁ·Î±×·¥¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ±×·¯³ª µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ尡 ½ÇÁ¦ Á¦¾î ÀÛ¼ºÀ» ¼öÇàÇØ¾ß ÇÔÀ» ÀǹÌÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ½º´ÏÆêÀÇ °æ¿ì ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ÇØ´ç ´ëÈ­ »óÀÚ Áß ÇϳªÀÇ ³»ºÎ¿¡ ÅØ½ºÆ® Á¦¾î¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

...
// Create a text field
Text text = new Text(parent, SWT.BORDER);
text.setText("some text");
...

ÀÌ Çʵ带 µ¥ÄÚ·¹À̼ÇÇÏ·Á¸é ´ÙÀ½°ú °°Àº ¹æ½ÄÀ¸·Î Çʵ尡 ÀÛ¼ºµË´Ï´Ù.

...
// Create a decorated field for a text control
DecoratedField field = new DecoratedField(parent, SWT.BORDER, new TextControlCreator());
Text text = (Text)field.getControl();
text.setText("some text");
...

±âº» Á¦¾î¸¦ ÀÛ¼ºÇÏ´Â µ¥ »ç¿ëµÇ´Â µ¿ÀÏÇÑ »óÀ§ ¹× ½ºÅ¸ÀÏ ºñÆ®°¡ µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ带 ÀÛ¼ºÇÏ´Â µ¥µµ »ç¿ëµË´Ï´Ù. ÄÚµåÀÇ ±âº» Â÷ÀÌÁ¡Àº Çʵ忡¼­ ÇÊ¿äÇÑ Æ¯Á¤ À¯ÇüÀÇ Á¦¾î¸¦ ÀÛ¼ºÇÏ´Â IControlCreator ÀνºÅϽº°¡ Á¦°øµÈ´Ù´Â °ÍÀÔ´Ï´Ù. ÅØ½ºÆ® ÇʵåÀÇ °æ¿ì TextControlCreator Ŭ·¡½º¸¦ »ç¿ëÇÏ¿© Á¦¾î¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª IControlCreator¸¦ º¸´Ù ÀÚÀ¯·Ó°Ô ±¸ÇöÇÏ¿© ÇÊµå ³»ºÎ¿¡ ½ºÇÇ³Ê ¶Ç´Â ÄÞº¸ »óÀÚ¿Í °°Àº ´Ù¸¥ Á¦¾î À¯ÇüÀ» ÀÛ¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

µ¥ÄÚ·¹ÀÌ¼Ç »ç¿ë

µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ尡 ÀÛ¼ºµÇ¸é ³× °¡Áö À§Ä¡ Áß Çϳª¿¡ µ¥ÄÚ·¹À̼ÇÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. SWT À§Ä¡ »ó¼ö¸¦ »ç¿ëÇÏ¿© µ¥ÄÚ·¹ÀÌ¼Ç À§Ä¡¸¦ ÁöÁ¤ÇÕ´Ï´Ù. µ¥ÄÚ·¹À̼ÇÀ» Ãß°¡ÇÏ·Á¸é »ç¿ëÀÚ°¡ µ¥ÄÚ·¹À̼ǿ¡ ¸¶¿ì½º¸¦ ´î ¶§ Ç¥½ÃµÉ ¼ö ÀÖ´Â ¼³¸í ÅØ½ºÆ®(¼±ÅûçÇ×) ¹× µ¥ÄÚ·¹À̼ÇÀÇ À̹ÌÁö¸¦ Á¤ÀÇÇÏ´Â FieldDecorationÀ» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.

...
// Create a field decoration and add it to the field
Image image = JFaceResources.getImage("myplugin.specialimage");
FieldDecoration mySpecialDecoration = new FieldDecoration(image, "This field is special");
field.addFieldDecoration(mySpecialDecoration, SWT.TOP | SWT.LEFT, false);
...

ºÎ¿ï ¸Å°³º¯¼ö´Â Á¦¾î¿¡ ÃÊÁ¡À» ¸ÂÃâ ¶§¸¸ µ¥ÄÚ·¹À̼ÇÀÌ Ç¥½ÃµÇ¾î¾ß ÇÏ´ÂÁö ¶Ç´Â Ç×»ó Ç¥½ÃµÇ¾î¾ß ÇÏ´ÂÁö ¿©ºÎ¸¦ ÁöÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÀÌ °æ¿ì, µ¥ÄÚ·¹À̼ÇÀÌ Ç×»ó Ç¥½ÃµË´Ï´Ù. ±×·¯³ª µ¥ÄÚ·¹À̼ÇÀ» ¼û±â°Å³ª Ç¥½ÃÇØ¾ß ÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ´ÙÀ½ ½º´ÏÆêÀº ÀÌ¹Ì ÀÛ¼ºµÈ µ¥ÄÚ·¹À̼ÇÀ» ¼û±é´Ï´Ù.

...
// Something has occurred that makes me want to hide the decoration
field.hideDecoration(mySpecialDecoration);
...

µ¥ÄÚ·¹À̼ÇÀÇ À̹ÌÁö ¶Ç´Â ¼³¸íÀÌ °»½ÅµÇ¸é Çʵ忡µµ ÇØ´ç ³»¿ëÀ» ¾Ë·Á¾ß µ¥ÄÚ·¹À̼ÇÀ» ´Ù½Ã ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

...
// Something has made the field extra special
mySpecialDecoration.setDescription("This field is extra-special");
field.updateDecoration(mySpecialDecoration);
...

µ¥ÄÚ·¹ÀÌ¼ÇµÈ ÇÊµå ¹× µ¥ÄÚ·¹À̼ǵÇÁö ¾ÊÀº ÇÊµå ·¹À̾ƿô

µ¥ÄÚ·¹ÀÌ¼Ç Çʵ带 ´ëÈ­ »óÀÚ ¶Ç´Â â ³»ºÎ¿¡ ¹èÄ¡ÇÏ´Â °æ¿ì ´Ü¼øÇÑ ±âº» Á¦¾î°¡ ¾Æ´Ñ ÇʵåÀÇ ·¹À̾ƿô Á¦¾î¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ ÅØ½ºÆ® Á¦¾î ÀÛ¼ºÀ» À§ÇÑ Äڵ带 °í·ÁÇØ¾ß ÇÕ´Ï´Ù. ÅØ½ºÆ® Á¦¾î¸¦ ¹èÄ¡ÇÏ´Â °æ¿ì ÀÀ¿ëÇÁ·Î±×·¥Àº Á¦¾î¿¡ ´ëÇÑ ·¹À̾ƿô µ¥ÀÌÅ͸¦ ¼³Á¤ÇÕ´Ï´Ù.

...
// Create a text field
Text text = new Text(parent, SWT.BORDER);
text.setText("some text");
// Set the layout data
GridData data = new GridData(IDialogConstants.ENTRY_FIELD_WIDTH, SWT.DEFAULT);
text.setLayoutData(data); 
...

µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ带 ¹èÄ¡ÇÏ´Â °æ¿ì, ÀÀ¿ëÇÁ·Î±×·¥Àº ÇʵåÀÇ ·¹À̾ƿô Á¦¾î¿¡ ·¹À̾ƿô µ¥ÀÌÅ͸¦ Çã¿ëÇØ¾ß ÇÕ´Ï´Ù. ¿øÇÏ´Â ·¹À̾ƿô¿¡ µû¶ó Çʵå Å©±â¸¦ µ¥ÄÚ·¹ÀÌ¼Ç Å©±â¿¡ ¸Â°Ô Á¶Á¤ÇØ¾ß ÇÕ´Ï´Ù.

...
// Create a decorated field for a text control
DecoratedField field = new DecoratedField(main, SWT.BORDER, new TextControlCreator());
Text text = (Text)field.getControl();
text.setText("some text");
// Set the layout data
GridData data = new GridData(IDialogConstants.ENTRY_FIELD_WIDTH + 
   FieldDecorationRegistry.getDefault().getMaximumDecorationWidth(), SWT.DEFAULT);
field.getLayoutControl().setLayoutData(data); 
...

Çʵå Áö¿ø¿¡¼­´Â ƯÁ¤ ´ëÈ­ »óÀÚ ¶Ç´Â â ³»ºÎ¿¡¼­ µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ常 »ç¿ëÇØ¾ß ÇÏ´Â °ÍÀº ¾Æ´Ï¸ç ÀÌ·¯ÇÑ Çʵ带 »ç¿ëÇÏ´Â °ÍÀ¸·Î °¡Á¤ÇÏÁöµµ ¾Ê½À´Ï´Ù. ±×·¯³ª µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵå¿Í ´Ü¼ø Á¦¾î°¡ È¥ÇÕµÉ ¶§ â ·¹À̾ƿôÀÌ Á¶±Ý ´õ º¹ÀâÇØÁú ¼ö ÀÖ½À´Ï´Ù. µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵå¿Í µ¥ÄÚ·¹À̼ǵÇÁö ¾ÊÀº Çʵ带 ÇÔ²² »ç¿ëÇÏ·Á¸é µ¥ÄÚ·¹ÀÌ¼Ç ³Êºñ·Î ÀÎÇÑ µé¿©¾²±â¸¦ °í·ÁÇØ¾ß ÇÕ´Ï´Ù. µ¥ÄÚ·¹ÀÌ¼Ç ³Êºñ´Â ´ÜÁö À̹ÌÁöÀÇ ³ÊºñÀÔ´Ï´Ù. ±×·¯³ª ´Ù¾çÇÑ ³ÊºñÀÇ µ¥ÄÚ·¹À̼ÇÀ» »ç¿ëÇÏ´Â °æ¿ì »óȲÀÌ º¸´Ù º¹ÀâÇØÁú ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì, FieldDecorationRegistry¿¡¼­ ¸ðµç µ¥ÄÚ·¹À̼ÇÀ» µî·ÏÇÏ¿© ´Ü¼øÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÇÊµå µ¥ÄÚ·¹ÀÌ¼Ç ·¹Áö½ºÆ®¸®

ÇÊµå µ¥ÄÚ·¹ÀÌ¼Ç ·¹Áö½ºÆ®¸®¸¦ »ç¿ëÇÏ¸é ¹®ÀÚ¿­ ID¸¦ »ç¿ëÇÏ¿© ÇÊµå µ¥ÄÚ·¹À̼ÇÀ» µî·ÏÇÏ°í ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì ÀÀ¿ëÇÁ·Î±×·¥ Àüü¿¡¼­ »ç¿ëµÇ´Â µ¥ÄÚ·¹À̼ÇÀ» Æí¸®ÇÏ°Ô ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ Ç÷¯±×Àο¡ µ¥ÄÚ·¹ÀÌ¼Ç ID¸¦ »ç¿ëÇÏ·Á´Â °æ¿ì ÇØ´ç ID¸¦ ³ëÃâÇÏ´Â API¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥ÄÚ·¹À̼ÇÀ» µî·ÏÇÑ´Ù°í ÇØ¼­ À̹ÌÁö ¶óÀÌÇÁ»çÀÌŬÀ» ÇØ´ç µ¥ÄÚ·¹ÀÌ¼Ç ³»ºÎ¿¡¼­ °ü¸®ÇÏ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥À¸·Î ÀÌ·¯ÇÑ À̹ÌÁö °ü¸® ¹æ¹ýÀ» °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, JFace À̹ÌÁö ·¹Áö½ºÆ®¸®¸¦ »ç¿ëÇÏ¿© À̹ÌÁö ¶óÀÌÇÁ»çÀÌŬÀ» µî·ÏÇÏ°í °ü¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶Ç´Â ÀÀ¿ëÇÁ·Î±×·¥À¸·Î ¿äû¿¡ µû¶ó À̹ÌÁö¸¦ ÀÛ¼ºÇÏ°í ´õ ÀÌ»ó ÇÊ¿äÇÏÁö ¾ÊÀ» ¶§ Á¦°ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. FieldDecorationRegistryÀÇ µî·Ï ¸Þ¼Òµå¿¡ ´ëÇÑ javadocÀº µ¥ÄÚ·¹À̼ÇÀ» µî·ÏÇÒ ¶§ À̹ÌÁö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Â ´Ù¾çÇÑ ¹æ½ÄÀ» ¼³¸íÇÕ´Ï´Ù.

ÇÊµå µ¥ÄÚ·¹ÀÌ¼Ç ·¹Áö½ºÆ®¸®¿¡¼­ µ¥ÄÚ·¹À̼ÇÀ» µî·ÏÇÔÀ¸·Î½á ¶ÇÇÑ µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵå¿Í µ¥ÄÚ·¹À̼ǵÇÁö ¾ÊÀº Çʵ带 ÇÔ²² »ç¿ëÇÒ ¶§ ·¹À̾ƿô ÇÁ·Î¼¼½º¸¦ ´Ü¼øÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵå´Â ±âº»ÀûÀ¸·Î ÇÊµå µ¥ÄÚ·¹ÀÌ¼Ç ·¹Áö½ºÆ®¸®¸¦ ÂüÁ¶ÇÏ¿© ÃÖ´ë µ¥ÄÚ·¹ÀÌ¼Ç ³Êºñ¸¦ °áÁ¤ÇÏ¸ç ¸ðµç µ¥ÄÚ·¹À̼ÇÀÌ ÀÌ ³Êºñ¸¦ »ç¿ëÇϵµ·Ï ÇÕ´Ï´Ù. À̴ ƯÁ¤ µ¥ÄÚ·¹À̼ÇÀÇ ³Êºñ¿¡ °ü°è ¾øÀÌ µ¥ÄÚ·¹ÀÌ¼ÇµÈ ¸ðµç Çʵ尡 ¿Ã¹Ù¸£°Ô ¹è¿­µÊÀ» ÀǹÌÇÕ´Ï´Ù. µ¥ÄÚ·¹À̼ǵÇÁö ¾ÊÀº Çʵ带 ¹è¿­ÇÏ·Á¸é FieldDecorationRegistry ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© ÃÖ´ë µ¥ÄÚ·¹ÀÌ¼Ç ³Êºñ¿¡ ¾×¼¼½ºÇϰí ÇÊ¿äÇÑ µé¿©¾²±â¸¦ ÀÛ¼ºÇÏ¸é µË´Ï´Ù.

...
// Create a text field
Text text = new Text(parent, SWT.BORDER);
text.setText("some text");
// Set the layout data
GridData data = new GridData();
data.horizontalAlignment = SWT.FILL;
data.horizontalIndent = FieldDecorationRegistry.getDefault().getMaximumDecorationWidth();
text.setLayoutData(data); 
...

Çʵå Áö¿øÀº µ¥ÄÚ·¹ÀÌ¼Ç »ç¿ë ¹æ¹ýÀ» ³ªÅ¸³»Áö´Â ¾ÊÁö¸¸ ·¹Áö½ºÆ®¸®´Â ¶ÇÇÑ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ÇʵåÀÇ Æ¯Á¤ »óŸ¦ Ç¥½ÃÇϱâ À§ÇØ »ç¿ëÇÒ ¼ö Àִ ǥÁØ µ¥ÄÚ·¹À̼ÇÀ» Á¤ÀÇÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ ½º´ÏÆêÀº Çʼö ÇʵåÀÇ Ç¥ÁØ µ¥ÄÚ·¹À̼ÇÀ» »ç¿ëÇÕ´Ï´Ù.

...
// Create a decorated field with a required field decoration.
DecoratedField field = new DecoratedField(main, SWT.BORDER, new TextControlCreator());
FieldDecoration requiredFieldIndicator = FieldDecorationRegistry.getDefault().
   getFieldDecoration(FieldDecorationRegistry.DEC_REQUIRED);
field.addDecoratedField(requiredFieldIndicator, SWT.BOTTOM | SWT.LEFT, false);
...

ÄÁÅÙÃ÷ Á¦¾È

ÀÀ¿ëÇÁ·Î±×·¥Àº µ¥ÄÚ·¹À̼ÇÀ» »ç¿ëÇÑ ÇÊµå ¾î³ëÅ×ÀÌ¼Ç À̿ܿ¡ Çʵ忡 ´ëÇÑ Á¦¾È ÆË¾÷À» Ȱ¼ºÈ­ÇÏ´Â ÄÁÅÙÃ÷ Á¦¾È Áö¿øÀ» Á¦°øÇÕ´Ï´Ù. ÀÌ µ¿ÀÛÀ» Á¦°øÇÏ·Á¸é ÀÓÀÇÀÇ Á¦¾î¿¡ ContentProposalAdapter¸¦ ¼³Ä¡ÇØ¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ½º´ÏÆêÀº ÅØ½ºÆ® Á¦¾î¿¡ ´ëÇÑ ÄÁÅÙÃ÷ Á¦¾È ¾î´ðÅ͸¦ ¼³Ä¡ÇÕ´Ï´Ù. ÀÌ ÅØ½ºÆ® Á¦¾î´Â ÀÀ¿ëÇÁ·Î±×·¥ÀÌ Á÷Á¢ ÀÛ¼ºÇÑ Á¦¾îÀ̰ųª µ¥ÄÚ·¹ÀÌ¼ÇµÈ Çʵ忡¼­ ¾òÀº Á¦¾îÀÔ´Ï´Ù.

...
autoActivationCharacters = new char[] { '#', '(' };
keyStroke = KeyStroke.getInstance("Ctrl+Space");
// assume that myTextControl has already been created in some way
ContentProposalAdapter adapter = new ContentProposalAdapter(
	myTextControl, new TextContentAdapter(), 
	new SimpleContentProposalProvider(new String [] {"ProposalOne", "ProposalTwo", "ProposalThree"}),
	keyStroke, autoActivationCharacters);

»ç¿ëÀÚ°¡ ÆË¾÷¿¡¼­ Á¦¾ÈÀ» ¼±ÅÃÇÒ ¶§ Á¦¾î ÄÁÅÙÃ÷¸¦ °¡Á®¿À°Å³ª ¼³Á¤ÇÏ·Á¸é ¾î´ðÅÍ¿¡ IControlContentAdapter ÀνºÅϽº¸¦ Á¦°øÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÀνºÅϽº´Â ƯÁ¤ Á¦¾î À¯ÇüÀÇ ÄÁÅÙÃ÷¸¦ °Ë»öÇÏ°í ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÅØ½ºÆ® ÇʵåÀÇ °æ¿ì, TextContentAdapter Ŭ·¡½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ´Ù¸¥ Á¦¾î À¯ÇüÀ¸·Î ÄÁÅÙÃ÷ Á¦¾È ¾î´ðÅ͸¦ »ç¿ëÇϵµ·Ï IControlContentAdapter¸¦ ÀÚÀ¯·Ó°Ô ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÄÁÅÙÃ÷ Á¦¾È ¾î´ðÅ͸¦ ÀÛ¼ºÇÏ´Â °æ¿ì, Á¦¾ÈÀ» °Ë»öÇÒ ¼ö ÀÖ´Â IContentProposalProvider ÀνºÅϽºµµ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ Á¦°øÀÚ´Â ÄÁÅÙÃ÷ Á¦¾È ¹è¿­À» ¸®ÅÏÇÕ´Ï´Ù. ÇØ´ç Á¦¾ÈÀº IContentProposal ÀνºÅϽº·Î ÁöÁ¤µË´Ï´Ù. ÀÌ ÀνºÅϽº¿¡¼­ Á¦¾È ·¹ÀÌºí ¹× ÄÁÅÙÃ÷´Â ¹°·Ð Á¦¾È¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸í°ú °°Àº ±âŸ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

À§ÀÇ ¿¹Á¦¿¡¼­ SimpleContentProposalProvider°¡ »ç¿ëµË´Ï´Ù. ÀÌ Á¦°øÀÚ´Â ¹®ÀÚ¿­ÀÇ ´Ü¼ø ¹è¿­À» ÄÁÅÙÃ÷ Á¦¾ÈÀ¸·Î ÁöÁ¤ÇÏ¿© Á¤ÀÇÇÕ´Ï´Ù. ´Ü¼ø Á¦°øÀÚ´Â °¢ ¹®ÀÚ¿­À» ¿¹»ó IContentProposal·Î ¸ÊÇÎÇÏ´Â µ¥ ÇÊ¿äÇÑ ÇÁ·ÎÅäÄÝÀ» ±¸ÇöÇÕ´Ï´Ù. IContentProposalProviderÀÇ À¯¿¬¼ºÀ¸·Î ÀÎÇØ °í±Þ ±â´É(¿¹: Á¦¾î ÄÁÅÙÃ÷¸¦ ±â¹ÝÀ¸·Î Á¦¾È ÇÊÅ͸µ, »ðÀ﵃ ½ÇÁ¦ ÄÁÅÙÃ÷ ´ë½Å ÆË¾÷¿¡ ¼³¸í ·¹À̺í Á¦°ø ¹× Á¦¾È »ðÀÔ ÈÄ ¿¹»ó Ä¿¼­ À§Ä¡ ÁöÁ¤)À» °®´Â Á¦¾È Á¦°øÀÚ¸¦ ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. °í±Þ »ç¿ë¹ýÀº Çʵå Áö¿ø ¿¹Á¦¸¦ ÂüÁ¶Çϰí IContentProposalProviderÀÇ ±¸ÇöÀÚ¸¦ °Ë»öÇϽʽÿÀ.

ÄÁÅÙÃ÷ Á¦¾È ¾î´ðÅÍ ±¸¼º

ÄÁÅÙÃ÷ Á¦¾È ¾î´ðÅÍ¿¡ ´ëÇÑ ±âº» Á¤ÀÇ¿¡ Á¦¾ÈÀÌ Á¦°øµÇ´Â Á¦¾î, Á¦¾î ÄÁÅÙÃ÷¸¦ º¯°æÇÏ´Â µ¥ »ç¿ëµÇ´Â ÄÁÅÙÃ÷ ¾î´ðÅÍ ¹× ÆË¾÷¿¡ Á¦¾È ¸ñ·ÏÀ» Á¤ÀÇÇÏ´Â Á¦¾È Á¦°øÀÚ°¡ Æ÷ÇÔµÊÀ» ¼³¸íÇß½À´Ï´Ù. ÀÌ·¯ÇÑ ±âº»»çÇ× À̿ܿ¡ ´ÙÀ½°ú °°Àº ´Ù¾çÇÑ ¹æ¹ýÀ¸·Î ÄÁÅÙÃ÷ Á¦¾È ¾î´ðÅ͸¦ ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

Çʵå Áö¿ø ¿¹Á¦¸¦ »ç¿ëÇÏ¸é ¿¹Á¦ ȯ°æ ¼³Á¤¿¡ ÀÌó·³ ´Ù¾çÇÑ ¿É¼ÇÀ» ±¸¼ºÇÏ°í ´Ù¾çÇÑ Á¶ÇÕÀ» ½ÃµµÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ۸¦ ´­·¯ ¾î´ðÅ͸¦ ¸í½ÃÀûÀ¸·Î È£ÃâÇϰí Á¦¾È ÄÁÅÙÃ÷¸¦ Á¦¾î¿¡ »ðÀÔÇϵµ·Ï ¾î´ðÅ͸¦ ±¸¼ºÇÔÀ¸·Î½á ¹®¼­ ÆíÁý±â ÄÁÅÙÃ÷ Áö¿ø°ú À¯»çÇÏ°Ô ÀÛµ¿ÇÕ´Ï´Ù. ¶Ç´Â ¸í½ÃÀûÀΠŰ ´©¸§, ÀÚµ¿ Ȱ¼ºÈ­ ¹®ÀÚ ¹× ÄÁÅÙÃ÷ ¹Ù²Ù±â ¾øÀÌ ±¸¼ºÇÏ¿© À¥ ºê¶ó¿ìÀú URL ¶Ç´Â °Ë»ö Çʵ忡¼­ »ç¿ëµÇ´Â À¯Çü Á᫐ ¿Ï·á ½ºÅ¸Àϰú °°ÀÌ ÀÛµ¿ÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °¢ ¹æ¹ý°ú ¹æ¹ý °£ »óÈ£ °ü°è¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº javadocÀ» ÂüÁ¶ÇϽʽÿÀ.

Workbench Çʵå Áö¿ø

JFace ·¹º§ÀÇ Çʵå Áö¿øÀº Çʵ带 µ¥ÄÚ·¹À̼ÇÇϰí Çʵå ÄÁÅÙÃ÷¿¡ ´ëÇÑ Á¦¾ÈÀ» Ç¥½ÃÇÏ´Â ¹æ¹ýÀ» °áÁ¤ÇÏ´Â µ¥ ÀÖ¾î ÀÀ¿ëÇÁ·Î±×·¥¿¡ ¸¹Àº À¯¿¬¼ºÀ» Á¦°øÇÕ´Ï´Ù. Çʵå Áö¿øÀº µ¶¸³Çü JFace ÀÀ¿ëÇÁ·Î±×·¥ ¶Ç´Â µ¶¸³Çü ¸®Ä¡ Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ëÇÁ·Î±×·¥¿¡ ÀûÇÕÇÕ´Ï´Ù. ±×·¯³ª ÀÀ¿ëÇÁ·Î±×·¥ÀÌ Eclipse SDK ¶Ç´Â ½áµåÆÄƼ Ç÷¯±×Àΰú °°Àº ´Ù¸¥ Ç÷¯±×Àΰú ÅëÇÕÇÏ·Á´Â °æ¿ì, ÀϹÝÀûÀ¸·Î ´Ù¸¥ Ç÷¯±×Àΰú ÀÏÄ¡ÇÏ´Â ¹æ½ÄÀ¸·Î Çʵå Áö¿øÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Workbench´Â ƯÁ¤ »óÈ£ÀÛ¿ë À¯Çü¿¡ ´ëÇÑ Çʵå Áö¿øÀ» »ç¿ëÇÏ´Â À¯Æ¿¸®Æ¼ Ŭ·¡½º¸¦ Á¤ÀÇÇÕ´Ï´Ù.

¿¹¸¦ µé¾î, ContentAssistField Ŭ·¡½º´Â »ç¿ëÀÚ¿¡°Ô ÄÁÅÙÃ÷ Áö¿øÀ» »ç¿ëÇÒ ¼ö ÀÖÀ½À» ¾Ë·ÁÁÖ´Â °£´ÜÇÑ Àü±¸ ¸ð¾ç µ¥ÄÚ·¹À̼ÇÀÌ Æ÷ÇÔµÈ Çʵ带 ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ Å¬·¡½º´Â ¶ÇÇÑ ÄÁÅÙÃ÷ Áö¿ø ½ºÅ¸ÀÏ »ðÀÔÀ» À§ÇÑ ÄÁÅÙÃ÷ Á¦¾È ¾î´ðÅ͸¦ ±¸¼ºÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î, ÀÌ Å¬·¡½º´Â Workbench ·¹º§ ÄÁÅÙÃ÷ Áö¿ø ¸í·É¿¡ ´ëÇÑ Çڵ鷯¸¦ Á¦°øÇÔÀ¸·Î½á »ç¿ëÀÚ°¡ Workbench Ű ¹ÙÀεù¿¡ ÁöÁ¤µÈ Ű ´©¸§ ¶Ç´Â Æ®¸®°Å ½ÃÄö½º¸¦ È£ÃâÇÒ ¶§ ÄÁÅÙÃ÷ Á¦¾È ÆË¾÷ÀÌ ¿­¸³´Ï´Ù. ÀÌ·¯ÇÑ À¯Æ¿¸®Æ¼ Ŭ·¡½º¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº org.eclipse.ui.fieldassist ÆÐŰÁö¸¦ ÂüÁ¶ÇϽʽÿÀ.

ÀÌ ÆÐŰÁö´Â Workbench¿¡¼­ Çʵå Áö¿ø »ç¿ëÀ» È®´ëÇÏ°í Æ¯Á¤ ÇÊµå »óÅ¿¡ ´ëÇÑ µ¥ÄÚ·¹ÀÌ¼Ç »ç¿ëÀ» Ç¥ÁØÈ­ÇÔÀ¸·Î½á Àü°³µË´Ï´Ù.