¸Þ´º

org.eclipse.ui.menus

3.2

ÀÌ È®ÀåÁ¡À» »ç¿ëÇÏ¿© Ç÷¯±×ÀÎ °³¹ßÀÚ´Â »óÅ ǥ½ÃÁÙºÎÅÍ ÄÁÅØ½ºÆ® ¸Þ´º±îÁö ÀÀ¿ëÇÁ·Î±×·¥ ³» ¾îµð¿¡µç ³ªÅ¸³ª´Â ¸Þ´º, ºÐ¸® ¹®ÀÚ, ³í¸® ±×·ì ¹× ¸Þ´º Ç׸ñÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ ±×·¯ÇÑ ÄÁÆ®¸®ºä¼Ç ¼¼Æ®¸¦ Á¤ÀÇ(Áï, Á¶Ä¡ ¼¼Æ®)ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ Á¶Ä¡ ¼¼Æ®´Â ÀÏ¹Ý »ç¿ëÀÚ°¡ ÄѰųª ²ø ¼ö ÀÖ½À´Ï´Ù. ¿ä¾àÇϸé, ¸Þ´º È®ÀåÁ¡¿¡´Â EclipseÀÇ ¸ðµç ¸Þ´º ¶Ç´Â Æ®¸² ¿µ¿ª¿¡ ÄÁÆ®¸®ºä¼ÇÇϱâ À§ÇÑ ¸ðµç ÇÁ¸®Á¨Å×ÀÌ¼Ç ¿ä¼Ò(¾ÆÀÌÄÜ Á¦¿Ü)°¡ ÀÖ½À´Ï´Ù.

ÀÌ È®ÀåÁ¡ ³»ÀÇ ¸ðµç ¿ä¼Ò¿¡´Â °íÀ¯ ID°¡ ºÎ¿©µË´Ï´Ù. ÀÌ·± ÀÌÀ¯·Î ¿ä¼Ò¸¦ ´Ù½Ã ¾ð±ÞÇÏÁö ¾Ê°íµµ ¾îµð¿¡¼­µç ÇØ´ç ¿ä¼Ò¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Á¶Ä¡ ¼¼Æ®¸¦ Á¤·Ä ¶Ç´Â Á¤ÀÇÇÏ´Â µ¥ ID°¡ ÇÊ¿äÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ °íÀ¯ ID¸¦ »ç¿ëÇÏ¸é ½áµåÆÄƼ Ç÷¯±×ÀÎ °³¹ßÀÚ°¡ ÀÌ·¯ÇÑ ¿ä¼Ò¸¦ ÀûÀýÇÑ ÀÎÅÍÆäÀ̽º ³»ÀÇ »õ À§Ä¡¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Âü°í: 3.2ÀÇ °æ¿ì ±¸ÇöµÈ È®Àå ¸ÞÄ¿´ÏÁòÀÇ ÆÄÆ®¸¸ 'Æ®¸®¹Ö' ÄÁÆ®¸®ºä¼Ç°ú ¿¬°üµÈ ÆÄÆ®ÀÔ´Ï´Ù. Ç׸ñ, ¸Þ´º, µµ±¸ ¸ðÀ½ ¶Ç´Â »óÅ ǥ½ÃÁÙ Ç׸ñ Ãß°¡ ½Ãµµ´Â NO-OP·Î ÀÛµ¿ÇÕ´Ï´Ù.

