ÀÀ¿ëÇÁ·Î±×·¥ ´ëÈ­ »óÀÚ

Ç¥ÁØ ´ëÈ­ »óÀÚ°¡ Ç÷¯±×Àο¡ ºñÇØ ³Ê¹« ´Ü¼øÇÑ °æ¿ì Dialog Ŭ·¡½º¸¦ »ç¿ëÇÏ¿© °íÀ¯ ´ëÈ­ »óÀÚ¸¦ ºôµåÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾Õ¼­ Readme µµ±¸°¡ Á¶Ä¡ ¼¼Æ®¿¡¼­ "Readme ºê¶ó¿ìÀú ¿­±â" Á¶Ä¡¸¦ Á¦°øÇÏ´Â ¹æ¹ýÀ» »ìÆì º¸¾Ò½À´Ï´Ù.  ÀÌ Á¶Ä¡ ¼¼Æ®´Â Workbench µµ±¸ ¸ðÀ½°ú â->Readme ÆÄÀÏ ÆíÁý±â ¸Þ´º¿¡ Ç¥½ÃµË´Ï´Ù.  

ÀÌÁ¦ Readme µµ±¸ÀÇ WindowActionDelegate¿¡¼­ ÀÌ Á¶Ä¡ ±¸ÇöÀ» »ìÆìº¼ Áغñ°¡ µÇ¾ú½À´Ï´Ù.

public void run(IAction action) {
      SectionsDialog dialog = new SectionsDialog(window.getShell(),
         ReadmeModelFactory.getInstance().getSections(selection));
      dialog.open();
   }

Á¶Ä¡ ¼¼Æ®¿¡ ´ëÇÑ Ã¢ Á¶Ä¡ À§ÀÓÀº ÀÚ¿ø ³×ºñ°ÔÀÌÅÍ º¸±â¿¡¼­ ÇöÀç ¼±ÅûçÇ×(.readme ÆÄÀÏ)À» »ç¿ëÇÏ¿© Readme ÆÄÀÏÀÇ ¼½¼Ç ¸ñ·ÏÀ» °¡Á®¿É´Ï´Ù. ÀÌ ¸ñ·Ï°ú Workbench âÀÇ ½©ÀÌ SectionsDialog·Î Àü´ÞµË´Ï´Ù. 

»ç¿ëÀÚ°¡ Á¶Ä¡¸¦ ¼±ÅÃÇϸé SectionsDialog°¡ ¿­¸³´Ï´Ù.

SectionsDialog´Â Dialog Ŭ·¡½º¸¦ org.eclipse.jface.dialogs ÆÐŰÁö·Î ¼­ºêŬ·¡½ºÈ­ÇÏ¿© Readme µµ±¸ Ç÷¯±×Àο¡¼­ ±¸ÇöµË´Ï´Ù.

Dialog Ŭ·¡½º´Â ´ëÈ­ »óÀÚ ½© âÀ» ºôµåÇÏ°í °øÅë ´ëÈ­ »óÀÚ ´ÜÃ߸¦ ÀÛ¼ºÇÏ°í ´ëÈ­ »óÀÚ¸¦ ½ÇÇàÇϱâ À§ÇÑ ±âº» Áö¿øÀ» Á¦°øÇÕ´Ï´Ù. ¼­ºêŬ·¡½º´Â ´ëÈ­ »óÀÚ ÀÚüÀÇ ÄÁÅÙÃ÷ 󸮸¦ ´ã´çÇÕ´Ï´Ù.

SectionsDialog´Â okButtonPressed ¸Þ¼Òµå¸¦ ±¸ÇöÇÏÁö ¾Ê°í Dialog¿¡¼­ "do-nothing" ±¸ÇöÀ» »ó¼ÓÇÕ´Ï´Ù. À̰ÍÀÌ ÀϹÝÀûÀÎ ÀÛµ¿Àº ¾Æ´Õ´Ï´Ù. ÀϹÝÀûÀ¸·Î ´ëÈ­ »óÀÚ´Â ´ëÈ­ »óÀÚÀÇ ´ÜÃß Áß Çϳª¸¦ ´©¸¦ ¶§ ÀÌ¿¡ ÀÀ´äÇÏ¿© ¸î °¡Áö 󸮸¦ ¼öÇàÇÕ´Ï´Ù.

