Ç¥Çö½Ä

¼³¸í: WorkbenchÀÇ ¸¹Àº Á¶Ä¡ È®Àå¿¡ ´ëÇØ °¡½Ã¼º ¹× »ç¿ë °¡´É¼ºÀ» Á¤ÀÇÇϱâ À§ÇØ ºÎ¿ï Ç¥Çö½ÄÀ» »ç¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î Á¶Ä¡ È®Àå¿¡¼­ enablement ¿ä¼Ò¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿ä¼Ò¿¡´Â Á¶Ä¡¿¡ ´ëÇØ Ȱ¼ºÈ­ ±âÁØÀ» Á¤ÀÇÇÏ´Â ºÎ¿ï Ç¥Çö½ÄÀÌ Æ÷ÇԵ˴ϴÙ. ÆË¾÷ ¸Þ´º Á¶Ä¡ È®Àå¿¡ ´ëÇØ visibility ¿ä¼Ò¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿ä¼Ò¿¡´Â Á¶Ä¡¿¡ ´ëÇÑ °¡½Ã¼º ±âÁØÀ» Á¤ÀÇÇÏ´Â ºÎ¿ï Ç¥Çö½ÄÀÌ Æ÷ÇԵ˴ϴÙ.

ºÎ¿ï Ç¥Çö½ÄÀÌ ÀÖ´Â À§Ä¡¿¡ °ü°è ¾øÀÌ Ç¥Çö½Ä ±¸¹®Àº °°Àº Çü½ÄÀ» µû¸¨´Ï´Ù. »ç¿ë °¡´É¼º ¹× °¡½Ã¼º¿¡ ´ëÇÑ ·çÆ® ¿ä¼Ò´Â ÇϳªÀÇ ÇÏÀ§ ¿ä¼Ò¸¦ Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù. °¡Àå °£´ÜÇÑ °æ¿ì¿¡ objectClass, objectState, systemProperty ¶Ç´Â pluginState ¿ä¼Ò·Î ±¸¼ºµË´Ï´Ù. Á» ´õ º¹ÀâÇÑ °æ¿ì¿¡´Â and, or, not ¿ä¼Ò°¡ °áÇÕµÇ¾î ºÎ¿ï Ç¥Çö½ÄÀ» Çü¼ºÇÕ´Ï´Ù. and ¶Ç´Â or ¿ä¼Ò¿¡´Â Çϳª ÀÌ»óÀÇ ÇÏÀ§ ¿ä¼Ò°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù. not ¿ä¼Ò´Â ÇϳªÀÇ ÇÏÀ§ ¿ä¼Ò¸¸À» Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù.

objectClass ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© ¼±ÅûçÇ׿¡ ÀÖ´Â °¢ ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º¸¦ Æò°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. objectClassÀÇ À̸§ ¼Ó¼º¿¡´Â ¿ÏÀüÇÑ Å¬·¡½º À̸§ÀÌ Æ÷ÇԵ˴ϴÙ. ¼±ÅûçÇ׿¡ ÀÖ´Â °¢°¢ÀÇ ¿ÀºêÁ§Æ®°¡ ÀÌ Å¬·¡½º¸¦ ±¸ÇöÇÏ´Â °æ¿ì Ç¥Çö½ÄÀº true·Î Æò°¡µË´Ï´Ù.

objectState ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© ¼±ÅûçÇ׿¡ ÀÖ´Â °¢ ¿ÀºêÁ§Æ®ÀÇ »óŸ¦ Æò°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ëºÎºÐÀÇ °æ¿ì Á¶Ä¡ÀÇ »ç¿ë °¡´É¼º ¶Ç´Â °¡½Ã¼ºÀº ¼±ÅûçÇ× À¯Çü¿¡ µû¶ó °áÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ °æ¿ì¿¡´Â ÀÌ Á¶°Ç¸¸À¸·Î ÃæºÐÇÏÁö ¾ÊÀ¸¸ç »ç¿ë °¡´É¼º ¶Ç´Â °¡½Ã¼ºÀº ¼±ÅûçÇ× »óŸ¦ »ç¿ëÇÏ¿© °áÁ¤µÇ¾î¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î Àбâ Àü¿ëÀÎ IFile À¯ÇüÀÇ ¸ðµç ¿ÀºêÁ§Æ®¿¡ ´ëÇØ Á¶Ä¡¸¦ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Àбâ Àü¿ë ±âÁØÀº objectState ¿ä¼Ò¸¦ ÁöÁ¤Çؼ­¸¸ ¼±¾ðµÉ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°Àº Çü½ÄÀÔ´Ï´Ù.