<!ELEMENT extension (item* , menu* , group* , widget*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

name  CDATA #IMPLIED>


<!ELEMENT item (parameter* , location* , visibleWhen?)>

<!ATTLIST item

id        CDATA #REQUIRED

commandId CDATA #REQUIRED

menuId    CDATA #IMPLIED>

Ç¥½ÃµÇ´Â À§Ä¡¿¡ µû¶ó Ç׸ñÀº ¸Þ´º Ç׸ñ ¶Ç´Â Æ®¸² Ç׸ñÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. Ç׸ñ°ú ¿¬°üµÈ ÅØ½ºÆ® ¹× À̹ÌÁö´Â ¸í·ÉÀ¸·Î ±×·ÁÁý´Ï´Ù.



<!ELEMENT menu (location* , visibleWhen?)>

<!ATTLIST menu

id    CDATA #REQUIRED

label CDATA #IMPLIED>

¸Þ´º´Â µµ±¸ Ç׸ñÀ̳ª, º¸±â ¸Þ´º, ÄÁÅØ½ºÆ® ¸Þ´º ¶Ç´Â ÃÖ»óÀ§ ·¹º§ ¸Þ´º Ç¥½ÃÁÙ ³» ÀÓÀÇ À§Ä¡¿¡ ÷ºÎµÉ ¼ö ÀÖ½À´Ï´Ù. Ç÷¯±×ÀÎ °³¹ßÀÚ´Â ¸ðµç º¸±â¿¡ ´ëÇÑ ¸Þ´º ¹× µµ±¸ ¸ðÀ½ÀÌ ÀÖÀ¸¸ç ÃÖ»óÀ§ ·¹º§ ¸Þ´º Ç¥½ÃÁÙÀÌ ÀÖ´Ù°í °£ÁÖÇÒ ¼ö ÀÖ½À´Ï´Ù. ÄÁÅØ½ºÆ® ¸Þ´º¸¦ »ç¿ëÇÏ·Á¸é ¸ÕÀú ÇÁ·Î±×·¥ ¹æ½ÄÀ¸·Î µî·ÏÇØ¾ß ÇÕ´Ï´Ù(API Á¤º¸ ÂüÁ¶).

¸Þ´º¿¡´Â ±×·ì¸¸ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.



<!ELEMENT group (location*)>

<!ATTLIST group

id                CDATA #REQUIRED

separatorsVisible (true | false) "true">

³í¸® ±×·ì. Ç¥½ÃµÉ ¼öµµ(¿¹: ÀûÀýÇÑ °æ¿ì ¾ÕµÚ¿¡ ºÐ¸® ¹®ÀÚ¸¦ ±×¸²), Ç¥½ÃµÇÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù. ±âº»ÀûÀ¸·Î ³í¸® ±×·ìÀº Ç¥½ÃµË´Ï´Ù.

±×·ì¿¡´Â ¸Þ´º, Ç׸ñ ¹× ±âŸ ±×·ìÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.



<!ELEMENT widget (location* , class? , visibleWhen? , layout?)>

<!ATTLIST widget

id    CDATA #REQUIRED

class CDATA #REQUIRED>

À§ÁöÆ®(widget)¿¡ ´ëÇÑ Á÷Á¢ ¾×¼¼½º°¡ ºÎ¿©µÈ ¸Þ´º ¶Ç´Â Æ®¸² ¿ä¼Ò. ¿¹¸¦ µé¾î, À̰ÍÀº ÄÞº¸ »óÀÚ¸¦ ·»´õ¸µÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, widget ¿ä¼Ò°¡ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¿¡¼­ Ç¥½ÃµÇ´Â °æ¿ì Ç÷¯±×ÀÎÀÌ ·ÎµåµÈ´Ù´Â ÀǹÌÀÔ´Ï´Ù. ÀÌ ¿ä¼Ò´Â ¼º´É ¹®Á¦Á¡À» À¯¹ßÇϹǷΠ»ç¿ë ½Ã ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ ¸ÅÅ©·Î Áö¿ø, ½ºÅ©¸³ÆÃ ¹× ±âŸ ¸í·É ±â¹Ý ¸ÞÄ¿´ÏÁò µîÀÇ »çÇ×°ú °ü·ÃÇÏ¿© ¹®Á¦Á¡À» À¯¹ßÇÒ ¼öµµ ÀÖ½À´Ï´Ù. À§ÁöÆ®(widget)¸¦ Æ®¸²À¸·Î »ç¿ëÇÏ´Â °æ¿ì, UI¿¡ Ç¥½ÃµÇ¾î¾ß Ç÷¯±×ÀÎÀÌ ·ÎµåµË´Ï´Ù.



<!ELEMENT layout EMPTY>

<!ATTLIST layout

fillMajor (true | false)

fillMinor (true | false) >

ÀÌ ¿ä¼Ò´Â trim À§Ä¡¿¡ Ãß°¡µÈ ¿ä¼Ò¿¡ ´ëÇÑ ´Ù¾çÇÑ ·¹À̾ƿô ¿É¼ÇÀ» ÁöÁ¤ÇÒ ¶§ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.



<!ELEMENT location (order? , (bar | part | popup))>

<!ATTLIST location

mnemonic   CDATA #IMPLIED

imageStyle CDATA #IMPLIED>

menu, group, item ¶Ç´Â widget°¡ Ç¥½ÃµÉ ¼ö ÀÖ´Â À§Ä¡. ÀÌ ¿ä¼Ò´Â À§Ä¡ ƯÁ¤ Á¤º¸¸¦ Á¦¾îÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.



<!ELEMENT bar EMPTY>

<!ATTLIST bar

type (menu|trim)

path CDATA #IMPLIED>

À§Ä¡ ³» ¸®ÇÁ ¿ä¼Ò. ¸Þ´º Ç¥½ÃÁÙ ¶Ç´Â Æ®¸² ¿µ¿ªÀÏ ¼ö ÀÖ½À´Ï´Ù. ±ÔÁ¤µÇÁö ¾ÊÀº °æ¿ì À̰ÍÀº ÃÖ»óÀ§ ·¹º§ ¸Þ´º Ç¥½ÃÁÙ ¶Ç´Â Æ®¸²À» Ç¥½ÃÇÕ´Ï´Ù. part ¿ä¼Ò·Î ±ÔÁ¤µÈ °æ¿ì¿¡´Â ÆÄÆ®ÀÇ ¸Þ´º ¶Ç´Â Æ®¸²À» Ç¥½ÃÇÕ´Ï´Ù.



<!ELEMENT class (parameter*)>

<!ATTLIST class

class CDATA #REQUIRED>

widget ¹× dynamic ¿ä¼Ò ¸ðµÎÀÇ ±¸¹®À» ºÐ¼®ÇÏ´Â ½ÇÇà °¡´É È®ÀåÀ» Áö¿øÇÏ´Â class ¿ä¼Ò



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

<!ATTLIST visibleWhen

checkEnabled (true | false) "false">

ÁöÁ¤µÈ ¿ä¼ÒÀÇ °¡½Ã¼ºÀ» Á¦¾îÇÕ´Ï´Ù.



<!ELEMENT part (popup | bar)>

<!ATTLIST part

id    CDATA #IMPLIED

class CDATA #IMPLIED>

À§Ä¡ ³» ¿ä¼Ò. À̰ÍÀº ƯÁ¤ Workbench ÆÄÆ®¸¦ ÂüÁ¶ÇÏ´Â À§Ä¡¸¦ ±ÔÁ¤ÇÕ´Ï´Ù. º¸±â ¶Ç´Â ÆíÁý±âÀÏ ¼ö ÀÖ½À´Ï´Ù. ±ÔÁ¤¿¡¼­´Â ÆÄÆ®ÀÇ Å¬·¡½º À̸§(»ó¼Ó Æ÷ÇÔ)À» »ç¿ëÇϰųª, º¸±â ¶Ç´Â ÆíÁý±âÀÇ ID¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù.

id¿Í class Áß Çϳª¸¸ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.



<!ELEMENT parameter EMPTY>

<!ATTLIST parameter

name  CDATA #REQUIRED

value CDATA #REQUIRED>

È®Àå¿¡¼­ ³ªÅ¸³ª´Â À§Ä¡¿¡ µû¶ó ½ÇÇà °¡´É È®Àå ¶Ç´Â ¸í·É ¸Å°³º¯¼ö



<!ELEMENT order EMPTY>

<!ATTLIST order

position   (start|end|before|after)

relativeTo CDATA #IMPLIED>

ƯÁ¤ À§Ä¡ ³»ÀÇ ¸Þ´º, ±×·ì, Ç׸ñ ¶Ç´Â À§ÁöÆ® À§Ä¡¸¦ Á¦¾îÇÕ´Ï´Ù.



<!ELEMENT popup EMPTY>

<!ATTLIST popup

id   CDATA #IMPLIED

path CDATA #IMPLIED>

À§Ä¡ ÆÄÆ®. ÆË¾÷ ¸Þ´º¿¡¼­ ¸Þ´º, ±×·ì, Ç׸ñ ¶Ç´Â À§ÁöÆ®°¡ Ç¥½ÃµÊÀ» ³ªÅ¸³À´Ï´Ù.



<!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À» ¹ß»ý½Ãŵ´Ï´Ù.



±âº» ¸Þ´º Á¤ÀÇ´Â ´ÙÀ½°ú °°½À´Ï´Ù.

<menu id=

"com.mycompany.myplugin.projection"

label=

"%Folding.label"

>

<location mnemonic=

"%Folding.label.mnemonic"

>

<part id=

"AntEditor"

>

<popup id=

"#RulerContext"

path=

"rest"

/>

</part>

</location>

</menu>

ÀÌ ¿¹Á¦¿¡¼­ Ç÷¯±×ÀÎ °³¹ßÀÚ´Â ÁöÁ¤µÈ À¯ÇüÀ» ¼­ºêŬ·¡½ºÈ­Çϰųª ±¸ÇöÇÏ´Â ¸ðµç ÆÄÆ®¿¡ ÄÁÆ®¸®ºä¼ÇÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, À̸¦ ÅëÇØ ÀϺΠÄÁÆ®¸®ºä¼ÇÀÌ ¸ðµç ¹®¼­ ÆíÁý±â¿¡ Ãß°¡µÉ ¼ö ÀÖ½À´Ï´Ù.

<menu id=

"com.mycompany.myplugin.textEditorMenu"

label=

"Text Commands"

>

<location mnemonic=

"X"

>

<part class=

"AbstractTextEditor"

>

<popup id=

"#RulerContext"

path=

"rest"

/>

</part>

</location>

</menu>

µµ¿ò¸»À» ¸Þ´º¿Í ¿¬°ü½Ãų ¼ö ÀÖ½À´Ï´Ù.

<menu id=

"com.mycompany.myplugin.RunWithConfigurationAction"

label=

"Run With Configuration"

helpContextId=

"run_with_configuration_context"

>

<location>

<bar />

</location>

</menu>

¸Þ´º ³»¿¡¼­ ³í¸® ±×·ìÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ³í¸® ±×·ìÀº Ç¥½ÃµÉ ¼öµµ(¿¹: ÀûÀýÇÑ °æ¿ì ¾ÕµÚ¿¡ ºÐ¸® ¹®ÀÚ¸¦ ±×¸²), Ç¥½ÃµÇÁö ¾ÊÀ» ¼öµµ ÀÖ½À´Ï´Ù. ±âº»ÀûÀ¸·Î ³í¸® ±×·ìÀº Ç¥½ÃµË´Ï´Ù.

<group id=

"com.mycompany.myplugin.stepGroup"

>

<location>

<bar path=

"org.eclipse.ui.run"

/>

</location>

</group>

<group id=

"com.mycompany.myplugin.stepIntoGroup"

separatorsVisible=

"false"

>

<location>

<bar path=

"org.eclipse.ui.run"

/>

</location>

</group>

¸Þ´º, ±×·ì, Ç׸ñ ¹× À§ÁöÆ®¸¦ ¿©·¯ À§Ä¡¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.

<item id=

"com.mycompany.myplugin.ToggleStepFilters"

commandId=

"com.mycompany.myplugin.ToggleStepFilters"

>

<location mnemonic=

"%mnemonic"

>

<bar path=

"org.eclipse.ui.run/emptyStepGroup"

/>

</location>

<location>

<part id=

"org.eclipse.debug.ui.DebugView"

>

<bar type=

"trim"

path=

"renderGroup"

/>

</part>

</location>

<location mnemonic=

"%mnemonic"

>

<part id=

"org.eclipse.debug.ui.DebugView"

>

<popup path=

"renderGroup"

/>

</part>

</location>

</item>

ID ¹× »óÀ§ ÆÄÆ® ¿ä¼Ò ¾øÀÌ ÆË¾÷ ¿ä¼Ò¸¦ ÁöÁ¤ÇÑ °æ¿ì Workbench¿¡ µî·ÏµÈ ¸ðµç ÄÁÅØ½ºÆ® ¸Þ´º¿¡ Àû¿ëµË´Ï´Ù. À̰ÍÀº ÀÌÀü ¿ÀºêÁ§Æ® ÄÁÆ®¸®ºä¼ÇÀÇ µ¿ÀÛ°ú ºñ½ÁÇÕ´Ï´Ù. ¸¶Âù°¡Áö·Î, ID°¡ ÀÖ´Â ÃÖ»óÀ§ ·¹º§ ÆË¾÷ ¿ä¼Ò´Â ÁöÁ¤µÈ À̸§À¸·Î µî·ÏµÈ ¸ðµç ÄÁÅØ½ºÆ® ¸Þ´º¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

<item id=

"com.mycompany.myplugin.ObjectContribution"

commandId=

"com.mycompany.myplugin.ObjectContribution"

>

<location>

<popup path=

"additions"

/>

</location>

</item>

°¡²û¾¿ Ç׸ñ °¡½Ã¼ºÀ» Á¦¾îÇØ¾ß ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î ¸Þ´º ¹× µµ±¸ ¸ðÀ½ ·¹À̾ƿô¿¡¼­ Ç׸ñ °¡½Ã¼ºÀ» À¯Áö°ü¸®ÇÏ´Â °ÍÀÌ ³´Áö¸¸ Á÷Á¢ °ü·ÃÀÌ ¾ø´Â Ç׸ñÀ» ¼û±â´Â °ÍÀÌ ´õ ÀûÇÕÇÑ °æ¿ìµµ ÀÖ½À´Ï´Ù. ƯÈ÷ °ø°£ÀÌ Á¦ÇÑÀûÀÎ ÄÁÅØ½ºÆ® ¸Þ´º¿¡¼­ ±×·¸½À´Ï´Ù. ÀÌ·± °æ¿ì visibleWhen ¿ä¼Ò¸¦ Á¤ÀÇÇÕ´Ï´Ù. ÀÌ ¿ä¼Ò´Â Çڵ鷯 È®ÀåÁ¡¿¡ Á¤ÀÇµÈ activeWhen ¹× enabledWhen ¿ä¼Ò¿Í °ÅÀÇ µ¿ÀÏÇÕ´Ï´Ù.

<item id=

"com.mycompany.myplugin.ConvertToWatchExpression"

commandId=

"com.mycompany.myplugin.ConvertToWatchExpression"

>

<location mnemonic=

"%mnemonic"

>

<part id=

"org.eclipse.debug.ui.DebugView"

>

<popup path=

"additions"

/>

</part>

</location>

<visibleWhen>

<with variable=

"selection"

>

<iterate operator=

"and"

>

<not>

<instanceof value=

"IWatchExpression"

/>

</not>

<instanceof value=

"IExpression"

/>

</iterate>

</with>

</visibleWhen>

</item>

°¡Àå ÀϹÝÀûÀÎ °æ¿ì´Â ÇØ´ç Çڵ鷯¸¦ »ç¿ëÇÏ´Â °æ¿ì Ç׸ñÀÌ Ç¥½ÃµÇ°Ô ÇÏ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº ÀϺΠ±¸¹® ¿ä¼Ò·Î 󸮵Ǵµ¥, visibleWhen ¿ä¼Ò¿¡´Â checkEnabled ¼Ó¼ºÀÌ ÀÖ½À´Ï´Ù.

<item id=

"com.mycompany.myplugin.compareWithPatch"

commandId=

"com.mycompany.myplugin.compareWithPatch"

>

<location mnemonic=

"%mnemonic"

>

<part id=

"MyPart"

>

<popup path=

"additions"

/>

</part>

</location>

<visibleWhen checkEnabled=

"true"

/>

</item>

¸í·É°ú ¿¬°üµÈ ¸ðµç Ç׸ñ¿¡´Â ¸Å°³º¯¼ö°ªÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù. ÁöÁ¤µÈ IDÀÇ ¸Å°³º¯¼ö°¡ Á¤ÀǵÇÁö ¾ÊÀº °æ¿ì ¿À·ù¶ó°í ÇÒ ¼ö ÀÖ½À´Ï´Ù. Ç׸ñ¿¡ ¸í·ÉÀÌ ¾ø´Â °æ¿ìµµ ¿À·ùÀÔ´Ï´Ù.

<item id=

"com.mycompany.myplugin.RunHistory"

commandId=

"com.mycompany.myplugin.RunHistory"

>

<location>

<bar path=

"org.eclipse.ui.run"

/>

</location>

<parameter name=

"index"

value=

"1"

/>

</item>

»ó´ë ¼ø¼­¸¦ ÁöÁ¤ÇÒ ¼öµµ Àִµ¥, À§Ä¡ ¿ä¼Ò¿¡ order ¼Ó¼ºÀ» »ç¿ëÇÏ¸é µË´Ï´Ù. order ¼Ó¼ºÀº ´ÙÀ½ °ªÀ» ½ÂÀÎÇÕ´Ï´Ù. start(¿ä¼Ò¸¦ ÄÁÅ×ÀÌ³Ê ½ÃÀÛ ºÎºÐ¿¡ ³ÖÀ½), end(¿ä¼Ò¸¦ ÄÁÅ×À̳ÊÀÇ ³¡ ºÎºÐ¿¡ ³ÖÀ½), after(ID°¡ ref¿Í ÀÏÄ¡ÇÏ´Â µ¿À§ ¿ä¼Ò ´ÙÀ½¿¡ ¿ä¼Ò¸¦ ³ÖÀ½), before(ID°¡ ref¿Í ÀÏÄ¡ÇÏ´Â µ¿À§ ¿ä¼Ò ¾Õ¿¡ ¿ä¼Ò¸¦ ³ÖÀ½). »ó´ë ¼ø¼­¸¦ ¸ðµç ¸Þ´º ¿ä¼Ò À¯Çü¿¡ Àû¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

<item id=

"com.mycompany.myplugin.MyFirstItem"

commandId=

"com.mycompany.myplugin.MyFirstCommand"

>

<location>

<order position=

"start"

/>

<bar path=

"org.eclipse.ui.run"

/>

</location>

</item>

<item id=

"com.mycompany.myplugin.MySecondItem"

commandId=

"com.mycompany.myplugin.MySecondCommand"

>

<location>

<order position=

"after"

relativeTo=

"com.mycompany.myplugin.MyFirstItem"

/>

<bar path=

"org.eclipse.ui.run"

/>

</location>

</item>

À§ÁöÆ®¿¡ Á÷Á¢ ¾×¼¼½ºÇØ¾ß ÇÏ´Â °æ¿ì(¿¹: ÄÞº¸ »óÀÚ ·»´õ¸µÀ» À§ÇØ) widget ¿ä¼Ò¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, widget ¿ä¼Ò°¡ »ç¿ëÀÚ ÀÎÅÍÆäÀ̽º¿¡¼­ Ç¥½ÃµÇ´Â °æ¿ì Ç÷¯±×ÀÎÀÌ ·ÎµåµÈ´Ù´Â ÀǹÌÀÔ´Ï´Ù.

<widget id=

"com.mycompany.myplugin.MyComboBoxSimple"

class=

"com.mycompany.myplugin.MyComboBox"

>

<location>

<bar type=

"trim"

path=

"myGroup"

/>

</location>

</widget>

<widget id=

"com.mycompany.myplugin.MyComboBoxParameterized1"

class=

"com.mycompany.myplugin.MyComboBox:a,b,c"

>

<location>

<bar type=

"trim"

path=

"myGroup"

/>

</location>

</widget>

<widget id=

"com.mycompany.myplugin.MyComboBoxParameterized2"

>

<class class=

"com.mycompany.myplugin.MyComboBox"

>

<parameter name=

"list"

value=

"a,b,c"

/>

<parameter name=

"selected"

value=

"c"

/>

<parameter name=

"editable"

value=

"false"

/>

</class>

<location>

<bar type=

"trim"

path=

"myGroup"

/>

</location>

</widget>

À§ÁöÆ®¸¦ »ç¿ëÇÏ¿© Workbench Æ®¸²¿¡ ÄÁÆ®¸®ºä¼ÇÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â ±âº»ÀûÀ¸·Î »óÅ ǥ½ÃÁÙ Æ®¸² ¹Ù·Î ´ÙÀ½(Áï, Workbench â ¸Ç ¾Æ·¡)¿¡ ¹èÄ¡µÇ´Â »õ 'HeapStatus' À§ÁöÆ®¸¦ Á¤ÀÇÇÕ´Ï´Ù. ¹Ì¸® Á¤ÀÇµÈ ±×·ì¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â 'bar' ¿ä¼Ò¿¡ ´ëÇÑ ¼³¸íÀ» ÂüÁ¶ÇϽʽÿÀ.

Æ®¸² '±×·ì'À» ´Ù¸¥ Æ®¸² ¿µ¿ª¿¡ ´Ù½Ã ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. À§Ä¡ Á¤º¸ÀÇ relativeTo´Â »õ Æ®¸² À§Ä¡¸¦ °áÁ¤ÇÒ ¶§ ÂüÁ¶µÇ´Â ±×·ìÀÌ ±âº» À§Ä¡¿¡ ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù. ÀϹÝÀûÀ¸·Î ÀÌ ÄÁÆ®¸®ºäÅÍ À¯ÇüÀº ´Ù¸¥ Æ®¸² ¿ä¼Ò¿Í µ¶¸³ÀûÀ¸·Î Æ®¸² ¿ä¼Ò¸¦ ´Ù½Ã ¹èÄ¡ÇÒ ¼ö ÀÖµµ·Ï »õ À§ÁöÆ®¸¦ È£½ºÆ®ÇÏ´Â ÀÚü ±×·ìÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ¿¡ ´ëÇÑ ÇÑ °¡Áö ¿¹¿Ü´Â '»óÅÂ' ±×·ìÀÔ´Ï´Ù.

   

<extension point=

"org.eclipse.ui.menus"

>

<group id=

"TestTrimAPI.heapStatusGroup"

separatorsVisible=

"true"

>

<location>

<bar type=

"trim"

/>

<order position=

"after"

relativeTo=

"status"

/>

</location>

</group>

<widget class=

"HeapStatusWidget"

id=

"TestTrimAPI.HeapStatus"

>

<location>

<bar path=

"heapStatusGroup"

type=

"trim"

/>

</location>

<layout fillMajor=

"false"

fillMinor=

"true"

/>

</widget>

</extension>

ÄÁÅØ½ºÆ® ¸Þ´º¸¦ µî·ÏÇÏ·Á¸é IWorkbenchPartSite.registerContextMenu ¸Þ¼Òµå¸¦ »ç¿ëÇϽʽÿÀ.