¸í·ÉÀº IDº° »ç¿ëÀÚ Á¶Ä¡ÀÇ ¼±¾ðÀÔ´Ï´Ù. Á¶Ä¡ ¼¼Æ® ¹× ÆíÁý±â¿¡¼ Á¤ÀÇµÈ Á¶Ä¡ ±¸ÇöÀÌ Æ¯Á¤ Àǹ̻óÀÇ ¸í·É°ú ¿¬°üµÉ ¼ö ÀÖµµ·Ï ¸í·ÉÀÌ Àǹ̻óÀÇ Á¶Ä¡¸¦ ¼±¾ðÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. Á¶Ä¡ ±¸Çö¿¡¼ ¸í·ÉÀÇ ºÐ¸®¸¦ »ç¿ëÇÏ¿© º¹¼ö Ç÷¯±×ÀÎÀº µ¿ÀÏÇÑ Àǹ̻óÀÇ ¸í·ÉÀ» ±¸ÇöÇÏ´Â Á¶Ä¡¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸í·ÉÀº ƯÁ¤ Ű ¹ÙÀεù°ú ¿¬°üµÇ´Â °ÍÀÔ´Ï´Ù.
Workbench´Â plugin.xml ÆÄÀÏ¿¡ ¸¹Àº °øÅë ¸í·ÉÀ» Á¤ÀÇÇϸç ÀûÀýÇÑ °æ¿ì Ç÷¯±×ÀÎÀÌ ÀÚü Á¶Ä¡¸¦ ÀÌ ¸í·É¿¡ ¿¬°ü½Ã۵µ·Ï ±ÇÀåµË´Ï´Ù. ÀÌ·± ¹æ½ÄÀ¸·Î ´Ù¸¥ Ç÷¯±×Àο¡¼ ±¸ÇöµÈ Àǹ̰¡ ºñ½ÁÇÑ Á¶Ä¡´Â °°Àº Ű ¹ÙÀεùÀ» °øÀ¯ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸í·ÉÀº org.eclipse.ui.commands È®ÀåÁ¡À» »ç¿ëÇÏ¿© Á¤ÀÇÇÕ´Ï´Ù. µðÀ½Àº Workbench ¸¶Å©¾÷¿¡¼ ´Ù·ì´Ï´Ù.
<extension point="org.eclipse.ui.commands"> ... <command category="org.eclipse.ui.category.file" name="%command.close.name" description="%command.close.description" id="org.eclipse.ui.file.close"> </command> <command category="org.eclipse.ui.category.file" name="%command.closeAll.name" description="%command.closeAll.description" id="org.eclipse.ui.file.closeAll"> </command> <command category="org.eclipse.ui.category.file" name="%command.save.name" icon="icons/full/ctool16/save_edit.gif" description="%command.save.description" id="org.eclipse.ui.file.save"> </command> ...
¸í·É Á¤ÀÇ´Â Á¶Ä¡ÀÇ À̸§, ¼³¸í ¹× ID¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ¶ÇÇÑ ¸í·É Á¤ÀÇ´Â ¸í·É¿¡ ´ëÇÑ Ä«Å×°í¸®¸¦ ÁöÁ¤ÇÏ¿©, ȯ°æ ¼³Á¤ ´ëÈ »óÀÚ¿¡¼ ¸í·ÉÀ» ±×·ìÈÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù. Ä«Å×°í¸®µµ org.eclipse.ui.commands È®ÀåÁ¡¿¡¼ Á¤Àǵ˴ϴÙ.
... <category name="%category.file.name" description="%category.file.description" id="org.eclipse.ui.category.file"> </category> ...
¸í·É¿¡ ÁöÁ¤µÈ ±¸ÇöÀÌ ¾øÀ½À» ÁÖÀÇÇϽʽÿÀ. ¸í·ÉÀº Ç÷¯±×ÀÎÀÌ ÇØ´ç Á¶Ä¡¿Í ¸í·É ID¸¦ ¿¬°üÇÒ ¶§¸¸ ±¸Ã¼ÈµË´Ï´Ù.
Á¶Ä¡´Â Á¶Ä¡ ¼¼Æ®ÀÇ plugin.xml ¶Ç´Â Äڵ忡¼ ¸í·É¿¡ ¿¬°üµÉ ¼ö ÀÖ½À´Ï´Ù. Á¶Ä¡°¡ Á¤ÀÇµÈ À§Ä¡¿¡ µû¶ó ¼±ÅÃÀÌ ´Þ¶óÁý´Ï´Ù.
¶ÇÇÑ Äڵ忡¼ ÀνºÅϽºÈµÈ Á¶Ä¡´Â IAction ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© Á¶Ä¡ Á¤ÀÇ¿¡ ¿¬°üµÉ ¼ö ÀÖ½À´Ï´Ù. ÀϹÝÀûÀ¸·Î ÀÌ ÀÛ¾÷Àº Á¶Ä¡°¡ ÀÛ¼ºµÉ ¶§ ¼öÇàµË´Ï´Ù. WorkbenchActionBuilder¿¡¼´Â ÀÌ ±â¹ýÀ» »ç¿ëÇÏ¿© Á¶Ä¡¸¦ ÃʱâÈÇÕ´Ï´Ù.
private void makeActions() { ... saveAction = new SaveAction(window); saveAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_CTOOL_SAVE_EDIT)); saveAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_CTOOL_SAVE_EDIT_HOVER)); saveAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_CTOOL_SAVE_EDIT_DISABLED)); partService.addPartListener(saveAction); saveAction.setActionDefinitionId(saveActionDefId); ...
Âü°í: ¸Þ¼Òµå À̸§ setActionDefinitionID ´Â setCommandID¶ó´Â ´õ¿í ÀûÀýÇÑ À̸§À¸·Î ÁöÁ¤µÉ ¼ö ÀÖ½À´Ï´Ù. ¸Þ¼Òµå À̸§Àº Ű ¹ÙÀεùÀÇ ¿ø·¡ Ű ±¸ÇöÀ» ¹Ý¿µÇϰí ÀÌÀüÀÇ ¿ë¾î¸¦ »ç¿ëÇÕ´Ï´Ù.
setActionDefinitionID¸¦ È£ÃâÇÏ¿© ±¸Çö Á¶Ä¡(SaveAction)°¡ ¸í·É ID saveActionDefId¿Í ¿¬°üµË´Ï´Ù. saveActionDefIdÀ̶õ ¹«¾ùÀԴϱî? WorkbenchActionBuilderÀÇ Á¤Àû Çʵå Á¤ÀǸ¦ º¸·Á¸é, ´ÙÀ½À» »ìÆìº¸¸é µË´Ï´Ù.
private static final String saveActionDefId = "org.eclipse.ui.file.save";
ÀÌ »ó¼ö´Â ¸í·É Á¤ÀÇ ¸¶Å©¾÷¿¡¼ »ç¿ëµÈ ¹®ÀÚ¿ ID¸¦ Á¤ÀÇÇÕ´Ï´Ù. Äڵ忡¼ Á¶Ä¡ Á¤ÀǸ¦ ½±°Ô ÂüÁ¶ÇÏ·Á¸é Á¶Ä¡ Á¤ÀÇ¿¡ ´ëÇØ »ó¼ö¸¦ Á¤ÀÇÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
Á¶Ä¡ ¼¼Æ®¿¡ Á¶Ä¡¸¦ Á¤ÀÇÇÏ´Â °æ¿ì ÀϹÝÀûÀ¸·Î Á¶Ä¡¸¦ Á÷Á¢ ÀνºÅϽºÈÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ¸Þ´º ¶Ç´Â Űº¸µå¿¡¼ Á¶Ä¡¸¦ È£ÃâÇϸé Workbench°¡ ÀÚµ¿À¸·Î ÀνºÅϽºÈ¸¦ ¼öÇàÇÕ´Ï´Ù. ÀÌ·± °æ¿ì XML ¸¶Å©¾÷¿¡¼ Á¶Ä¡¸¦ ¸í·É ID¿Í ¿¬°ü½Ãų ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½Àº Á¶Ä¡ ¼¼Æ®¿¡ ´ëÇÑ À̷лóÀÇ ¸¶Å©¾÷À» º¸¿©ÁÝ´Ï´Ù.
<extension point = "org.eclipse.ui.actionSets"> <actionSet id="com.example.actions.actionSet" label="Example Actions" visible="true"> <action id="com.example.actions.action1" menubarPath="additions" label="Example Save Action" class="org.example.actions.ExampleActionDelegate" definitionID="org.eclipse.ui.file.save"> </action> ... </actionSet> </extension>
definitionID ¼Ó¼ºÀ» »ç¿ëÇÏ¿© Á¶Ä¡¿¡ ´ëÇÑ ¸í·ÉÀ» ¼±¾ðÇÕ´Ï´Ù.
µÎ ¹æ¹ý Áß Çϳª¸¦ »ç¿ëÇÏ¿© Á¶Ä¡¸¦ ¸í·É¿¡ ¿¬°áÇÏ¸é ¸í·É org.eclipse.ui.file.save¿¡ ´ëÇØ Á¤ÀÇµÈ Å° ¹ÙÀεùÀÌ ÀûÀýÇÑ ¶§¿¡ Á¶Ä¡¸¦ È£ÃâÇÕ´Ï´Ù.
ÀÌÁ¦ ÀÌ·¯ÇÑ Å° ¹ÙÀεùÀ» Á¤ÀÇÇÏ´Â ¹æ¹ýÀ» »ìÆìº¾´Ï´Ù.