ÆíÁý±â´Â »ç¿ëÀÚ°¡ ¿ÀºêÁ§Æ®(´ë°³´Â ÆÄÀÏ)¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â Workbench ÆÄÆ®ÀÔ´Ï´Ù. ÆíÁý±â´Â Ç÷§Æû Workbench UI¿¡ ±ä¹ÐÇÏ°Ô ÅëÇյǾî ÀÖ´Ù´Â Á¡À» Á¦¿ÜÇϰí´Â ÆÄÀÏ ½Ã½ºÅÛ ÆíÁý µµ±¸¿Í ºñ½ÁÇÑ ¹æ½ÄÀ¸·Î ÀÛµ¿ÇÕ´Ï´Ù. ÆíÁý±â´Â Ç×»ó ÀÔ·Â ¿ÀºêÁ§Æ®(IEditorInput)¿Í ¿¬°üµÇ¾î ÀÖ½À´Ï´Ù. ÀÔ·Â ¿ÀºêÁ§Æ®¸¦ ÆíÁýµÇ´Â ¹®¼³ª ÆÄÀÏ·Î »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆíÁý±â¿¡¼ ¼öÇàÇÑ º¯°æ»çÇ×Àº À̸¦ ÀúÀåÇÑ °æ¿ì¿¡¸¸ Àû¿ëµË´Ï´Ù.
Workbench ÆäÀÌÁöÀÇ Æ¯Á¤ ÆíÁý±â ÀԷ¿¡ ´ëÇØ ÇϳªÀÇ ÆíÁý±â¸¸ ¿ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, »ç¿ëÀÚ°¡ Workbench¿¡¼ readme.txt¸¦ ÆíÁýÇÒ °æ¿ì °°Àº Perspective¿¡¼ ´Ù½Ã ¿¸é °°Àº ÆíÁý±â°¡ Ȱ¼ºÈµË´Ï´Ù. ´Ù¸¥ Workbench âÀ̳ª Perspective¿¡¼ µ¿ÀÏÇÑ ÆÄÀÏ¿¡ ´ëÇØ ´Ù¸¥ ÆíÁý±â¸¦ ¿ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª º¸±â¿Í´Â ´Þ¸® ´Ù¸¥ ÀԷ¿¡ ´ëÇØ ÇϳªÀÇ Workbench ÆäÀÌÁö¿¡¼ °°Àº ÆíÁý±â À¯Çü(¿¹: ¹®¼ ÆíÁý±â)À» ¿©·¯ ¹ø ¿ ¼ö ÀÖ½À´Ï´Ù.
Ç÷¯±×Àο¡¼´Â Workbench È®ÀåÁ¡ org.eclipse.ui.editors¸¦ »ç¿ëÇÏ¿© ÆíÁý±â¸¦ Workbench¿¡ Ãß°¡ÇÕ´Ï´Ù. ÆíÁý±â¸¦ Á¦°øÇÏ´Â Ç÷¯±×Àο¡¼´Â ÀÚ½ÅÀÇ plugin.xml ÆÄÀÏ¿¡ ÆíÁý±â¿¡ ´ëÇÑ ±¸¼º Á¤º¸¿Í ÇÔ²² ÆíÁý±â È®ÀåÀ» µî·ÏÇØ¾ß ÇÕ´Ï´Ù. Workbench ¸Þ´º¿Í ·¹ÀÌºí¿¡¼ »ç¿ëµÉ À̸§°ú ¾ÆÀÌÄÜ ¹× ±¸Çö Ŭ·¡½º °°Àº ÀϺΠÆíÁý±â Á¤º¸´Â º¸±â Á¤º¸¿Í À¯»çÇÕ´Ï´Ù. ±×¸®°í ÆíÁý±â È®Àå¿¡¼´Â ÆíÁý±â¿¡¼ ÀÌÇØÇÏ´Â ÆÄÀÏÀÇ ÆÄÀÏ È®ÀåÀÚ³ª ÆÄÀÏ À̸§ ÆÐÅÏÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÆíÁý±â°¡ Ȱ¼ºÈµÈ °æ¿ì ÆíÁý±â´Â Workbench ¸Þ´º¿Í µµ±¸ ¸ðÀ½¿¡ Á¶Ä¡¸¦ Ãß°¡Çϴ Ŭ·¡½ºÀÎ contributorClass¸¦ Á¤ÀÇÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
ÆíÁý±â¿ë ÀÎÅÍÆäÀ̽º´Â IEditorPart¿¡ Á¤ÀǵǾî ÀÖÁö¸¸ Ç÷¯±×Àο¡¼´Â óÀ½ºÎÅÍ IEditorPart¸¦ ±¸ÇöÇÏ´Â ´ë½Å EditorPart Ŭ·¡½º¸¦ È®ÀåÇÒ °ÍÀ» ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
Âü°í: ¿ÜºÎ ÇÁ·Î±×·¥À» ½ÇÇàÇϰųª ±âÁ¸ Java Äڵ带 È£ÃâÇϵµ·Ï ÆíÁý±â È®ÀåÀ» ±¸¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ ¼³¸í¿¡¼ IEditorPart¸¦ »ç¿ëÇÏ¿© ±¸ÇöµÇ°í Workbench¿¡ ½ÇÁ¦·Î ±ä¹ÐÇÏ°Ô ÅëÇÕµÈ ÆíÁý±â¿¡ ÃÊÁ¡À» ¸ÂÃß°í ÀÖ½À´Ï´Ù.
readme µµ±¸¿¡¼´Â ÁÖ·Î ÀÚ½ÅÀÇ ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê ÆäÀÌÁö¸¦ Workbench ¾Æ¿ô¶óÀÎ º¸±â¿¡ Á¦°øÇϱâ À§ÇÑ »ç¿ëÀÚ Á¤ÀÇ ÆíÁý±â¸¦ Á¦°øÇÕ´Ï´Ù.
ÆíÁý±â È®Àå¿¡ ´ëÇÑ ±¸¼ºÀº ´ÙÀ½°ú °°ÀÌ Á¤Àǵ˴ϴÙ.
<extension point = "org.eclipse.ui.editors"> <editor id = "org.eclipse.ui.examples.readmetool.ReadmeEditor" name="%Editors.ReadmeEditor" icon="icons/obj16/editor.gif" class="org.eclipse.ui.examples.readmetool.ReadmeEditor" extensions="readme" contributorClass="org.eclipse.ui.examples.readmetool.ReadmeEditorActionBarContributor"> </editor> </extension>
ID, name, icon ¹× class¿¡ ´ëÇØ Àͼ÷ÇÑ ±¸¼º ¸¶Å©¾÷À» º¼ ¼ö ÀÖ½À´Ï´Ù. extensions ¼Ó¼ºÀº ÆíÁý±â°¡ ÀÌÇØÇÏ´Â ÆÄÀÏ À¯ÇüÀ» ¼³¸íÇÕ´Ï´Ù. ¶ÇÇÑ ´õ ±¸Ã¼ÀûÀ¸·Î ÁöÁ¤ÇØ¾ß ÇÒ °æ¿ì filenamesµµ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. class´Â ÆíÁý±â¸¦ ±¸ÇöÇϸç contributorClass´Â ÆíÁý±â °ü·Ã Á¶Ä¡¸¦ Á¦°øÇÕ´Ï´Ù. ÀÌÁ¦ Á» ´õ ÀÚ¼¼È÷ Áö½ÃÀÚ¸¦ »ìÆìº¾´Ï´Ù.
Áö½ÃÀÚ Å¬·¡½º´Â ÆíÁý±â °ü·Ã Á¶Ä¡¸¦ Workbench ¸Þ´º¿Í µµ±¸ ¸ðÀ½¿¡ Ãß°¡ÇÕ´Ï´Ù. ÀÌ Å¬·¡½º´Â IEditorActionBarContributor ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù. ÁÖ¾îÁø Workbench ÆäÀÌÁö°¡ °°Àº À¯ÇüÀÇ ÆíÁý±â ¿©·¯ °³¸¦ Æ÷ÇÔÇÒ ¼ö ÀÖÀ¸¹Ç·Î Áö½ÃÀÚ´Â ÆíÁý±â¿Í ºÐ¸®µË´Ï´Ù. ÆíÁý±âÀÇ °¢ ÀνºÅϽº°¡ Á¶Ä¡¿Í À̹ÌÁö¸¦ ÀÛ¼ºÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ´ÜÀÏ Áö½ÃÀÚ¸¦ ƯÁ¤ À¯ÇüÀÇ ¸ðµç ÆíÁý±â¿¡¼ °øÀ¯ÇÕ´Ï´Ù.
ReadmeEditorActionBarContributor¿¡¼´Â ¼¼ °¡Áö Á¶Ä¡, "Editor Action1", "Editor Action2" ¹× "Editor Action3"À» Á¦°øÇÕ´Ï´Ù. ÀÌ Á¶Ä¡´Â »ý¼ºÀÚ¿¡¼ ¼³Á¤µË´Ï´Ù.
public ReadmeEditorActionBarContributor() { ... action1 = new EditorAction(MessageUtil.getString("Editor_Action1")); action1.setToolTipText(MessageUtil.getString("Readme_Editor_Action1")); action1.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_DISABLE); action1.setImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE_ENABLE); ... action2 = new RetargetAction(IReadmeConstants.RETARGET2, MessageUtil.getString("Editor_Action2")); action2.setToolTipText(MessageUtil.getString("Readme_Editor_Action2")); action2.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_DISABLE); action2.setImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE_ENABLE); ... action3 = new LabelRetargetAction(IReadmeConstants.LABELRETARGET3, MessageUtil.getString("Editor_Action3")); action3.setDisabledImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_DISABLE); action3.setImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE_ENABLE); ... }
Á¶Ä¡ÀÇ À̸§°ú ¾ÆÀÌÄÜÀº plugin.xmlÀÌ ¾Æ´Ï¶ó Äڵ忡¼ ¼³Á¤µË´Ï´Ù. »õ·Î ´ë»ó ÁöÁ¤ °¡´ÉÇÑ Á¶Ä¡°¡ Ç¥½ÃµÉ ¶§±îÁö Á¶Ä¡ Ŭ·¡½ºÀÇ Â÷À̸¦ ¹«½ÃÇÕ´Ï´Ù.
º¸±â Á¶Ä¡¿¡ ´ëÇØ ¸¶Å©¾÷¿¡¼ º¸¾Ò´ø viewActions Á¤º¸¿Í Á¶Ä¡ Á¤º¸°¡ ¾ó¸¶³ª À¯»çÇÑÁö È®ÀÎÇϽʽÿÀ. µ¿ÀÏÇÑ ÆíÁý±âÀÇ ¼·Î ´Ù¸¥ ÀνºÅϽº »çÀÌ¿¡¼ Á¶Ä¡ °øÀ¯¸¦ °ü¸®ÇØ¾ß Çϱ⠶§¹®¿¡ Á¶Ä¡´Â Äڵ忡 ¼³Á¤µË´Ï´Ù. Á¶Ä¡°¡ »ý¼ºÀÚ¿¡¼ ÀÛ¼ºµÉ °æ¿ì ÆíÁý±âÀÇ Æ¯Á¤ ÀνºÅϽº¿¡ µ¶¸³ÀûÀÔ´Ï´Ù.
ÆíÁý±â°¡ Ȱ¼ºÈµÇ°í Workbench ¸Þ´º¿Í µµ±¸ ¸ðÀ½¿¡ ¼³Ä¡µÇ¾î¾ß ÇÏ´Â Á¶Ä¡°¡ ÆíÁý±â¿¡ ÀÖ´Â °æ¿ì setActiveEditor ¸Þ½ÃÁö°¡ Áö½ÃÀÚ¿¡°Ô Àü¼ÛµË´Ï´Ù. Áö½ÃÀÚ´Â ÆíÁý±â Á¶Ä¡¸¦ ƯÁ¤ ÆíÁý±â¿¡ ¿¬°áÇÕ´Ï´Ù.
public void setActiveEditor(IEditorPart editor) { ... action1.setActiveEditor(editor); ... }
À§¿¡¼ º¼ ¼ö ÀÖµíÀÌ readme ÆíÁý±â°¡ Ȱ¼ºÈµÈ °æ¿ì Workbench ¸Þ´º¿Í µµ±¸ ¸ðÀ½¿¡ Á¶Ä¡°¡ Ç¥½ÃµË´Ï´Ù.
ÆíÁý±â°¡ Ȱ¼ºÈµÈ °æ¿ì¿¡¸¸ ÀÌ ¸Þ´º¿Í µµ±¸ ¸ðÀ½ Ç׸ñÀÌ Ç¥½ÃµË´Ï´Ù. ¸Þ´º¿Í µµ±¸ ¸ðÀ½ Ç׸ñÀÇ À§Ä¡´Â ¸Þ´º ¹× µµ±¸ ¸ðÀ½ °æ·Î¿¡¼ ¼³¸íÇÑ ´ë·Î ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
readme ÆíÁý±âÀÎ ReadmeEditor´Â Å©°Ô º¹ÀâÇÏÁö ¾Ê½À´Ï´Ù. ¿©±â¼´Â TextEditor Ŭ·¡½º¸¦ È®ÀåÇÏ¿© readme ÆÄÀÏÀ» ÆíÁýÇÒ °æ¿ì »ç¿ëÀÚ Á¤ÀÇÇÑ ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê ÆäÀÌÁö¸¦ ¾Æ¿ô¶óÀÎ º¸±â¿¡ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹®¼ ÆíÁý±â ³»ÀÇ ÀÛµ¿À» º¯°æÇÏÁö ¾Ê½À´Ï´Ù.
ÆíÁý±â¿¡´Â ÆíÁý±â ÄÁÅÙÃ÷ÀÇ ±¸Á¶ÈµÈ º¸±â¸¦ Á¦°øÇÏ°í »ç¿ëÀÚ°¡ ÆíÁý±âÀÇ ÄÁÅÙÃ÷¸¦ Ž»öÇÏ´Â °ÍÀ» Áö¿øÇÏ´Â ÇØ´ç ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʰ¡ ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʸ¦ ÂüÁ¶ÇϽʽÿÀ.
¹®¼ ÆíÁý±â ¹× Ç÷§Æû ÅØ½ºÆ®¿¡ ¹®¼ ÆíÁý±âÀÇ ±¸ÇöÀÌ Ç¥½ÃµË´Ï´Ù.