Çڵ鷯

org.eclipse.ui.handlers

3.1

Çڵ鷯 È®ÀåÁ¡Àº Eclipse 3.0¿¡¼­ Á¤ÀǵǴ ½ÇÇèÀû handlerSubmission ¿ä¼ÒÀÇ »ó¼úÀÔ´Ï´Ù. Çڵ鷯´Â ƯÁ¤ ½ÃÁ¡¿¡¼­ ¸í·ÉÀÇ ÀÛµ¿ÀÔ´Ï´Ù. ¸í·ÉÀº 0°³ ÀÌ»óÀÇ Çڵ鷯¿Í ¿¬°üµÉ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÓÀÇÀÇ ½ÃÁ¡¿¡¼­ ¸í·ÉÀº Ȱ¼º Çڵ鷯¸¦ °®Áö ¾Ê°Å³ª ÇϳªÀÇ È°¼º Çڵ鷯¸¦ °®½À´Ï´Ù. Ȱ¼º Çڵ鷯´Â ÇöÀç ¸í·ÉÀÇ µ¿ÀÛ ¼öÇàÀ» Ã¥ÀÓÁö°í ÀÖ´Â Çڵ鷯ÀÔ´Ï´Ù. À̰ÍÀº Á¶Ä¡ Çڵ鷯 ¹× ´ë»ó ÀçÁöÁ¤ °¡´É Á¶Ä¡ÀÇ °³³ä°ú ¸Å¿ì À¯»çÇÕ´Ï´Ù.

Çڵ鷯 È®ÀåÀÚ¸¦ »ç¿ëÇϸé Ç÷¯±×ÀÎ °³¹ßÀÚ°¡ ƯÁ¤ Á¶°Ç¿¡¼­ Ȱ¼ºÀÌ µÇ°í/µÇ°Å³ª »ç¿ëµÇ¾î¾ß ÇÏ´Â Çڵ鷯¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Çڵ鷯°¡ ºñȰ¼ºÀÎ °æ¿ì ¸í·ÉÀÌ ±×ÀÇ ÀÛµ¿À» Çڵ鷯¿¡ À§ÀÓÇÏÁö ¾Ê½À´Ï´Ù. Çڵ鷯¸¦ »ç¿ëÇÒ ¼ö ¾ø´Â °æ¿ì, Çڵ鷯´Â ½ÇÇàÇϵµ·Ï ¿äûµÇÁö ¾Ê½À´Ï´Ù. Áï Çڵ鷯ÀÇ ½ÇÇàÀÌ Â÷´ÜµË´Ï´Ù. Á¶°ÇÀº 3.0 Áß¿¡ Ãß°¡µÇ´Â Ç¥Çö½Ä ¾ð¾î ±â´ÉÀ» »ç¿ëÇÏ¿© Á¤Àǵ˴ϴÙ. Á¶°ÇÀº activeWhen ¹× enabledWhen ÀýÀ» »ç¿ëÇÏ¿© Ç¥ÇöµË´Ï´Ù.

Workbench´Â À̵é Ç¥Çö½ÄÀÌ ÀÇÁ¸ÇÒ ¼ö ÀÖ´Â ¸î °¡Áö º¯¼ö¸¦ Á¦°øÇÕ´Ï´Ù. Áö¿øµÇ´Â º¯¼ö´Â Ȱ¼º ÄÁÅØ½ºÆ®, Ȱ¼º ÆíÁý±â, Ȱ¼º ºÎºÐ ¹× ÇöÀç ¼±ÅûçÇ×ÀÔ´Ï´Ù. ÀÌ Ãʱ⠵ðÀÚÀο¡¼­´Â Áö¿øµÇÁö ¾ÊÁö¸¸ ´Ù¸¥ º¯¼ö¸¦ Ãß°¡Çϰųª Ç÷¯±×ÀÎ °³¹ßÀÚ°¡ ´Ù¸¥ º¯¼ö¸¦ Á¦°øÇÒ ¼ö ÀÖµµ·Ï Çã¿ëÇÏ´Â ¹æ¹ý±îÁö ¿ëÀÌÇÏ°Ô ¾Ë ¼ö ÀÖ½À´Ï´Ù.