Çʿ信 µû¶ó ´ëÈ­ »óÀÚ¸¦ °£´ÜÇÏ°Ô ¶Ç´Â º¹ÀâÇÏ°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ´ëÈ­ »óÀÚ¸¦ ±¸ÇöÇÒ ¶§ ´ëºÎºÐÀÇ ´ëÈ­ »óÀÚ ÄÚµå´Â ÄÁÅÙÃ÷ ¿µ¿ªÀ» Ç¥½ÃÇÏ´Â SWT Á¦¾î¸¦ ÀÛ¼ºÇÏ°í ´ëÈ­ »óÀÚ°¡ °¡µ¿µÇ´Â µ¿¾È ÇÊ¿äÇÑ À̺¥Æ®¸¦ ó¸®ÇÏ°Ô µË´Ï´Ù. »ç¿ëÀÚ°¡ ´ÜÃ߸¦ ´©¸£¸é ´ëÈ­ »óÀÚ´Â ´ëÈ­ »óÀÚ¸¦ ±¸¼ºÇÏ´Â ¿©·¯ Á¦¾î(¶Ç´Â Ç¥½Ã±â) »óŸ¦ Á¶È¸ÇÏ¿© ´ëÈ­ »óÀÚÀÇ ÀÛµ¿À» °áÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÆË¾÷ ´ëÈ­ »óÀÚ

´ëÈ­ »óÀÚ¿¡ ƯÁ¤ Á¤º¸¸¦ Ç¥½ÃÇÒ ¶§ ÀÏ¹Ý ´ëÈ­ »óÀÚ¸¦ ½ÇÇàÇÏ´Â °Íº¸´Ù "°¡º­¿î" ¹æ½ÄÀ¸·Î ³ªÅ¸³»·Á ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, »ç¿ëÀÚ ÀÛ¾÷¿¡ °è¼Ó ÁýÁßÇϸ鼭 ´ëÈ­ »óÀÚ¿¡¼­ ½±°Ô Á¾·áÇÒ ¼ö ÀÖ´Â Àӽà Á¤º¸¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì, PopupDialog Ŭ·¡½º¸¦ »ç¿ëÇÏ¿© ´ëÈ­ »óÀÚ¸¦ ±¸ÇöÇÒ ¼ö ÀÖ½À´Ï´Ù. PopupDialogÀÇ ·è¾ØÇÊÀº ÀÏ¹Ý Dialog¿Í ¿©·¯ °¡Áö ¸é¿¡¼­ ´Ù¸¨´Ï´Ù. ÀüÀÚÀÇ °æ¿ì ¸Ç ¾Æ·¡¿¡ ´ÜÃß°¡ ¾ø°í Ç¥ÁØ Ã¢ Á¦¸ñ Ç¥½ÃÁÙÀÌ ¾øÀ¸¸ç ÇØ´ç °æ°è, °£°Ý ¹× ±Û²ÃÀÌ ´õ ÀÛ½À´Ï´Ù.

PopupDialog´Â ÀÏ¹Ý ´ëÈ­ »óÀÚ¿Í ¸Å¿ì ´Ù¸£°Ô º¸ÀÌÁö¸¸ ´ëÈ­ »óÀÚ ÄÁÅÙÃ÷¸¦ Á¤ÀÇÇÏ´Â Ç÷¯±×ÀÎ ¼­ºêŬ·¡½ºÀÇ ÄÚµå´Â °ÅÀÇ °°½À´Ï´Ù. ¶ÇÇÑ createDialogArea ¸Þ¼Òµå¸¦ ±¸ÇöÇÏ¿© ´ëÈ­ »óÀÚÀÇ SWT Á¦¾î¸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµåÀÇ ÁÖµÈ Â÷ÀÌÁ¡Àº ´ëÈ­ »óÀÚ¸¦ ÀÛ¼ºÇÏ´Â »ý¼ºÀÚ°¡ ÀÏ¹Ý Dialog Ŭ·¡½ºº¸´Ù ¸¹Àº ¸Å°³º¯¼ö¸¦ °®´Â´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½°ú °°ÀÌ ´ëÈ­ »óÀÚÀÇ ¼öÆÛŬ·¡½º¸¦ º¯°æÇÏ°í »ý¼ºÀÚ¿¡¼­ ´ëÈ­ »óÀÚ¸¦ ±¸¼ºÇÏ¿© SectionsDialog¸¦ PopupDialog·Î ÀüȯÇÒ ¼ö ÀÖ½À´Ï´Ù.

   public class SectionsDialog extends PopupDialog {
      protected IAdaptable input;

      /**
      * Creates a new SectionsDialog.
      */
      public SectionsDialog(Shell parentShell, IAdaptable input) {
        super(parentShell, SWT.DEFAULT, false, // do not take focus when opened
        	false, // do not persist the bounds
        	false, // do not show a resize menu
        	false, // do not show a menu item for persisting bounds
        	null, //  no title
        	null); // no info text
        this.input = input;
      }
      ...