<objectState name="readOnly" value="true"/>
Workbench¿¡¼­ ¿ÀºêÁ§Æ®ÀÇ ¼Ó¼ºÀº À¯Çü¿¡ µû¶ó ´Ù¸£¸ç Workbench µµ¸ÞÀÎ ¹Û¿¡ ÀÖÀ¸¹Ç·Î ÀÌ Ç¥Çö½ÄÀ» Æò°¡ÇϱⰡ ¸Å¿ì ¾î·Æ½À´Ï´Ù. µû¶ó¼­ Workbench´Â ¼±ÅûçÇ×ÀÇ ¿ÀºêÁ§Æ®¿Í °øµ¿ ÀÛ¾÷ÇÏ¿© Ç¥Çö½ÄÀ» Æò°¡ÇÕ´Ï´Ù. ÀÌ´Â objectState ¿ä¼ÒÀÇ Æò°¡ °èȹÀÎ IActionFilter¸¦ »ç¿ëÇÏ¿© ¼öÇàµË´Ï´Ù. objectState ¿ä¼Ò°¡ Æò°¡µÉ ¶§ Workbench´Â ¼±ÅûçÇ×ÀÇ °¢ ¿ÀºêÁ§Æ®¿¡ IActionFilter¸¦ ¿ä±¸ÇÕ´Ï´Ù. IActionFilter¸¦ ±¸ÇöÇÏ´ÂÁö ¿©ºÎ¸¦ Å×½ºÆ®ÇÏ¿© À̸¦ ¼öÇàÇÕ´Ï´Ù. Å×½ºÆ®¿¡¼­ ½ÇÆÐÇϸé Workbench´Â IAdaptable ¸ÞÄ¿´ÏÁòÀ» ÅëÇØ ÇÊÅ͸¦ ¿ä±¸ÇÕ´Ï´Ù. ÇÊÅ͸¦ ãÀ¸¸é Workbench´Â objectState ¼Ó¼ºÀ» ÇÊÅÍ¿¡ Àü´ÞÇÏ¿© ¼±ÅÃµÈ ¿ÀºêÁ§Æ®ÀÇ »óÅÂ¿Í ÀÏÄ¡ÇÏ´ÂÁö °áÁ¤ÇÕ´Ï´Ù. ÀÏÄ¡ÇÏ´Â °æ¿ì Ç׸ñÀº true·Î Æò°¡µË´Ï´Ù. Á¶Ä¡ ÇÊÅͰ¡ ¾ø°Å³ª ÀÏÄ¡ÇÏ´Â °ªÀÌ ¾ø´Â °æ¿ì Ç׸ñÀº false·Î Æò°¡µË´Ï´Ù.

º¸±â ¹× ÆíÁý±â¿¡¼­´Â ¼±ÅûçÇ×ÀÇ °¢ ¿ÀºêÁ§Æ®¿¡ ´ëÇØ IActionFilter¸¦ Á¤ÀÇÇϵµ·Ï ±ÇÀåµË´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ±âŸ Ç÷¯±×ÀÎ °³¹ßÀÚµéÀÌ ¿Ã¹Ù·Î ±ÔÁ¤µÈ »õ Á¶Ä¡¸¦ »ç¿ëÇÏ¿© º¸±â ¶Ç´Â ÆíÁý±â¸¦ ½±°Ô È®ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù.

systemProperty ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© ÀϺΠ½Ã½ºÅÛ Æ¯¼ºÀÇ »óŸ¦ Æò°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ³»ºÎÀûÀ¸·Î ½Ã½ºÅÛ Æ¯¼º °ªÀº System.getProperty¸¦ È£ÃâÇÏ¿© °áÁ¤µË´Ï´Ù.

pluginState ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© Ç÷¯±×ÀÎÀÇ »óŸ¦ Æò°¡ÇÕ´Ï´Ù. Ç÷¯±×ÀÎÀÇ »óÅ´ installed ¶Ç´Â activatedÀÏ ¼ö ÀÖ½À´Ï´Ù.

µµÀÔ: ¸±¸®½º 2.0