Á¶°ÇÀ» ÁöÁ¤ÇÏÁö ¾Ê´Â Çڵ鷯°¡ ±âº» Çڵ鷯ÀÔ´Ï´Ù. ±âº» Çڵ鷯´Â ´Ù¸¥ Çڵ鷯°¡ ±×ÀÇ ¸ðµç Á¶°ÇÀ» ¸¸Á·ÇÏÁö ¾Ê´Â °æ¿ì¿¡¸¸ Ȱ¼ºÀÔ´Ï´Ù. µÎ Çڵ鷯°¡ ¿©ÀüÈ÷ ¸¸Á·µÇ´Â Á¶°ÇÀ» °®´Â °æ¿ì Á¶°ÇÀÌ ºñ±³µË´Ï´Ù. ¾ÆÀ̵ð¾î´Â ±×ÀÇ Á¶°ÇÀÌ ´õ ƯÁ¤Çϰųª ´õ ·ÎÄÃÀÎ Çڵ鷯¸¦ ¼±ÅÃÇÏ´Â °ÍÀÔ´Ï´Ù. À̸¦ ¼öÇàÇϱâ À§ÇØ Á¶°ÇÀÌ ÂüÁ¶ÇÏ´Â º¯¼ö¸¦ ã½À´Ï´Ù. Á¶°ÇÀº º¯¼ö "wins"¸¦ ÂüÁ¶ÇÕ´Ï´Ù. ¸¸Á·µµÀÇ ¼ø¼­(ÃÖ¼Ò Æ¯Á¤ºÎÅÍ ÃÖ´ë Æ¯Á¤±îÁö)´Â org.eclipse.ui.ISources¿¡ Á¤Àǵ˴ϴÙ.

¿©ÀüÈ÷ Ãæµ¹À» ÇØ°áÇÏÁö ¸øÇÏ´Â °æ¿ì ¾î¶² Çڵ鷯µµ Ȱ¼ºÀÌ ¾Æ´Õ´Ï´Ù. ƯÁ¤ ÃßÀû ¿É¼ÇÀÌ ÄÑÁø °æ¿ì ¸Þ½ÃÁö°¡ ·Î±×¿¡ ±â·ÏµË´Ï´Ù. Ãæµ¹Àº µÎ °³ÀÇ ±âº» Çڵ鷯°¡ ÀÖ´Â °æ¿ì¿¡µµ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì°¡ ¹ß»ýÇÏÁö ¾Ê°Ô ÇÏ´Â °ÍÀº Ç÷¯±×ÀÎ °³¹ßÀÚ¿Í ÅëÇÕ Å×½ºÆ®ÀÇ Ã¥ÀÓÀÔ´Ï´Ù. ÀÌ·¯ÇÑ Á¶°ÇÀº ºÒÇÊ¿äÇÑ Ç÷¯±×ÀÎ ·Îµå¸¦ ¸·´Â µ¥ »ç¿ëµË´Ï´Ù. À̵é Çڵ鷯 Á¤ÀÇ´Â ÇÁ·Ï½Ã¿¡¼­ ·¦µË´Ï´Ù. ÇÁ·Ï½Ã°¡ ±âº» Çڵ鷯¸¦ ·ÎµåÇϱâ À§Çؼ­´Â µÎ °¡Áö°¡ ¹ß»ýÇØ¾ß ÇÕ´Ï´Ù. ÇÁ·Ï½Ã¿¡ ´ëÇÑ Á¶°ÇÀÌ ¸¸Á·µÇ¾î Ȱ¼ºÀÌ µÇ°í, ¸í·ÉÀÌ À§ÀÓÇØ¾ß ÇÏ´Â ¾î¶² ÀÛ¾÷(¿¹: execute())À» ¼öÇàÇϵµ·Ï ¸í·É¿¡ ¿äÃ»ÇØ¾ß ÇÕ´Ï´Ù.

