Ç÷¯±×ÀÎÀº µ¥ÄÚ·¹ÀÌÅ͸¦ »ç¿ëÇÏ¿© Workbench º¸±â¿¡ ³ªÅ¸³ª´Â ÀÚ¿ø ¹× ±âŸ ¿ÀºêÁ§Æ®ÀÇ À̹ÌÁö¿¡ ÁÖ¼®À» ´Þ ¼ö ÀÖ½À´Ï´Ù. µ¥ÄÚ·¹ÀÌÅÍ´Â Ç÷¯±×ÀÎÀÌ ±âÁ¸ ÀÚ¿ø À¯Çü¿¡ ±â´ÉÀ» Ãß°¡ÇÒ ¶§ À¯¿ëÇÕ´Ï´Ù. ´ëºÎºÐÀÇ Ç¥ÁØ Workbench º¸±â´Â µ¥ÄÚ·¹À̼ÇÀÇ Ç¥½Ã¿¡ Âü¿©ÇÕ´Ï´Ù.
¿¹¸¦ µé¾î PDE´Â 2Áø ÇÁ·ÎÁ§Æ®¿Í ¼Ò½º ÇÁ·ÎÁ§Æ®¸¦ ±¸ºÐÇÒ ¼ö ÀÖ´Â µ¥ÄÚ·¹ÀÌÅ͸¦ Á¦°øÇÕ´Ï´Ù.
com.example.helloworld ÇÁ·ÎÁ§Æ®´Â ³×ºñ°ÔÀÌÅÍ¿¡ Ç¥½ÃµÈ À¯ÀÏÇÑ ¼Ò½º ÇÁ·ÎÁ§Æ®ÀÔ´Ï´Ù. ´Ù¸¥ ¸ðµç 2Áø ÇÁ·ÎÁ§Æ®¿¡¼ Java ÇÁ·ÎÁ§Æ® ¾ÆÀÌÄÜÀÇ ¿ÞÂÊ À§¿¡ 2Áø µ¥ÄÚ·¹ÀÌÅͰ¡ Ç¥½ÃµÇ´Â ¹æ¹ýÀ» Âü°íÇϽʽÿÀ. ÀÌ µ¥ÄÚ·¹ÀÌÅÍ´Â org.eclipse.ui.decorators È®ÀåÁ¡À» »ç¿ëÇÏ¿© PDE¿¡¼ Á¦°øµË´Ï´Ù.
<extension point="org.eclipse.ui.decorators"> <decorator lightweight="true" quadrant="TOP_LEFT" adaptable="true" label="%decorator.label" icon="icons/full/ovr16/binary_co.png" state="false" id="org.eclipse.pde.ui.binaryProjectDecorator"> <description> %decorator.desc </description> <enablement> ... </enablement> </decorator> </extension>
µ¥ÄÚ·¹ÀÌÅÍ ±¸ÇöÀ» Á¦°øÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¸¶Å©¾÷¿¡¼´Â ¼±¾ðÀûÀÌ°í °£´ÜÇÑ µ¥ÄÚ·¹ÀÌÅÍ·Î ¾Ë·ÁÁø °¡Àå ´Ü¼øÇÑ ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù. ¼±¾ðÀûÀÌ°í °£´ÜÇÑ µ¥ÄÚ·¹ÀÌÅͰ¡ Á¤ÀǵǴ °æ¿ì ¸¶Å©¾÷¿¡´Â µ¥ÄÚ·¹ÀÌÅÍÀÇ ¾ÆÀÌÄÜ, ¹èÄ¡ ¹× »ç¿ë Á¶°ÇÀÇ Àüü ¼³¸íÀÌ Æ÷ÇԵ˴ϴÙ. ¼±¾ðÀû µ¥ÄÚ·¹ÀÌÅÍ´Â ¾ÆÀÌÄÜÀÌ ·¹À̺íÀ» µ¥ÄÚ·¹ÀÌÆ®ÇÏ´Â µ¥ »ç¿ëµÉ ¶§¸¸ À¯¿ëÇÕ´Ï´Ù. Ç÷¯±×ÀÎÀº µ¥ÄÚ·¹ÀÌÅͰ¡ ÀÏ¹Ý ¾ÆÀÌÄÜ ¹× ¿À¹ö·¹ÀÌ¿ë ¾ÆÀÌÄÜ¿¡ ¿À¹ö·¹À̵Ǿî¾ß ÇÒ 4ºÐ¸é¸¸ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ±×¸²Ã³·³, PDE 2Áø ¾ÆÀÌÄÜÀº ÆÐŰÁö ¾ÆÀÌÄÜÀÇ ¿ÞÂÊ ¸Ç À§ 4ºÐ¸é¿¡¼ ¿À¹ö·¹À̵˴ϴÙ.
Ç÷¯±×ÀÎÀÌ ¾ÆÀÌÄܻӸ¸ ¾Æ´Ï¶ó ·¹À̺í ÅØ½ºÆ®¸¦ Á¶ÀÛÇØ¾ß ÇÏ´Â °æ¿ì ¶Ç´Â ¾ÆÀÌÄÜÀÇ À¯ÇüÀÌ µ¿ÀûÀ¸·Î °áÁ¤µÇ´Â °æ¿ì, ºñ¼±¾ðÀûÀÎ °£´ÜÇÑ µ¥ÄÚ·¹ÀÌÅ͸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, ILightweightLabelDecorator¸¦ ±¸ÇöÇÏ´Â ±¸Çö Ŭ·¡½º¸¦ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. ÁöÁ¤µÈ Ŭ·¡½º´Â ·¹ÀÌºí¿¡ Àû¿ëµÇ´Â ·±Å¸ÀÓ¿¡ Á¢µÎºÎ, Á¢¹ÌºÎ ¹× ¿À¹ö·¹ÀÌ À̹ÌÁö¸¦ Á¦°øÇØ¾ß ÇÕ´Ï´Ù. ·¹À̺í ÅØ½ºÆ®¿¡¼ Á¢µÎºÎ ¹× Á¢¹ÌºÎ¸¦ ¿¬°áÇÏ°í ¿À¹ö·¹À̸¦ ¼öÇàÇÏ´Â ¸ÞÄ¿´ÏÁòÀº ¹é±×¶ó¿îµå ½º·¹µåÀÇ Workbench ÄÚµå·Î 󸮵˴ϴÙ. µû¶ó¼ ILightweightLabelDecorator ±¸ÇöÀÇ Ç÷¯±×ÀÎÀ» ÅëÇØ ¼öÇàµÈ ÀÛ¾÷Àº UI ½º·¹µå¿¡ ¾ÈÀüÇØ¾ß ÇÕ´Ï´Ù. (ÀÚ¼¼ÇÑ ³»¿ëÀº ºñUI ½º·¹µå¿¡¼ ÄÚµå ½ÇÇà ÂüÁ¶.)
´ÙÀ½ ¸¶Å©¾÷¿¡¼´Â ÀÌ ±â¼úÀ» »ç¿ëÇÏ¿© CVS Ŭ¶óÀÌ¾ðÆ®°¡ ÇØ´ç µ¥ÄÚ·¹ÀÌÅ͸¦ Á¤ÀÇÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.
<extension point="org.eclipse.ui.decorators"> <decorator objectClass="org.eclipse.core.resources.IResource" adaptable="true" label="%DecoratorStandard.name" state="false" lightweight= "true" quadrant = "BOTTOM_RIGHT" class="org.eclipse.team.internal.ccvs.ui.CVSLightweightDecorator" id="org.eclipse.team.cvs.ui.decorator"> <description> %DecoratorStandard.desc </description> </decorator> </extension>
µ¥ÄÚ·¹ÀÌÅÍ´Â ÃÖÁ¾ÀûÀ¸·Î Workbench ·¹ÀÌºí µ¥ÄÚ·¹ÀÌ¼Ç È¯°æ ¼³Á¤ ÆäÀÌÁö¸¦ ÅëÇØ »ç¿ëÀÚ¿¡ ÀÇÇØ Á¦¾îµË´Ï´Ù. °³º° µ¥ÄÚ·¹ÀÌÅ͸¦ ÄÑ°í ²ø ¼ö ÀÖ½À´Ï´Ù. ±×·¯ÇÑ °æ¿ì¿¡µµ ±âÁ¸ Ç÷§Æû SDK µ¥ÄÚ·¹ÀÌÅÍ¿Í ¿À¹ö·¦µÇ°Å³ª Ãæµ¹ÇÏÁö ¾Êµµ·Ï »ç¿ëÀÚ µ¥ÄÚ·¹ÀÌÅ͸¦ µðÀÚÀÎÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. º¹¼ö Ç÷¯±×ÀÎÀÌ µ¿ÀÏÇÑ 4ºÐ¸é¿¡ °£´ÜÇÑ µ¥ÄÚ·¹ÀÌÅ͸¦ Á¦°øÇÏ´Â °æ¿ì Ãæµ¹Àº ºñ°áÁ¤ÀûÀ¸·Î ÇØ°áµË´Ï´Ù.
Ç÷¯±×ÀÎÀÌ ¸ðµç À̹ÌÁö ¹× ÀÚü ·¹ÀÌºí °ü¸®¸¦ ¼öÇàÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì lightweight ¼Ó¼ºÀº false·Î ¼³Á¤µÇ¾î¾ß Çϰí class ¼Ó¼ºÀº ILabelDecoratorÀ» ±¸ÇöÇϴ Ŭ·¡½º¸¦ À̸§ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ Å¬·¡½º¸¦ »ç¿ëÇÏ¿© ¿ø·¡ ·¹À̺íÀÇ À̹ÌÁö¿Í ÅØ½ºÆ®¸¦ »ç¿ëÀÚ °íÀ¯ÀÇ ¾î³ëÅ×À̼ÇÀ¸·Î µ¥ÄÚ·¹ÀÌÆ®ÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ Á¢µÎºÎ, Á¢¹ÌºÎ ¹× ´Ü¼ø 4ºÐ¸é ¿À¹ö·¹ÀÌ¿¡ Á¦ÇѵÇÁö ¾ÊÀ¸¹Ç·Î, À¶Å뼺ÀÌ Áõ°¡ÇÕ´Ï´Ù.
µ¥ÄÚ·¹ÀÌÅÍÀÇ ±âŸ ¼Ó¼ºÀº ƯÁ¤ ±¸Çö ½ºÅ¸ÀÏ¿¡ µ¶¸³ÀûÀÔ´Ï´Ù. label ¹× description ¼Ó¼ºÀº ȯ°æ ¼³Á¤ ´ëÈ »óÀÚÀÇ µ¥ÄÚ·¹ÀÌÅÍ À̸§À» ÁöÁ¤ÇÏ°í ¼³¸íÇÏ´Â µ¥ »ç¿ëµÇ´Â ÅØ½ºÆ®¸¦ ÁöÁ¤ÇÕ´Ï´Ù. objectClass´Â µ¥ÄÚ·¹ÀÌÅͰ¡ Àû¿ëµÇ¾î¾ß ÇÒ ¿ÀºêÁ§Æ®ÀÇ Å¬·¡½º¿¡ À̸§À» ÁöÁ¤ÇÕ´Ï´Ù. enablement ¼Ó¼ºÀ» »ç¿ëÇÏ¿© ¿ÀºêÁ§Æ®°¡ µ¥ÄÚ·¹ÀÌÆ®µÇ¾î¾ß ÇÒ Á¶°ÇÀ» ¼³¸íÇÒ ¼ö ÀÖ½À´Ï´Ù. adaptable Ç÷¡±×´Â IResource¿¡ ÀûÀÀµÇ´Â ¿ÀºêÁ§Æ®µµ µ¥ÄÚ·¹ÀÌÆ® ¿©ºÎ¸¦ ³ªÅ¸³À´Ï´Ù. state Ç÷¡±×´Â µ¥ÄÚ·¹ÀÌÅͰ¡ ±âº»ÀûÀ¸·Î Ç¥½Ã ¿©ºÎ¸¦ Á¦¾îÇÕ´Ï´Ù.
µ¥ÄÚ·¹ÀÌÅͰ¡ ¿¬»êÇÏ´Â µ¥ ½Ã°£ÀÌ ¸¹ÀÌ °É¸®°Å³ª È¥¶õ½º·± Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â °æ¿ì »ç¿ëÀÚ´Â ¼³Á¤µÇ¾î ÀÖ´Â µ¥ÄÚ·¹ÀÌÅ͸¦ ¼¼¹ÐÇÏ°Ô Á¶Á¤ÇÒ ¼ö ÀÖµµ·Ï ÀÚü ȯ°æ ¼³Á¤À» Á¦°øÇÏ·Á ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ±â¹ýÀº CVS Ŭ¶óÀÌ¾ðÆ®¿¡¼ »ç¿ëµË´Ï´Ù.
µ¥ÄÚ·¹ÀÌÅÍ °»½Å ÁÖ±â
µ¥ÄÚ·¹À̼ÇÀº DecoratorManager¸¦ »ç¿ëÇÏ¿© µ¥ÄÚ·¹À̼ÇÀ» Á¦°øÇÏ´Â ·¹À̺í Á¦°øÀÚ¸¦ »õ·Î °íÃļ ½ÃÀ۵˴ϴÙ. µ¥ÄÚ·¹ÀÌ¼Ç Ã³¸®°¡ ¹è°æ¿¡¼ ¼öÇàµÇ´Â µ¿¾È ·¹À̺íÀÌ ¿äûµÇ´Â ½Ã°£°ú µ¥ÄÚ·¹ÀÌ¼Ç °è»ê¿¡ ÀÇÇØ ¼Ò¿äµÉ labelProviderChanged À̺¥Æ®°¡ ¸¸±âµÇ´Â ½Ã°£ »çÀÌ¿¡ ±â°£ÀÌ ÀÖ½À´Ï´Ù. ÀÌ ½Ã°£ µ¿¾È ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ µ¥ÄÚ·¹À̼ÇÀº È¿À²¼º ÀÌÀ¯ ¶§¹®¿¡ ÇÑ ¹ø¸¸ °è»êµË´Ï´Ù. µ¥ÄÚ·¹ÀÌÅͰ¡ ÀÌ ½Ã°£ µ¿¾È º¯°æµÇ´Â °æ¿ì, ¿ä¼Ò¸¦ µ¥ÄÚ·¹ÀÌÆ®Çϱâ À§ÇÑ µÎ ¹øÂ° ¹× ÈÄ¼Ó È£ÃâÀÌ ¹«½ÃµÇ¹Ç·Î ÀÌÀü °á°ú°¡ ºê·Îµåij½ºÆ®µÉ ¼ö ÀÖ½À´Ï´Ù.
µ¥ÄÚ·¹ÀÌÅÍ Á¦°øÀÚ´Â µ¥ÄÚ·¹À̼ÇÀÌ ¹ß»ýÇÏ´Â Áß¿¡´Â µ¥ÄÚ·¹ÀÌÅÍ º¯°æÀ» ÇÇÇØ¾ß ÇÕ´Ï´Ù. À̰ÍÀÌ ºÒ°¡´ÉÇÑ °æ¿ì labelProviderChanged°¡ ó¸®µÈ ÈÄ ¿ä¼Ò¸¦ µ¥ÄÚ·¹ÀÌÆ®ÇÏ´Â µÎ ¹øÂ° È£ÃâÀÌ ÇÊ¿äÇÏ°Ô µË´Ï´Ù.