ºÎ¿ï Ç¥Çö½ÄÀÌ ÀÖ´Â À§Ä¡¿¡ °ü°è ¾øÀÌ Ç¥Çö½Ä ±¸¹®Àº °°Àº Çü½ÄÀ» µû¸¨´Ï´Ù. »ç¿ë °¡´É¼º ¹× °¡½Ã¼º¿¡ ´ëÇÑ ·çÆ® ¿ä¼Ò´Â ÇϳªÀÇ ÇÏÀ§ ¿ä¼Ò¸¦ Æ÷ÇÔÇØ¾ß ÇÕ´Ï´Ù. °¡Àå °£´ÜÇÑ °æ¿ì¿¡ 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
>
¿¹:id - Ç÷¯±×ÀÎ ·¹Áö½ºÆ®¸®¿¡ µî·ÏµÇ°Å³ª µî·ÏµÉ ¼ö ¾ø´Â Ç÷¯±×ÀÎÀÇ ID value - Ç÷¯±×ÀÎÀÇ Çʼö »óÅÂ. ÇöÀç µÎ °³ÀÇ »óÅ installed ¹× activated°¡ Áö¿øµË´Ï´Ù.
´ÙÀ½Àº »ç¿ë °¡´É¼º ¿ä¼Ò¸¦ »ç¿ëÇÏ´Â Á¶Ä¡ ¼¼Æ®ÀÇ ¿¹Á¦ÀÔ´Ï´Ù.
Á¶Ä¡ ¼¼Æ®´Â ¿ä¼Ò ³ª¿À̶ó°í ·¹À̺íÀÌ ºÙÀº ¸Þ´º¸¦ ¼±¾ðÇÑ ´ÙÀ½ ´Ù¾çÇÑ »óÅÂÀÇ
ListElements ¼±ÅûçÇ׿¡ ÀÇÇØ »ç¿ë °¡´ÉÇÏ°Ô µÈ Á¶Ä¡·Î ÀÌ ¸Þ´º¸¦
ä¿ó´Ï´Ù. ListElement¿¡´Â name(¹®ÀÚ¿) ¹× flag(ºÎ¿ï)ÀÇ
µÎ °¡Áö ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼´Â ListElement°¡ ¼±ÅÃµÉ ¶§¸¶´Ù ¸ðµç
Á¶Ä¡()°¡ »ç¿ë °¡´ÉÇÕ´Ï´Ù.
name = redRedÀÎ ListElement°¡ ¼±ÅÃµÇ¸é »¡°£»ö
Á¶Ä¡(
)°¡ »ç¿ë °¡´ÉÇÕ´Ï´Ù.
name != redÀÎ ListElement°¡ ¼±ÅÃµÇ¸é »¡°£»öÀÌ ¾Æ´Ñ
Á¶Ä¡(
)°¡ »ç¿ë °¡´ÉÇÕ´Ï´Ù.
<extension point = "org.eclipse.ui.actionSets">´ÙÀ½ ¿¹Á¦¿¡¼´Â pluginState ¿ä¼Ò¸¦ »ç¿ëÇÏ¿© Á¶Ä¡ ¼¼Æ®¿¡¼ Á¶Ä¡ÀÇ »ç¿ë °¡´É¼ºÀ» Á¦¾îÇÕ´Ï´Ù. ¼³Ä¡µÈ Á¶Ä¡(
<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><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><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><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>
<extension point = "org.eclipse.ui.actionSets">´ÙÀ½ ¿¹Á¦¿¡¼´Â systemProperty ¿ä¼Ò¸¦ º¸¿©ÁÝ´Ï´Ù. ActionExpressionVar ½Ã½ºÅÛ Æ¯¼ºÀÌ "bubba"ÀÎ °æ¿ì ½Ã½ºÅÛ Æ¯¼º Á¶Ä¡(
<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><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><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>
<extension point = "org.eclipse.ui.actionSets">´ÙÀ½ ¸¶Áö¸· ¿¹Á¦¿¡¼´Â ÆË¾÷ ¸Þ´º Á¶Ä¡ È®Àå¿¡ ´ëÇÑ °¡½Ã¼º ¼±¾ðÀ» º¸¿©ÁÝ´Ï´Ù. Red ¹× True Á¶Ä¡´Â name = redÀ̰í flag = trueÀ¸·Î ListElement°¡ ¼±ÅÃµÉ ¶§¸¶´Ù ³ªÅ¸³³´Ï´Ù.
<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><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>
<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¿¡¼ ¼±¾ðµË´Ï´Ù.