¿ä¼Ò ÆÑÅ丮¸¦ »ç¿ëÇÏ¿© Workbench ½Ã½ºÅÛ Á¾·á Áß¿¡ ÀúÀåÇÑ µ¥ÀÌÅÍ¿¡¼ Workbench ¸ðµ¨ ¿ÀºêÁ§Æ®¸¦ ´Ù½Ã ÀÛ¼ºÇÕ´Ï´Ù.
¿ä¼Ò ÆÑÅ丮 È®ÀåÀ» ÀÚ¼¼È÷ »ìÆì º¸±â Àü¿¡ Ç÷¯±×Àκ° ÀÛµ¿À» °øÅë Ç÷§Æû ¸ðµ¨ ¿ÀºêÁ§Æ®¿¡ Ãß°¡ÇÏ·Á¸é Ç÷§Æû¿¡¼ »ç¿ëµÇ´Â ÀÏ¹Ý ±â¼úÀ» °ËÅäÇØ¾ß ÇÕ´Ï´Ù.
´Ù¾çÇÑ Workbench Ŭ·¡½º¸¦ ã¾Æº¸¸é ¿©·¯ Workbench ÀÎÅÍÆäÀ̽º¿¡¼ IAdaptable ÀÎÅÍÆäÀ̽º¸¦ È®ÀåÇÏ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
Ç÷¯±×Àο¡¼´Â ¾î´ðÅ͸¦ »ç¿ëÇÏ¿© ƯÁ¤ ÀÛµ¿À» ½Ã½ºÅÛÀÇ ±âÁ¸ À¯Çü¿¡ Ãß°¡ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î Workbench´Â Ç¥½ÃÇÒ ·¹ÀÌºí ¹× À̹ÌÁö¿¡ ´ëÇØ ÀÚ¿øÀÌ ÀÀ´äÇϵµ·Ï ÇÒ ¼ö ÀÖ½À´Ï´Ù. UIº° ÀÛµ¿À» ³·Àº ·¹º§ÀÇ ¿ÀºêÁ§Æ®¿¡ Ãß°¡ÇÏ´Â °ÍÀº ÁÁÀº ¼³°è°¡ ¾Æ´Õ´Ï´Ù. ±×·¸´Ù¸é ¾î¶² ¹æ¹ýÀ¸·Î ÀÌ ÀÛµ¿À» ÀÚ¿ø À¯Çü¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï±î?
Ç÷¯±×ÀÎÀº ±âÁ¸ À¯Çü¿¡ ÀÛµ¿À» Ãß°¡ÇÏ´Â ¾î´ðÅ͸¦ µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå´Â ƯÁ¤ ¾î´ðÅÍ¿¡ ´ëÇØ ¿ÀºêÁ§Æ®¸¦ Á¶È¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ÀºêÁ§Æ®¿¡ ´ëÇØ µî·ÏµÈ ¾î´ðÅͰ¡ ÀÖÀ¸¸é ÀÀ¿ëÇÁ·Î±×·¥Àº ÀÌ ¾î´ðÅ͸¦ °¡Á®¿Í¼ ¾î´ðÅÍ¿¡ Á¤ÀÇµÈ »õ ÀÛµ¿À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿ÀºêÁ§Æ®¿¡ ´ëÇØ ¾î´ðÅ͸¦ µ¿ÀûÀ¸·Î Á¶È¸ÇÏ´Â ±â´ÉÀ» Á¦°øÇÏ¿© ½Ã½ºÅÛ Çâ»ó¿¡ µû¶ó ½Ã½ºÅÛÀÇ À¶Å뼺À» Çâ»ó½Ãų ¼ö ÀÖ½À´Ï´Ù. ¿ø·¡ À¯ÇüÀÇ Á¤ÀǸ¦ º¯°æÇÏÁö ¾Ê°íµµ »õ Ç÷¯±×ÀÎÀ¸·Î Ç÷§Æû À¯Çü¿¡ »õ ¾î´ðÅ͸¦ µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ÀºêÁ§Æ®¿¡ ƯÁ¤ ¾î´ðÅ͸¦ ¿ä±¸ÇÏ´Â ÆÐÅÏÀº ´ÙÀ½°ú °°½À´Ï´Ù.
//given an object o, we want to do "workbench" things with it. if (!(o instanceof IAdaptable)) { return null; } IWorkbenchAdapter adapter = (IWorkbenchAdapter)o.getAdapter(IWorkbenchAdapter.class); if (adapter == null) return null; // now I can treat o as an IWorkbenchAdapter ...
ÇØ´ç ¿ÀºêÁ§Æ®¿¡ µî·ÏµÈ ¾î´ðÅͰ¡ ¾øÀ¸¸é ¾î´ðÅÍ·Î ³ÎÀÌ ¸®Åϵ˴ϴÙ. ÀÌ·± °æ¿ì¸¦ ó¸®ÇÒ ¼ö ÀÖ°Ô Å¬¶óÀÌ¾ðÆ®¸¦ ÁغñÇØ¾ß ÇÕ´Ï´Ù. ¿¹»óµÇ´Â ¾î´ðÅͰ¡ µî·ÏµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ìµµ ÀÖ½À´Ï´Ù.
Workbench¿¡¼´Â ¾î´ðÅ͸¦ »ç¿ëÇÏ¿© IResource¿Í °°Àº ±âº» Ç÷§Æû À¯Çü¿¡¼ UI Á¤º¸¸¦ °¡Á®¿É´Ï´Ù. ¾î´ðÅÍ´Â UIº° Áö½Ä¿¡¼ ±âº» À¯ÇüÀ» ¼û±â¹Ç·Î Workbench´Â ±âº» Á¤ÀǸ¦ º¯°æÇÏÁö ¾Ê°í ÀÎÅÍÆäÀ̽º¸¦ Çâ»ó½Ãų ¼ö ÀÖ½À´Ï´Ù.
¾î´ðÅ͸¦ »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì Workbench API¿¡¼ Àü´ÞµÇ´Â Ŭ·¡½º´Â UI ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇØ¾ß ÇϹǷΠŬ·¡½º Á¤ÀÇÀÇ ¼ö°¡ Áõ°¡ÇÏ°í ±ä¹ÐÇÑ °áÇÕÀÌ ÀÌ·ç¾îÁö°í ÄÚ¾î ¹× UI Ŭ·¡½º °£¿¡ ¼øÈ¯ Á¾¼Ó¼ºÀÌ »ý±é´Ï´Ù. ¾î´ðÅ͸¦ »ç¿ëÇÏ¿© ¸ðµç Ŭ·¡½º´Â IAdaptableÀ» ±¸ÇöÇϰí Ç÷¯±×ÀÎÀÌ ±âº» À¯ÇüÀÇ ÀÛµ¿À» È®ÀåÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ¾î´ðÅÍ ·¹Áö½ºÆ®¸®¸¦ »ç¿ëÇÕ´Ï´Ù.
Workbench Äڵ忡¼ ¾î´ðÅÍ¿¡ ´ëÇØ Ç÷§Æû ÄÚ¾î À¯ÇüÀ» Á¶È¸ÇÒ ¼ö ÀÖ´Â °æ¿ì°¡ Ç¥½ÃµË´Ï´Ù. Á¶È¸´Â À¯Çü¿¡ ´ëÇÑ UI ÁöÇâ Á¤º¸¿¡ ÀÀ´äÇÏ´Â ¹æ¹ýÀ» ¾Æ´Â ¿ÀºêÁ§Æ®¸¦ ¾ò´Â µ¥ »ç¿ëµË´Ï´Ù.
»ç¿ëÀÚ°¡ Workbench¸¦ ½Ã½ºÅÛ Á¾·áÇÒ °æ¿ì Workbench¿¡ Ç¥½ÃµÈ IAdaptable ¿ÀºêÁ§Æ®ÀÇ ÇöÀç »óŸ¦ ÀúÀåÇØ¾ß ÇÕ´Ï´Ù. IMemento¶ó´Â Ư¼öÇÑ Çü½ÄÀ¸·Î ¿ÀºêÁ§Æ®ÀÇ ±âº» µ¥ÀÌÅÍ ¸Å°³º¯¼ö¸¦ ÀúÀåÇÏ¿© ¿ÀºêÁ§Æ®ÀÇ »óŸ¦ ÀúÀåÇÕ´Ï´Ù. IMemento¿¡¼ ¿ÀºêÁ§Æ®¸¦ ´Ù½Ã ¸¸µé ¼ö ÀÖ´Â ÆÑÅ丮ÀÇ IDµµ ÀúÀåµÇ¸ç µ¥ÀÌÅÍ´Â ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀúÀåµË´Ï´Ù.
Ç÷§ÆûÀ» ´Ù½Ã ½ÃÀÛÇϸé Workbench´Â IMementoÀÇ ÆÑÅ丮 ID¿Í ¿¬°üµÈ ¿ä¼Ò ÆÑÅ丮¸¦ ã½À´Ï´Ù. org.eclipse.ui.elementFactories È®Àå¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â Ç÷¯±×ÀÎ ·¹Áö½ºÆ®¸®¸¦ È®ÀÎÇÏ¿© ÆÑÅ丮¸¦ ã½À´Ï´Ù.
¸¶Å©¾÷Àº ¸Å¿ì °£´ÜÇÕ´Ï´Ù. ÆÑÅ丮ÀÇ id¿Í ÆÑÅ丮¸¦ ±¸ÇöÇÏ´Â ÇØ´ç Ŭ·¡½º¸¦ ÁöÁ¤Çϱ⸸ ÇÏ¸é µË´Ï´Ù.
´ÙÀ½ ÄÚµå ½º´ÏÆêÀº Workbench plugin.xml¿¡¼ °¡Á®¿Â °ÍÀÔ´Ï´Ù.
<extension point="org.eclipse.ui.elementFactories"> <factory class="org.eclipse.ui.internal.model.ResourceFactory" id="org.eclipse.ui.internal.model.ResourceFactory"> </factory> <factory class="org.eclipse.ui.internal.model.WorkspaceFactory" id="org.eclipse.ui.internal.model.WorkspaceFactory"> </factory> <factory class="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.ui.part.FileEditorInputFactory"> </factory> <factory class="org.eclipse.ui.internal.dialogs.WelcomeEditorInputFactory" id="org.eclipse.ui.internal.dialogs.WelcomeEditorInputFactory"> </factory> <factory class="org.eclipse.ui.internal.WorkingSetFactory" id="org.eclipse.ui.internal.WorkingSetFactory"> </factory> </extension>