ÆíÁý±â¿¡´Â ÆíÁý±â ÄÁÅÙÃ÷¿¡ ´ëÇÑ ±¸Á¶ÈµÈ º¸±â¸¦ Á¦°øÇÏ°í ÆíÁý±â ÄÁÅÙÃ÷ÀÇ Å½»öÀ» Áö¿øÇÏ´Â ÇØ´ç ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʰ¡ ÀÖ´Â °æ¿ì°¡ ¸¹½À´Ï´Ù.
Workbench´Â ÀÌ·± ¸ñÀûÀ¸·Î Ç¥ÁØ ¾Æ¿ô¶óÀÎ º¸±â¸¦ Á¦°øÇÕ´Ï´Ù. Workbench »ç¿ëÀÚ´Â Perspective->º¸±â Ç¥½Ã ¸Þ´º¸¦ »ç¿ëÇÏ¿© ÀÌ º¸±â¸¦ º¼ ¼ö ÀÖ´Â ½Ã±â¸¦ Á¦¾îÇÕ´Ï´Ù.
ÀÏ¹Ý TextEditor´Â ÅØ½ºÆ® ±¸Á¶¸¦ ¾ËÁö ¸øÇϱ⠶§¹®¿¡ Èï¹Ì·Î¿î ¾Æ¿ô¶óÀÎ º¸±â¿¡ ´ëÇÑ ÀÛµ¿À» Á¦°øÇÒ ¼ö ¾ø½À´Ï´Ù. µû¶ó¼ ¾Æ·¡ Ç¥½ÃµÈ ±âº» ¾Æ¿ô¶óÀÎ º¸±â´Â ¸¹Àº ¿ªÇÒÀ» ¼öÇàÇÏÁö ¸øÇÕ´Ï´Ù.
Ç÷¯±×ÀÎÀº ¾Æ¿ô¶óÀÎ º¸±â¿¡ »ç¿ëÀÚ Á¤ÀÇ ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê ÆäÀÌÁö¸¦ Ãß°¡ÇÒ ¸ñÀûÀ¸·Î TextEditor¸¦ È®ÀåÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¢±Ù¹æ¹ýÀº Workbench Readme µµ±¸ ¿¹¿¡¼ »ç¿ëµË´Ï´Ù. ReadmeEditor´Â TextEditorÀÇ ¸î °¡Áö ¸Þ¼Òµå¸¦ ´ëüÇÏ¿© °íÀ¯ ¾Æ¿ô¶óÀ̳ʸ¦ Á¦°øÇÕ´Ï´Ù.
ÆíÁý±â ¾Æ¿ô¶óÀ̳ʴ Workbench°¡ IContentOutlinePage À¯Çü ¾î´ðÅ͸¦ ¿äûÇÒ ¶§ ÁöÁ¤µË´Ï´Ù.
public Object getAdapter(Class key) {
if (key.equals(IContentOutlinePage.class)) {
IEditorInput input = getEditorInput();
if (input instanceof IFileEditorInput) {
page = new
ReadmeContentOutlinePage(
((IFileEditorInput)input).getFile());
return page;
}
}
return super.getAdapter(key);
}
ReadmeEditor°¡ .readme ÆÄÀÏ¿¡¼ ¿¸®¸é, ÇØ´ç Readme ¾Æ¿ô¶óÀ̳ʰ¡ Ç¥½ÃµË´Ï´Ù(Workbench »ç¿ëÀÚ°¡ ¾Æ¿ô¶óÀÎ º¸±â¸¦ Ç¥½ÃÇϰí ÀÖ´Â °æ¿ì).
ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê ÆäÀÌÁö´Â IContentOutlinePage¸¦ ±¸ÇöÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º´Â ¼±ÅûçÇ× º¯°æ ¸®½º³Ê¸¦ ¾Ë¸®´Â ±â´É(ISelectionProvider)°ú º¸±â¿¡¼ ÆäÀÌÁö¸¦ Ç¥½ÃÇÏ´Â ÀÛµ¿(IPage)À» °áÇÕÇÕ´Ï´Ù. ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʴ ÀϹÝÀûÀ¸·Î JFace Ç¥½Ã±â¸¦ »ç¿ëÇÏ¿© ±¸ÇöµË´Ï´Ù. ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê ±âº» ±¸Çö(ContentOutlinePage)Àº JFace Æ®¸® Ç¥½Ã±â¸¦ »ç¿ëÇÏ¿© ¾Æ¿ô¶óÀÎ °èÃþ ±¸Á¶¸¦ Ç¥½ÃÇÕ´Ï´Ù. ÀÌ Ç¥½Ã´Â ReadmeContentOutlinePage¸¦ Æ÷ÇÔÇÏ¿© ´Ù¼öÀÇ ±¸Á¶ÈµÈ ¾Æ¿ô¶óÀ̳ʿ¡ ÀûÇÕÇÕ´Ï´Ù.
ReadmeContentOutlinePage´Â ¿Ü°ü»ó Readme º¸±â È®ÀåÀÚ¸¦ ±¸ÇöÇßÀ» ¶§ º¸¾Ò´ø Readme ¼½¼Ç º¸±â(¾Æ·¡ Ç¥½ÃµÊ)¿Í À¯»çÇÕ´Ï´Ù.
»ç½Ç À¯ÀÏÇÑ Â÷ÀÌÁ¡Àº ¾Æ¿ô¶óÀ̳ʰ¡ ¼½¼Ç °èÃþ ±¸Á¶ º¸±â¸¦ Ç¥½ÃÇÏ´Â ¹Ý¸é¿¡ Readme ¼½¼Ç º¸±â´Â ¼½¼Ç Ç÷§ ¸ñ·ÏÀ» Ç¥½ÃÇÑ´Ù´Â Á¡ÀÔ´Ï´Ù. µû¶ó¼ ¾Æ¿ô¶óÀÌ³Ê ±¸Çö ¶ÇÇÑ º¸±â ±¸Çö°ú ¾ÆÁÖ À¯»çÇÕ´Ï´Ù. ¾Æ¿ô¶óÀ̳ʰ¡ ¸ñ·Ï Ç¥½Ã±â ´ë½Å Æ®¸® Ç¥½Ã±â¸¦ »ç¿ëÇÑ´Ù´Â Á¡À» Á¦¿ÜÇϰí´Â ¸ðµÎ µ¿ÀÏÇÕ´Ï´Ù.
ÆíÁý±â°¡ ¾Æ¿ô¶óÀÎ ÆäÀÌÁö¸¦ ÀÛ¼ºÇßÀ» ¶§ ÆäÀÌÁö°¡ »ý¼ºÀÚÀÇ ÆíÁý±â ÀÔ·Â ¿ä¼Ò¿¡ Àü´ÞµÇ¾ú½À´Ï´Ù. ÀÌ ÀÔ·ÂÀº ¾Æ·¡¿¡¼¿Í °°ÀÌ ¾Æ¿ô¶óÀÎ ÆäÀÌÁö Ç¥½Ã±â·Î Á÷Á¢ Àü´ÞµÉ ¼ö ÀÖ½À´Ï´Ù.
public void createControl(Composite parent) {
...
TreeViewer viewer = getTreeViewer();
viewer.setContentProvider(new WorkbenchContentProvider());
viewer.setLabelProvider(new WorkbenchLabelProvider());
viewer.setInput(getContentOutline(input));
...
}
Æ®¸® Ç¥½Ã±â ÀÛ¼ºÀº ContentOutlinePage¿¡¼ »ó¼ÓµË´Ï´Ù. Readme ¼½¼Ç º¸±â¿¡¼ »ç¿ëµÇ¾ú´ø °Í°ú µ¿ÀÏÇÑ ÄÁÅÙÃ÷ ¹× ·¹À̺í Á¦°ø¾÷ü°¡ ¿©±â¼ »ç¿ëµÇ¸ç, º¸±â ¼½¼ÇÀ» ±¸¼ºÇß´ø µ¿ÀÏÇÑ ReadmeModelFactory¸¦ »ç¿ëÇÏ¿© ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÎÀÌ ±¸¼ºµË´Ï´Ù.
private IAdaptable getContentOutline(IAdaptable input) {
return
ReadmeModelFactory.getInstance().getContentOutline(input);
}
À̰ÍÀ¸·Î ¸ðµç°ÍÀÌ ¿Ï·áµÇ¾ú½À´Ï´Ù!
¹°·Ð ¾Æ¿ô¶óÀÌ³Ê ÀÚü°¡ ´Ùä·Î¿î ÀÛµ¿À» Á¦°øÇÏÁö´Â ¾Ê½À´Ï´Ù. ¼½¼ÇÀ» ¼±ÅÃÇØµµ ÆíÁý±â¿¡¼ ÅØ½ºÆ®¸¦ Ž»öÇÏÁö ¸øÇÕ´Ï´Ù. ÀÌ ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ÊÀÇ ÀÌ¿ë ¸ñÀûÀº ¹«¾ùÀϱî¿ä? °èÃþ ±¸Á¶¸¦ Ç¥½ÃÇÏ´Â °ÍÀ» Á¦¿ÜÇϸé ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʴ ¼½¼Ç º¸±â¿¡¼ º¼ ¼ö ¾ø´Â ¾î¶² ÀÛµ¿µµ Á¦°øÇÏÁö ¸øÇÑ´Ù°í »ý°¢ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾Õ¼± ÀÛ¾÷¿¡¼µµ ¾Æ¹«°Íµµ ¼öÇàÇÏÁö ¸øÇÏ´Â ¾Æ¿ô¶óÀ̳ʸ¦ Á¦°øÇÏ´Â ´ë½Å ¼½¼Ç º¸±â¿¡¼ Æ®¸® Ç¥½Ã±â¸¦ »ç¿ëÇß½À´Ï´Ù.
±×°Ç ´ÜÁö ¿¹ÀÏ »ÓÀÔ´Ï´Ù! ½ÇÁ¦·Î ReadmeContentOutlinePage´Â ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʸ¦ ÅØ½ºÆ® ÆíÁý±â¿¡ »ç¿ëÀÚ Á¤ÀÇÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ¼³¸íÇϱâ À§ÇØ Á¦°øµË´Ï´Ù. ÀÌ ¿¹°¡ ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀÌ³Ê ÀÚü¸¦ ¼³¸íÇÏ´Â ÁÁÀº ¿¹´Â ¾Æ´Õ´Ï´Ù. ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʸ¦ »ç¿ëÇÏ¿© ÆíÁý±â ÄÁÅÙÃ÷¸¦ Ž»öÇÏ·Á´Â °æ¿ì, ÄÁÅÙÃ÷ ±¸Á¶¸¦ Ç¥½ÃÇÏ´Â °ÍÀÌ ¸ñÀûÀ̶ó¸é ¼½¼Ç º¸±â¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ ³´½À´Ï´Ù.
º¸´Ù ´Ùä·Î¿î ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʸ¦ ¹ß°ßÇÒ ¼ö ÀÖ´Â °÷Àº ¾îµðÀϱî¿ä? ContentOutlinePage ¼ºêŬ·¡½º¿Í ÇØ´ç ÆíÁý±â¸¦ »ìÆì º¸½Ê½Ã¿À. º¸´Ù ÀϹÝÀûÀÎ ÆÐÅÏÀº ÆíÁý±â°¡ ¾Æ¿ô¶óÀÎ ÆäÀÌÁö¸¦ Á¦°øÇÏ°í ¿©±â¿¡ ¼±ÅûçÇ× À̺¥Æ®¸¦ µî·ÏÇÏ´Â °ÍÀÔ´Ï´Ù. ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀο¡¼ Ç׸ñÀÌ ¼±ÅõǸé, ÆíÁý±â°¡ ±×¿¡ µû¶ó °»½ÅµË´Ï´Ù.
Java ¼Ò½º ÄÚµå ÆíÁý±â(JDT¿¡¼ Á¦°ø)´Â Èï¹Ì·Î¿î ÄÁÅÙÃ÷ ¾Æ¿ô¶óÀ̳ʸ¦ º¸¿©ÁÝ´Ï´Ù. Java ¾Æ¿ô¶óÀ̳ʴ ±¸Á¶ÈµÈ Java ¼Ò½º ÄÚµå º¸±â¸¦ Á¦°øÇϸç, »ç¿ëÀÚ°¡ ÇØ´ç ÆíÁý±â¿¡¼ ¼±¾ð, ¸Þ¼Òµå, Çʵ带 Ž»öÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. ¾Æ¿ô¶óÀ̳ʰ¡ ¼±ÅûçÇ× À̺¥Æ®¸¦ º¸°íÇϸé Java ÆíÁý±â°¡ ¼¼·Î ´«±ÝÀÚ¸¦ °»½ÅÇÏ¿© ¾Æ¿ô¶óÀÌ³Ê ¿ä¼Ò°¡ ¼Ò½º ÄÚµå ¾îµð¿¡ À§Ä¡ÇØ ÀÖ´ÂÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù.