ÆË¾÷ ¸Þ´º

ID: org.eclipse.ui.popupMenus

¼³¸í: ÀÌ È®ÀåÁ¡Àº ´Ù¸¥ Ç÷¯±×ÀÎ ¼ÒÀ¯ÀÇ ÆË¾÷ ¸Þ´º¿¡ Á¶Ä¡¸¦ »õ·Î Ãß°¡ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. Á¶Ä¡ Áö½Ã¹®Àº ƯÁ¤ ¿ÀºêÁ§Æ® À¯Çü(objectContribution) ¶Ç´Â ƯÁ¤ ÆË¾÷ ¸Þ´º¿¡ ´ëÇØ ÀÛ¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. ¿ÀºêÁ§Æ® À¯Çü¿¡ ´ëÇØ µî·ÏµÈ °æ¿ì¿¡´Â ÁöÁ¤µÈ À¯ÇüÀÇ ¿ÀºêÁ§Æ®°¡ ¼±ÅÃµÈ ¸ðµç Ç¥½Ã±â¿¡ Áö½Ã¹®ÀÌ ³ªÅ¸³³´Ï´Ù. ¹Ý¸é, ÆË¾÷ ¸Þ´º¿¡ ´ëÇÑ µî·ÏÀº ¼±ÅûçÇ׿¡ »ó°ü ¾øÀÌ ÁöÁ¤µÈ ¸Þ´º¿¡¸¸ ³ªÅ¸³³´Ï´Ù.

¼±ÅûçÇ×ÀÌ À̱âÁ¾À̸é Áö½Ã¹®Àº ¼±ÅûçÇ×ÀÇ °øÅë À¯Çü¿¡ ´ëÇØ µî·ÏµÈ °æ¿ì¿¡ Àû¿ëµË´Ï´Ù. Á÷Á¢ ÀÏÄ¡°¡ °¡´ÉÇÏÁö ¾ÊÀ¸¸é ¼öÆÛŬ·¡½º ¹× ¼öÆÛÀÎÅÍÆäÀ̽º¿¡ ´ëÇØ ÀÏÄ¡ÇÏ´Â Ç׸ñÀ» ã½À´Ï´Ù.

À̸§ ÇÊÅ͸¦ »ç¿ëÇÏ¿© ¼±ÅûçÇ×À» ´õ Á¦ÇÑÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸§ ÇÊÅ͸¦ »ç¿ëÇÏ´Â °æ¿ì ¼±ÅûçÇ×ÀÇ ¸ðµç ¿ÀºêÁ§Æ®°¡ ÇØ´ç ÇÊÅÍ¿Í ÀÏÄ¡ÇØ¾ß¸¸ Áö½Ã¹®À» Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿ÀºêÁ§Æ® Áö½Ã¹®ÀÇ °³º° Á¶Ä¡´Â enablesFor ¼Ó¼ºÀ» »ç¿ëÇÏ¿© ÇØ´ç Á¶Ä¡°¡ ´ÜÀÏ, ´ÙÁß ¶Ç´Â ±âŸ ¼±ÅûçÇ× À¯Çü Áß ¾î´À À¯Çü¿¡ ´ëÇØ¼­¸¸ Àû¿ëµÇ¾î¾ß ÇÏ´ÂÁö¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ·¯ÇÑ ÇÊÅ͸µ ¸ÞÄ¿´ÏÁòÀÌ Àû´çÇÏÁö ¾ÊÀ¸¸é Á¶Ä¡ Áö½Ã¹®¿¡¼­´Â filter ¸ÞÄ¿´ÏÁòÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì ´ë»ó ¿ÀºêÁ§Æ®ÀÇ ¼Ó¼ºÀº ÀÏ·ÃÀÇ Å°/°ª ½Ö¿¡ ¼³¸íµË´Ï´Ù. ¼±ÅûçÇ׿¡ Àû¿ëµÇ´Â ¼Ó¼ºÀº ƯÁ¤ À¯Çü°ú °ü·ÃµÇ¸ç Workbench ÀÚüÀÇ µµ¸ÞÀÎ ¹üÀ§¸¦ ³Ñ¾î¼­¹Ç·Î ÀÌ ·¹º§ÀÇ ÇÊÅ͸µ¿¡¼­´Â ½ÇÁ¦ ¼±ÅûçÇ×ÀÌ Workbench¸¦ ´ëÇ¥ÇÕ´Ï´Ù.