±¸¼º ¸¶Å©¾÷:

   <!ELEMENT visibility (and | or | not | objectClass | objectState | systemProperty
        | pluginState)>

   <!ELEMENT enablement (and | or | not | objectClass | objectState | systemProperty
        | pluginState)>

   <!ELEMENT and (and | or | not | objectClass | objectState | systemProperty | pluginState)*>

   <!ELEMENT or (and | or | not | objectClass | objectState | systemProperty | pluginState)*>

   <!ELEMENT not (and | or | not | objectClass | objectState | systemProperty | pluginState)>

   <!ELEMENT objectClass EMPTY>
   <!ATTLIST objectClass
      name       CDATA #REQUIRED
   >

   <!ELEMENT objectState EMPTY>
   <!ATTLIST objectState
      name       CDATA #REQUIRED
      value      CDATA #REQUIRED
   >    <!ELEMENT systemProperty EMPTY>
   <!ATTLIST systemProperty
      name       CDATA #REQUIRED
      value      CDATA #REQUIRED
   >    <!ELEMENT pluginState EMPTY>
   <!ATTLIST pluginState
      id         CDATA #REQUIRED
      value      (installed | activated)
   >
  • id - Ç÷¯±×ÀÎ ·¹Áö½ºÆ®¸®¿¡ µî·ÏµÇ°Å³ª µî·ÏµÉ ¼ö ¾ø´Â Ç÷¯±×ÀÎÀÇ ID
  • value - Ç÷¯±×ÀÎÀÇ Çʼö »óÅÂ. ÇöÀç µÎ °³ÀÇ »óÅ installed ¹× activated°¡ Áö¿øµË´Ï´Ù.
  • ¿¹:

    ´ÙÀ½Àº »ç¿ë °¡´É¼º ¿ä¼Ò¸¦ »ç¿ëÇÏ´Â Á¶Ä¡ ¼¼Æ®ÀÇ ¿¹Á¦ÀÔ´Ï´Ù. Á¶Ä¡ ¼¼Æ®´Â ¿ä¼Ò ³ª¿­À̶ó°í ·¹À̺íÀÌ ºÙÀº ¸Þ´º¸¦ ¼±¾ðÇÑ ´ÙÀ½ ´Ù¾çÇÑ »óÅÂÀÇ ListElements ¼±ÅûçÇ׿¡ ÀÇÇØ »ç¿ë °¡´ÉÇÏ°Ô µÈ Á¶Ä¡·Î ÀÌ ¸Þ´º¸¦ ä¿ó´Ï´Ù. ListElement¿¡´Â name(¹®ÀÚ¿­) ¹× flag(ºÎ¿ï)ÀÇ µÎ °¡Áö ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â ListElement°¡ ¼±ÅÃµÉ ¶§¸¶´Ù ¸ðµç Á¶Ä¡(A ű×)°¡ »ç¿ë °¡´ÉÇÕ´Ï´Ù. name = redRedÀÎ ListElement°¡ ¼±ÅÃµÇ¸é »¡°£»ö Á¶Ä¡(B ű×)°¡ »ç¿ë °¡´ÉÇÕ´Ï´Ù. name != redÀÎ ListElement°¡ ¼±ÅÃµÇ¸é »¡°£»öÀÌ ¾Æ´Ñ Á¶Ä¡(C ű×)°¡ »ç¿ë °¡´ÉÇÕ´Ï´Ù.

    <extension point = "org.eclipse.ui.actionSets">
        <actionSet id="org.eclipse.ui.tests.internal.ListElementActions"
            label="List Element">
            <menu id="org.eclipse.ui.tests.internal.ListElementMenu"
                label="List Element"
                path="additions">
                <separator name="group1"/>
            </menu>
    A tag     <action id="org.eclipse.ui.tests.internal.ac1"
                label="All"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate"
                enablesFor="1">
                <enablement>
                     <objectClass name="org.eclipse.ui.tests.api.ListElement"/>
                </enablement>
            </action>
    B tag     <action id="org.eclipse.ui.tests.internal.ac2"
                label="Red"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate"
                enablesFor="1">
                <enablement>
                 <and>
                  <objectClass name="org.eclipse.ui.tests.api.ListElement"/>
                  <objectState name="name" value="red"/>
                 </and>
                </enablement>
            </action>
    C tag     <action id="org.eclipse.ui.tests.internal.ac3"
                label="Not Red"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate"
                enablesFor="1">
                <enablement>
                 <and>
                  <objectClass name="org.eclipse.ui.tests.api.ListElement"/>
                   <not>
                   <objectState name="name" value="red"/>
                  </not>
              </and>
                </enablement>
            </action>
        </actionSet>
    </extension>
    ´ÙÀ½ ¿¹Á¦¿¡¼­´Â pluginState ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© Á¶Ä¡ ¼¼Æ®¿¡¼­ Á¶Ä¡ÀÇ »ç¿ë °¡´É¼ºÀ» Á¦¾îÇÕ´Ï´Ù. ¼³Ä¡µÈ Á¶Ä¡(A ű×)´Â x.y.z.myPlugin°ú ÇÔ²² Ç÷¯±×ÀÎÀÌ ¼³Ä¡µÈ °æ¿ì »ç¿ë ÇÒ ¼ö ÀÖ½À´Ï´Ù. °°Àº Ç÷¯±×ÀÎÀÌ È°¼ºÈ­µÈ °æ¿ì Ȱ¼ºÈ­ Á¶Ä¡(B ű×)¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
    <extension point = "org.eclipse.ui.actionSets">
        <actionSet id="org.eclipse.ui.tests.internal.ListElementActions"
            label="List Element">
            <menu id="org.eclipse.ui.tests.internal.ListElementMenu"
                label="List Element"
                path="additions">
                <separator name="group1"/>
            </menu>
    A tag     <action id="org.eclipse.ui.tests.internal.ac8"
                label="Installed"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate">
                <enablement>
                 <pluginState id="x.y.z.myPlugin" value="installed"/>
                </enablement>
            </action>
    B tag     <action id="org.eclipse.ui.tests.internal.ac10"
                label="Activated"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate">
                <enablement>
                 <pluginState id="x.y.z.myPlugin" value="activated"/>
                </enablement>
            </action>
        </actionSet>
    </extension>
    ´ÙÀ½ ¿¹Á¦¿¡¼­´Â systemProperty ¿ä¼Ò¸¦ º¸¿©ÁÝ´Ï´Ù. ActionExpressionVar ½Ã½ºÅÛ Æ¯¼ºÀÌ "bubba"ÀÎ °æ¿ì ½Ã½ºÅÛ Æ¯¼º Á¶Ä¡(A ű×)°¡ »ç¿ë °¡´ÉÇÕ´Ï´Ù.
    <extension point = "org.eclipse.ui.actionSets">
        <actionSet id="org.eclipse.ui.tests.internal.ListElementActions"
            label="List Element">
            <menu id="org.eclipse.ui.tests.internal.ListElementMenu"
                label="List Element"
                path="additions">
                <separator name="group1"/>
            </menu>
    A tag     <action id="org.eclipse.ui.tests.internal.ac11"
                label="System Property"
                menubarPath="org.eclipse.ui.tests.internal.ListElementMenu/group1"
                class="org.eclipse.ui.tests.api.MockActionDelegate">
                <enablement>
                 <systemProperty name="ActionExpressionVar" value="bubba"/>
                </enablement>
            </action>
        </actionSet>
    </extension>
    ´ÙÀ½ ¸¶Áö¸· ¿¹Á¦¿¡¼­´Â ÆË¾÷ ¸Þ´º Á¶Ä¡ È®Àå¿¡ ´ëÇÑ °¡½Ã¼º ¼±¾ðÀ» º¸¿©ÁÝ´Ï´Ù. Red ¹× True Á¶Ä¡´Â name = redÀ̰í flag = trueÀ¸·Î ListElement°¡ ¼±ÅÃµÉ ¶§¸¶´Ù ³ªÅ¸³³´Ï´Ù.
    <extension point="org.eclipse.ui.popupMenus">
        <objectContribution id="oc6"
          objectClass="org.eclipse.ui.tests.api.ListElement">
          <visibility>
             <and>
                 <objectState name="name" value="red"/>
                 <objectState name="flag" value="true"/>
             </and>
          </visibility>
          <action id="oc4" label="Red And True"
               class="org.eclipse.ui.tests.api.MockActionDelegate"/>
        </objectContribution>
    </extension>


    ±âº» Á¦°ø ±¸Çö: ÆíÀǸ¦ À§ÇØ Á¶Ä¡ ÇÊÅͰ¡ ¸¶Ä¿, ÀÚ¿ø ¹× ÇÁ·ÎÁ§Æ®¿¡ ´ëÇØ Á¤ÀǵǾú½À´Ï´Ù. °¢°¢¿¡ ´ëÇÑ À̸§-°ª ½ÖÀÌ IMarkerActionFilter, IResourceActionFilter ¹× IProjectActionFilter¿¡¼­ ¼±¾ðµË´Ï´Ù.

    Copyright IBM Corporation and others 2000, 2002.