ÆíÁý±â´Â »ç¿ëÀÚ°¡ ¿ÀºêÁ§Æ®(´ë°³´Â ÆÄÀÏ)¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â 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="Readme File Editor"
icon="icons/basic/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¿¡ ´ëÇØ¼µµ Àͼ÷ÇÑ ±¸¼º ¸¶Å©¾÷ÀÌ Ç¥½ÃµË´Ï´Ù. contributorClass¿¡´Â »õ·Î¿î Ç׸ñµµ ÀÖ½À´Ï´Ù.
Áö½ÃÀÚ Å¬·¡½º´Â Á¶Ä¡¿Í °ü·ÃµÈ ÆíÁý±â¸¦ Workbench ¸Þ´º¿Í µµ±¸ ¸ðÀ½¿¡ Ãß°¡Çϰí, IEditorActionBarContributor ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù. Workbench ÆäÀÌÁö¿¡ °°Àº À¯ÇüÀÇ ÆíÁý±â°¡ ¿©·¯ °³ ÀÖÀ» °æ¿ì Áö½ÃÀÚ´Â ÆíÁý±â ÀÚü¿Í ±¸ºÐµË´Ï´Ù. ÆíÁý±â À¯ÇüÀÇ °¢ ÀνºÅϽº¸¦ °¡ÁöÁö ¸»°í Á¶Ä¡¿Í À̹ÌÁö¸¦ ÀÛ¼ºÇϽʽÿÀ. ´ÜÀÏ Áö½ÃÀÚ¸¦ ƯÁ¤ À¯ÇüÀÇ ¸ðµç ÆíÁý±â¿¡¼ °øÀ¯ÇÕ´Ï´Ù.
ReadmeEditorActionBarContributor¿¡¼´Â ¼¼ °¡Áö Á¶Ä¡, "Editor Action1", "Editor Action2" ¹× "Editor Action3"À» Á¦°øÇÕ´Ï´Ù. ÀÌ Á¶Ä¡´Â »ý¼ºÀÚ¿¡¼ ¼³Á¤µË´Ï´Ù.
public ReadmeEditorActionBarContributor() {
...
action1 = new EditorAction("&Editor Action1");
action1.setToolTipText("Readme Editor Action1");
action1.setImageDescriptor(ReadmeImages.EDITOR_ACTION1_IMAGE);
...
action2 = new EditorAction("&Editor Action2");
action2.setToolTipText("Readme Editor Action2");
action2.setImageDescriptor(ReadmeImages.EDITOR_ACTION2_IMAGE);
...
action3 = new EditorAction("&Editor Action3");
action3.setToolTipText("Readme Editor Action3");
action3.setImageDescriptor(ReadmeImages.EDITOR_ACTION3_IMAGE);
...
}
Á¶Ä¡ÀÇ À̸§°ú ¾ÆÀÌÄÜÀº plugin.xmlÀÌ ¾Æ´Ñ Äڵ忡 ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. º¸±â Á¶Ä¡ÀÇ ¸¶Å©¾÷¿¡¼ º¸¾Ò´ø viewActions Á¤º¸¿Í ÀÌ Á¤º¸°¡ ¾ó¸¶³ª À¯»çÇÑÁö È®ÀÎÇϽʽÿÀ. °°Àº ÆíÁý±âÀÇ ´Ù¸¥ ÀνºÅϽº »çÀÌ¿¡¼ Á¶Ä¡ °øÀ¯¸¦ °ü¸®ÇØ¾ß Çϱ⠶§¹®¿¡ Á¶Ä¡´Â Äڵ忡 ¼³Á¤µË´Ï´Ù.
Á¶Ä¡°¡ »ý¼ºÀÚ¿¡¼ ¸¸µé¾îÁ³±â ¶§¹®¿¡ Á¶Ä¡´Â ÆíÁý±âÀÇ Æ¯Á¤ ÀνºÅϽº¿¡ µ¶¸³ÀûÀÔ´Ï´Ù. ÆíÁý±â°¡ Ȱ¼ºÈµÇ°í Workbench ¸Þ´º¿Í µµ±¸ ¸ðÀ½¿¡ Á¶Ä¡¸¦ ¼³Á¤ÇØ¾ß ÇÒ °æ¿ì setActiveEditor ¸Þ½ÃÁö°¡ Áö½ÃÀÚ¿¡°Ô º¸³»Áý´Ï´Ù. Áö½ÃÀÚ´Â ÆíÁý±â Á¶Ä¡¸¦ ƯÁ¤ ÆíÁý±â¿¡ ¿¬°áÇÕ´Ï´Ù.
public void setActiveEditor(IEditorPart editor) {
...
action1.setActiveEditor(editor);
action2.setActiveEditor(editor);
action3.setActiveEditor(editor);
...
}
À§¿¡¼ º¼ ¼ö ÀÖµíÀÌ readme ÆíÁý±â°¡ Ȱ¼ºÈµÈ °æ¿ì Workbench ¸Þ´º¿Í µµ±¸ ¸ðÀ½¿¡ Á¶Ä¡°¡ Ç¥½ÃµË´Ï´Ù.
ÆíÁý±â°¡ Ȱ¼ºÈµÈ °æ¿ì¿¡¸¸ ÀÌ ¸Þ´º¿Í µµ±¸ ¸ðÀ½ Ç׸ñÀÌ Ç¥½ÃµË´Ï´Ù. ¸Þ´º¿Í µµ±¸ ¸ðÀ½ Ç׸ñÀÇ À§Ä¡´Â ¸Þ´º ¹× µµ±¸ ¸ðÀ½ °æ·Î¿¡¼ ¼³¸íÇÑ ´ë·Î ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
readme ÆíÁý±âÀÎ ReadmeEditor´Â Å©°Ô º¹ÀâÇÏÁö ¾Ê½À´Ï´Ù. ¿©±â¼´Â TextEditor Ŭ·¡½º¸¦ È®ÀåÇÏ¿© readme ÆÄÀÏÀ» ÆíÁýÇÒ °æ¿ì »ç¿ëÀÚ Á¤ÀÇÇÑ ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê ÆäÀÌÁö¸¦ ¾Æ¿ô¶óÀÎ º¸±â¿¡ Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹®¼ ÆíÁý±â ³»ÀÇ ÀÛµ¿À» º¯°æÇÏÁö ¾Ê½À´Ï´Ù.
ÆíÁý±â¿¡´Â ÆíÁý±â ÄÁÅÙÃ÷ÀÇ ±¸Á¶ÈµÈ º¸±â¸¦ Á¦°øÇÏ°í »ç¿ëÀÚ°¡ ÆíÁý±âÀÇ ÄÁÅÙÃ÷¸¦ Ž»öÇÏ´Â °ÍÀ» Áö¿øÇÏ´Â ÇØ´ç ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʰ¡ ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʸ¦ ÂüÁ¶ÇϽʽÿÀ.
¹®¼ ÆíÁý±â ¹× JFace ÅØ½ºÆ®¿¡ ¹®¼ ÆíÁý±âÀÇ ±¸ÇöÀÌ Ç¥½ÃµË´Ï´Ù.