±¸¼º ¸¶Å©¾÷:

   <!ELEMENT objectContribution (filter | menu | action)*>
   <!ATTLIST objectContribution
      id          CDATA #REQUIRED
      objectClass CDATA #REQUIRED
      nameFilter  CDATA #IMPLIED
   >

   <!ELEMENT viewerContribution (menu | action)*>
   <!ATTLIST viewerContribution
      id        CDATA #REQUIRED
      targetID  CDATA #REQUIRED
   >    <!ELEMENT filter EMPTY>
   <!ATTLIST filter
      name       CDATA #REQUIRED
      value      CDATA #REQUIRED
   >    <!ELEMENT menu (separator)+>
   <!ATTLIST menu
      id         CDATA #REQUIRED
      label      CDATA #REQUIRED
      path       CDATA #IMPLIED
   >    <!ELEMENT separator EMPTY>
   <!ATTLIST separator
      name       CDATA #REQUIRED
   >
  • name - ³ªÁß¿¡ Á¶Ä¡ °æ·ÎÀÇ ¸¶Áö¸· ÅäÅ«À¸·Î ÂüÁ¶µÉ ¼ö ÀÖ´Â ºÐ¸®ÀÚÀÇ À̸§. ±×·¯¹Ç·Î ºÐ¸®ÀÚ´Â Á¶Ä¡¸¦ Ãß°¡ÇÒ ¼ö ÀÖ´Â À̸§ ÁöÁ¤µÈ ±×·ì ¿ªÇÒÀ» ÇÕ´Ï´Ù.
  •    <!ELEMENT action EMPTY>
       <!ATTLIST action
          id                NMTOKEN #REQUIRED
          label             CDATA #REQUIRED
          menubarPath       CDATA #IMPLIED
          icon              CDATA #IMPLIED
          helpContextId     CDATA #IMPLIED
          state             (true | false) #IMPLIED
          class             CDATA #REQUIRED
          enablesFor        CDATA #IMPLIED
       > Á¶Ä¡ È®ÀåÀÚ¿¡ ´ëÇÑ »ç¿ë °¡´É ±âÁØÀº ¸Ç óÀ½ enablesFor¿Í selection¿¡ ÀÇÇØ Á¤Àǵ˴ϴÙ.  ±×·¯³ª Á¶Ä¡ À§ÀÓÀÌ ÀνºÅϽºÈ­µÇ¸é selectionChanged ¸Þ¼Òµå ³»¿¡¼­ Á÷Á¢ Á¶Ä¡ »ç¿ë »óŸ¦ Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.

    Á¶Ä¡¿Í ¸Þ´º ·¹ÀÌºí¿¡´Â ´ÙÀ½ ±ÔÄ¢À» »ç¿ëÇÏ¿© ´Ï¸ð´Ð°ú ´ÜÃà۸¦ ÀÎÄÚµåÇϴ Ư¼ö ¹®ÀÚ°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.

    1. º¯È¯µÈ ÅØ½ºÆ®ÀÇ ¼±Åà ¹®ÀÚ ¾Õ¿¡ ¾ÚÆÛ»÷µå('&') ¹®ÀÚ¸¦ »ç¿ëÇÏ¿© ´Ï¸ð´ÐÀ» ÁöÁ¤ÇÕ´Ï´Ù. XML ¹®ÀÚ¿­¿¡´Â ¾ÚÆÛ»÷µå¸¦ »ç¿ëÇÒ ¼ö ¾øÀ¸¹Ç·Î &amp; ¹®ÀÚ ¿£Æ¼Æ¼¸¦ »ç¿ëÇϽʽÿÀ.
    2. ¼±ÅÃÀû ´ÜÃàŰ´Â À̸§ ¹®ÀÚ¿­ÀÇ ³¡¿¡¼­ '@' ´ÙÀ½¿¡ ÀÏ·ÃÀÇ ¼öÁ¤ÀÚ¿Í ¸¶Áö¸·¿¡ ´ÜÃàŰ ¹®ÀÚ¸¦ »ç¿ëÇÏ¿© ÁöÁ¤µË´Ï´Ù(¿¹: &amp;Save@Ctrl+S). ¼öÁ¤ÀÚ°¡ µÑ ÀÌ»ó ÀÖ´Â ´ÜÃàŰ´Â '+' ºÎÈ£¸¦ ºÐ¸®¹®ÀÚ·Î »ç¿ëÇÏ¿© ¼öÁ¤ÀÚ¸¦ üÀÎÈ­ÇÔÀ¸·Î½á ¸¸µì´Ï´Ù(¿¹: @Ctrl+Shift+S).
    ¿¹:

    ´ÙÀ½Àº ÆË¾÷ ¸Þ´º È®ÀåÁ¡ÀÇ ¿¹ÀÔ´Ï´Ù.

       <extension point="org.eclipse.ui.popupMenus">
          <objectContribution
             id="com.xyz.C1"
             objectClass="org.eclipse.core.resources.IFile"
             nameFilter="*.java">
             <menu id="com.xyz.xyzMenu"
                   path="additions"
                   label="&amp;XYZ Java Tools">
                <separator name="group1"/>
             </menu>
             <action id="com.xyz.runXYZ"
                  label="&amp;Run XYZ Tool"
                  menubarPath="com.xyz.xyzMenu/group1"
                  icon="icons/runXYZ.gif"
                  helpContextId="com.xyz.run_action_context"
                  class="com.xyz.actions.XYZToolActionDelegate"
                  enablesFor="1">
              </action>
            </objectContribution>
            <viewerContribution
               id="com.xyz.C2"
               targetID="org.eclipse.ui.views.TaskList">
               <action id="com.xyz.showXYZ"
                       label="&amp;Show XYZ"
                       menubarPath="additions"
                       icon="icons/showXYZ.gif"
                       helpContextId="com.xyz.show_action_context"
                       class="com.xyz.actions.XYZShowActionDelegate">
               </action>
            </viewerContribution>
         </extension>

    À§ÀÇ ¿¹¿¡¼­ ÁöÁ¤µÈ Á¶Ä¡´Â ´ÜÀÏ ¼±ÅûçÇ×(enablesFor ¼Ó¼º)¿¡ ´ëÇØ¼­¸¸ Ȱ¼ºÈ­µË´Ï´Ù. ¶ÇÇÑ ¼±ÅûçÇ×ÀÇ °¢ ¿ÀºêÁ§Æ®´Â ÁöÁ¤µÈ ÀÎÅÍÆäÀ̽º(IFile)¸¦ ±¸ÇöÇØ¾ß Çϸç Java ÆÄÀÏÀ̾î¾ß ÇÕ´Ï´Ù. ÀÌ Á¶Ä¡´Â ÀÌÀü¿¡ ÀÛ¼ºµÈ ¼­ºê¸Þ´º¿¡ Ãß°¡µË´Ï´Ù. ÀÌ Áö½Ã¹®Àº Çʼö ¼±ÅûçÇ×ÀÌ ÀÖ´Â ¸ðµç º¸±â¿¡ Àû¿ëµË´Ï´Ù.

    ¹Ý¸é, À§ÀÇ Ç¥½Ã±â Áö½Ã¹®Àº Ÿ½ºÅ© º¸±â¿¡¼­¸¸ ³ªÅ¸³ª¸ç º¸±âÀÇ ¼±ÅûçÇ׿¡ ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù.

    ´ÙÀ½Àº ÇÊÅÍ ¸ÞÄ¿´ÏÁòÀÇ ¿¹ÀÔ´Ï´Ù. ÀÌ °æ¿ì Á¶Ä¡´Â ¿ì¼±¼øÀ§°¡ ³ô°í ¿Ï·áµÈ IMarkers¿¡ ´ëÇØ¼­¸¸ ³ªÅ¸³³´Ï´Ù.

       <extension point="org.eclipse.ui.popupMenus">
          <objectContribution
             id="com.xyz.C1"
             objectClass="org.eclipse.core.resources.IMarker">
             <filter name="done" value="true"/>
             <filter name="priority" value="2"/>
             <action id="com.xyz.runXYZ"
                  label="High Priority Completed Action Tool"
                  icon="icons/runXYZ.gif"
                  class="com.xyz.actions.MarkerActionDelegate">
              </action>
            </objectContribution>
         </extension>

    API Á¤º¸:  Á¶Ä¡ ¼Ó¼º classÀÇ °ªÀº org.eclipse.ui.IObjectActionDelegate(¿ÀºêÁ§Æ® Áö½Ã¹®ÀÇ °æ¿ì), org.eclipse.ui.IViewActionDelegate(º¸±â¿¡ ¼ÓÇϴ ǥ½Ã±â¿¡ ´ëÇÑ Áö½Ã¹®ÀÇ °æ¿ì), ¶Ç´Â org.eclipse.ui.IEditorActionDelegate(ÆíÁý±â¿¡ ¼ÓÇϴ ǥ½Ã±â¿¡ ´ëÇÑ Áö½Ã¹®ÀÇ °æ¿ì)¸¦ ±¸ÇöÇÏ´Â Java Ŭ·¡½ºÀÇ ¿ÏÀüÇÑ Å¬·¡½º À̸§À̾î¾ß ÇÕ´Ï´Ù. ÀÌ ¼¼ °æ¿ì ¸ðµÎ, ±¸ÇöÇϴ Ŭ·¡½º´Â ²À ÇÊ¿äÇϱâ Àü¿¡ Àüü Ç÷¯±×ÀÎÀÌ ·ÎµåµÇÁö ¾Êµµ·Ï °¡´ÉÇÑ ÇÑ ´Ê°Ô ·ÎµåµË´Ï´Ù.

    Âü°í: ÀÌÀü ¹öÀü°úÀÇ È£È¯¼ºÀ» À§ÇØ org.eclipse.ui.IActionDelegate°¡ ¿ÀºêÁ§Æ® Áö½Ã¹®¿¡ ´ëÇØ ±¸ÇöµÉ ¼ö ÀÖ½À´Ï´Ù.

    ÆÄÆ® ³»ÀÇ ÆË¾÷ ¸Þ´º È®ÀåÀÚ´Â ´ë»ó ÆÄÆ®°¡ È®ÀåÀ» À§ÇØ ¸Þ´º¸¦ °ø°³ÇÒ ¶§¸¸ °¡´ÉÇÕ´Ï´Ù. ÀÌ´Â Á¦Ç°ÀÇ È®À强À» Çâ»ó½ÃŰ¹Ç·Î ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. ÀÌ ÀÛ¾÷À» ¼öÇàÇÏ·Á¸é °¢ ÆÄÆ®´Â IWorkbenchPartSite#registerContextMenu¸¦ È£ÃâÇÏ¿© Á¤ÀÇµÈ ¸ðµç ÆË¾÷ ¸Þ´º¸¦ °ø°³ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÀÛ¾÷À» ¼öÇàÇÑ ´ÙÀ½¿¡´Â Workbench¿¡¼­ ±âÁ¸ÀÇ ¸ðµç Á¶Ä¡ È®ÀåÀÚ¸¦ ÀÚµ¿À¸·Î »ðÀÔÇÕ´Ï´Ù.

    ¸Þ´º ID´Â µî·ÏµÈ °¢ ¸Þ´º¿¡ ´ëÇØ Á¦°øµÇ¾î¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ ÆÄÆ® »çÀÌÀÇ Àϰü¼ºÀ» À§ÇØ ¸ðµç ÆÄÆ® ±¸ÇöÀÚ°¡ ´ÙÀ½ °èȹÀ» äÅÃÇØ¾ß ÇÕ´Ï´Ù.

    Workbench¿¡ µî·ÏµÈ ¸ðµç ÆË¾÷ ¸Þ´º¿¡´Â ID°¡ IWorkbenchActionConstants.MB_ADDITIONSÀΠǥÁØ »ðÀÔÁ¡ÀÌ Æ÷ÇԵǾî ÀÖ¾î¾ß ÇÕ´Ï´Ù. ´Ù¸¥ Ç÷¯±×Àο¡¼­´Â ÀÌ °ªÀ» »ðÀÔÀ» À§ÇÑ ÂüÁ¶ À§Ä¡·Î »ç¿ëÇÕ´Ï´Ù. »ðÀÔ¿¡ Àû´çÇÑ À§Ä¡¿¡¼­ GroupMarker¸¦ ¸Þ´º¿¡ Ãß°¡ÇÏ¸é »ðÀÔÁ¡À» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

    ÄÁÅØ½ºÆ® ¸Þ´ºÀÇ ¼±ÅûçÇ×ÀÎ WorkbenchÀÇ ¿ÀºêÁ§Æ®´Â org.eclipse.ui.IActionFilter¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â À¯Çü ƯÁ¤ ÇÊÅ͸µÀ» ¼öÇàÇÒ ¼ö ÀÖ´Â ÇÊÅ͸µ °èȹÀÔ´Ï´Ù. Workbench¿¡¼­´Â IActionFilterÀÇ ±¸Çö ¿©ºÎ¸¦ È®ÀÎÇÏ¿© ¼±ÅûçÇ׿¡ ´ëÇÑ ÇÊÅ͸¦ °Ë»öÇÕ´Ï´Ù. ¿©±â¿¡ ½ÇÆÐÇϸé Workbench¿¡¼­´Â IAdaptable ¸ÞÄ¿´ÏÁòÀ» ÅëÇØ ÇÊÅ͸¦ ¿äûÇÕ´Ï´Ù.

    ±âº» Á¦°ø ±¸Çö: Workbench º¸±â¿¡´Â ¿©·¯ °³ÀÇ Á¶Ä¡¿Í ÇÔ²² ÀÌ¹Ì ·ÎµåµÈ Áßø ÆË¾÷ ¸Þ´º°¡ ÀÖ½À´Ï´Ù. Ç÷¯±×ÀÎÀº ÀÌ·¯ÇÑ ¸Þ´º¿¡ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. Ç¥½Ã±â¿¡ ÀÌ·¯ÇÑ Áö½Ã¹®À» À§ÇØ ¿¹¾àµÈ ½½·ÔÀÌ ÀÖ°í ÇØ´ç ½½·ÔÀÌ °ø¿ëÀ¸·Î ¸¸µé¾îÁø °æ¿ì¿¡´Â ½½·Ô À̸§À» °æ·Î·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì¿¡´Â Á¶Ä¡ ¹× ¼­ºê¸Þ´º°¡ ÆË¾÷ ¸Þ´ºÀÇ ³¡¿¡ Ãß°¡µË´Ï´Ù.

    Copyright IBM Corp. 2000, 2001.  All Rights Reserved.