<@!ELEMENT extension (handler*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT handler (activeWhen? , class? , enabledWhen?)>

<!ATTLIST handler

commandId     CDATA #REQUIRED

class         CDATA #IMPLIED

helpContextId CDATA #IMPLIED>


<!ELEMENT activeWhen (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>



<!ELEMENT enabledWhen (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>



<!ELEMENT class (parameter*)>

<!ATTLIST class

class CDATA #IMPLIED>


<!ELEMENT parameter EMPTY>

<!ATTLIST parameter

name  CDATA #REQUIRED

value CDATA #REQUIRED>


<!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

ÀÏ¹Ý ·çÆ® ¿ä¼Ò. ÀÌ ¿ä¼Ò´Â È®ÀåÁ¡ ³»¿¡¼­ Enablement Ç¥Çö½ÄÀ» Á¤ÀÇÇÏ´Â µ¥ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. Enablement Ç¥Çö½ÄÀÇ ÇÏÀ§´Â and ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© °áÇյ˴ϴÙ.



<!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>

ÀÌ ¿ä¼Ò´Â ÇØ´ç ÇÏÀ§ ¿ä¼Ò Ç¥Çö½Ä Æò°¡ °á°ú¿¡¼­ NOT ¿¬»êÀ» ³ªÅ¸³À´Ï´Ù.



<!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

ÀÌ ¿ä¼Ò´Â ¸ðµç ÇØ´ç ÇÏÀ§ ¿ä¼Ò Ç¥Çö½Ä Æò°¡ °á°ú¿¡¼­ AND ¿¬»êÀ» ³ªÅ¸³À´Ï´Ù.



<!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

ÀÌ ¿ä¼Ò´Â ¸ðµç ÇØ´ç ÇÏÀ§ ¿ä¼Ò Ç¥Çö½Ä Æò°¡ °á°ú¿¡¼­ OR ¿¬»êÀ» ³ªÅ¸³À´Ï´Ù.



<!ELEMENT instanceof EMPTY>

<!ATTLIST instanceof

value CDATA #REQUIRED>

ÀÌ ¿ä¼Ò´Â ÃÊÁ¡ÀÌ µÈ ¿ÀºêÁ§Æ®ÀÇ instanceof °Ë»ç¸¦ ¼öÇàÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¿ÀºêÁ§Æ® À¯ÇüÀÌ ¼Ó¼º °ªÀ¸·Î ÁöÁ¤µÈ À¯ÇüÀÇ ÇÏÀ§ À¯ÇüÀÎ °æ¿ì Ç¥Çö½ÄÀº EvaluationResult.TRUE¸¦ ¸®ÅÏÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é EvaluationResult.FALSE¸¦ ¸®ÅÏÇÕ´Ï´Ù.



<!ELEMENT test EMPTY>

<!ATTLIST test

property CDATA #REQUIRED

args     CDATA #IMPLIED

value    CDATA #IMPLIED>

ÀÌ ¿ä¼Ò´Â ÃÊÁ¡ÀÌ µÈ ¿ÀºêÁ§Æ®ÀÇ Æ¯¼º »óŸ¦ Æò°¡ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. Ư¼º Å×½ºÅÍ È®ÀåÁ¡À» »ç¿ëÇÏ¿© Å×½ºÆ® °¡´ÉÇÑ Æ¯¼º ¼¼Æ®¸¦ È®ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ½ÇÁ¦ Å×½ºÆ®¸¦ ¼öÇàÇϴ Ư¼º Å×½ºÅͰ¡ ¾ÆÁ÷ ·ÎµåµÇÁö ¾ÊÀº °æ¿ì Å×½ºÆ® Ç¥Çö½ÄÀº EvaluationResult.NOT_LOADED¸¦ ¸®ÅÏÇÕ´Ï´Ù.



<!ELEMENT systemTest EMPTY>

<!ATTLIST systemTest

property CDATA #REQUIRED

value    CDATA #REQUIRED>

System.getProperty ¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© ½Ã½ºÅÛ Æ¯¼ºÀ» Å×½ºÆ®ÇÑ ´ÙÀ½ ±× °á°ú¸¦ °ª ¼Ó¼ºÀ» ÅëÇØ ÁöÁ¤µÈ °ª°ú ºñ±³ÇÕ´Ï´Ù.



<!ELEMENT equals EMPTY>

<!ATTLIST equals

value CDATA #REQUIRED>

ÀÌ ¿ä¼Ò´Â ÃÊÁ¡ÀÌ µÈ ¿ÀºêÁ§Æ®ÀÇ equals °Ë»ç¸¦ ¼öÇàÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ¿ÀºêÁ§Æ®°¡ ¼Ó¼º °ªÀ¸·Î Á¦°øµÈ °ª°ú µ¿ÀÏÇÑ °æ¿ì Ç¥Çö½ÄÀº EvaluationResult.TRUE¸¦ ¸®ÅÏÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é EvaluationResult.FALSE¸¦ ¸®ÅÏÇÕ´Ï´Ù.



<!ELEMENT count EMPTY>

<!ATTLIST count

value CDATA #REQUIRED>

ÀÌ ¿ä¼Ò´Â ÄÝ·º¼Ç¿¡ ÀÖ´Â ¿ä¼ÒÀÇ ¼ö¸¦ Å×½ºÆ®ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.



<!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST with

variable CDATA #REQUIRED>

ÀÌ ¿ä¼Ò´Â ¸ðµç ÇÏÀ§ ¿ä¼Ò¸¦ °Ë»çÇØ¾ß ÇÏ´Â ¿ÀºêÁ§Æ®¸¦ Á¦°øµÈ º¯¼ö¿¡ ÀÇÇØ ÂüÁ¶µÇ´Â ¿ÀºêÁ§Æ®·Î º¯°æÇÕ´Ï´Ù. º¯¼ö¸¦ ºÐ¼®ÇÒ ¼ö ¾ø´Â °æ¿ì Ç¥Çö½ÄÀº Æò°¡ Áß¿¡ ExpressionExceptionÀ» ¹ß»ý½Ãŵ´Ï´Ù. with Ç¥Çö½ÄÀÇ ÇÏÀ§´Â and ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© °áÇյ˴ϴÙ.



<!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST resolve

variable CDATA #REQUIRED

args     CDATA #IMPLIED>

ÀÌ ¿ä¼Ò´Â ¸ðµç ÇÏÀ§ ¿ä¼Ò¸¦ °Ë»çÇØ¾ß ÇÏ´Â ¿ÀºêÁ§Æ®¸¦ Á¦°øµÈ º¯¼ö¿¡ ÀÇÇØ ÂüÁ¶µÇ´Â ¿ÀºêÁ§Æ®·Î º¯°æÇÕ´Ï´Ù. º¯¼ö¸¦ ºÐ¼®ÇÒ ¼ö ¾ø´Â °æ¿ì Ç¥Çö½ÄÀº Æò°¡ Áß¿¡ ExpressionExceptionÀ» ¹ß»ý½Ãŵ´Ï´Ù. with Ç¥Çö½ÄÀÇ ÇÏÀ§´Â and ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© °áÇյ˴ϴÙ.



<!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST adapt

type CDATA #REQUIRED>

ÀÌ ¿ä¼Ò´Â ÃÊÁ¡ÀÌ µÈ ¿ÀºêÁ§Æ®¸¦ ¼Ó¼º À¯Çü¿¡ ÀÇÇØ ÁöÁ¤µÈ À¯ÇüÀ¸·Î ÀûÀÀ½ÃŰ´Â µ¥ »ç¿ëÇÕ´Ï´Ù. ÂüÁ¶µÈ À¯Çü ¶Ç´Â ¾î´ðÅͰ¡ ¾ÆÁ÷ ·ÎµåµÇÁö ¾ÊÀº °æ¿ì Ç¥Çö½ÄÀº ·ÎµåµÇÁö ¾ÊÀº »óŸ¦ ¸®ÅÏÇÕ´Ï´Ù. À¯Çü À̸§ÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì Æò°¡ Áß¿¡ ExpressionExceptionÀ» ¹ß»ý½Ãŵ´Ï´Ù. Adapt Ç¥Çö½ÄÀÇ ÇÏÀ§´Â and ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© °áÇյ˴ϴÙ.



<!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

<!ATTLIST iterate

operator (or|and) >

ÀÌ ¿ä¼Ò´Â Java.util.Collection À¯ÇüÀÇ º¯¼ö¸¦ ¹Ýº¹ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÃÊÁ¡ÀÌ µÈ ¿ÀºêÁ§Æ®°¡ java.util.Collection À¯ÇüÀÌ ¾Æ´Ñ °æ¿ì Ç¥Çö½ÄÀº Æò°¡ Áß¿¡ ExpressionExceptionÀ» ¹ß»ý½Ãŵ´Ï´Ù.



<extension point=

"org.eclipse.ui.handlers"

>

<handler commandId=

"commandId"

class=

"org.eclipse.compare.Command"

>

<activeWhen>

<with variable=

"selection"

>

<count value=

"1"

/>

<iterate operator=

"and"

>

<adapt type=

"IResource"

/>

</iterate>

</with>

</activeWhen>

</handler>

</extension>

Ç÷¯±×ÀÎ ·Îµå¸¦ ´õ¿í ÇÇÇϱâ À§ÇØ Çڵ鷯°¡ »ç¿ëµÇ´Â ½Ã±â¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÁ·Ï½Ã°¡ ¾ÆÁ÷ Çڵ鷯¸¦ ·ÎµåÇÏÁö ¾ÊÀº °æ¿ì Ç¥Çö½Ä ±¸¹®¸¸ÀÌ Çڵ鷯°¡ »ç¿ëµÇ´ÂÁö ¿©ºÎ¸¦ °áÁ¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. ÇÁ·Ï½Ã°¡ Çڵ鷯¸¦ ·ÎµåÇÑ °æ¿ì ù ¹øÂ°·Î Ç¥Çö½Ä ±¸¹®À» Âü°íÇÕ´Ï´Ù. Ç¥Çö½Ä ±¸¹®ÀÌ true·Î Æò°¡µÇ´Â °æ¿ì Çڵ鷯°¡ »ç¿ë °¡´ÉÇÑÁö ¹¯½À´Ï´Ù. (À̰ÍÀº Ç¥Çö½Ä ±¸¹®°ú Çڵ鷯ÀÇ »ç¿ë »óÅ »çÀÌÀÇ »ý·«µÈ ºÎ¿ï "and" ¿ÀÆÛ·¹À̼ÇÀÔ´Ï´Ù.)

<extension point=

"org.eclipse.ui.handlers"

>

<handler commandId=

"commandId"

class=

"org.eclipse.Handler"

>

<enabledWhen>

<with variable=

"context"

>

<property id=

"id"

value=

"debugging"

/>

</with>

</enabledWhen>

</handler>

</extension>

¸ðµç Çڵ鷯´Â org.eclipse.core.commands.IHandler¸¦ ±¸ÇöÇÕ´Ï´Ù. Workbench ¾È¿¡¼­ org.eclipse.ui.handlers.IHandlerService ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© Çڵ鷯¸¦ Ȱ¼ºÈ­ ¹× ºñȰ¼ºÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º´Â IWorkbench ÀÚü °°ÀÌ Áö¿ø Workbench ¿ÀºêÁ§Æ®·ÎºÎÅÍ °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼­ºñ½º¸¦ °Ë»öÇÏ·Á¸é IWorkbench.getAdapter(IHandlerService.class) °°Àº È£ÃâÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

¶ÇÇÑ Workbench¿¡¼­ ·¹°Å½Ã Äڵ带 »ç¿ëÇÏ¿© Çڵ鷯¸¦ Ȱ¼ºÈ­ ¹× ºñȰ¼ºÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â ¾Æ·¡¿¡ Ç¥½ÃµÈ ·¹°Å½Ã ¸ÞÄ¿´ÏÁòÀ» ÅëÇØ ¿Ï·áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸ÞÄ¿´ÏÁòÀº Á¶Ä¡¸¦ »ç¿ëÇÏ¿© ¸Þ´º ¶Ç´Â µµ±¸ ¸ðÀ½À» Á¦°øÇϴ Ŭ¶óÀÌ¾ðÆ®¿¡ À¯¿ëÇÕ´Ï´Ù.

 IWorkbenchPartSite mySite;
 IAction myAction;
 
 myAction.setActionDefinitionId(commandId);
 IKeyBindingService service = mySite.getKeyBindingService();
 service.registerAction(myAction);