org.eclipse.ui.views

º¸±â´Â Á¤º¸ °èÃþÀ» Ž»öÇÏ°í ¿ÀºêÁ§Æ®ÀÇ Æ¯¼ºÀ» Ç¥½ÃÇÒ ¼ö ÀÖ´Â WorkbenchÀÇ ÀϺÎÀÔ´Ï´Ù. ÁÖ¾îÁø º¸±â¿¡¼­ ÇϳªÀÇ ÀνºÅϽº¸¸ Workbench ÆäÀÌÁö¿¡¼­ ¿­·Á ÀÖ½À´Ï´Ù. »ç¿ëÀÚ°¡ º¸±â¿¡¼­ ¼±ÅÃÀ» Çϰųª º¯°æÀ» ÇÏ´Â °æ¿ì ÀÌ º¯°æ»çÇ×ÀÌ Áï½Ã Workbench¿¡ ¹Ý¿µµË´Ï´Ù. ÀϹÝÀûÀ¸·Î ´ëÀÀÇÏ´Â ÆíÁý±â¸¦ Áö¿øÇϱâ À§ÇØ º¸±â°¡ Á¦°øµË´Ï´Ù. ¿¹¸¦ µé¾î ¾Æ¿ô¶óÀÎ º¸±â´Â ÆíÁý±â¿¡ ÀÖ´Â Á¤º¸ÀÇ ±¸Á¶È­µÈ º¸±â¸¦ Ç¥½ÃÇÕ´Ï´Ù. Ư¼º º¸±â´Â ÇöÀç ÆíÁýÇϰí ÀÖ´Â ¿ÀºêÁ§Æ®ÀÇ Æ¯¼ºÀ» Ç¥½ÃÇÕ´Ï´Ù.

org.eclipse.ui.views È®ÀåÁ¡À» »ç¿ëÇϸé Ç÷¯±×Àο¡¼­ º¸±â¸¦ Workbench¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. º¸±â¸¦ Á¦°øÇÏ´Â Ç÷¯±×ÀÎÀº º¸±â¸¦ plugin.xml ÆÄÀÏ¿¡ µî·ÏÇ졒ʼ¸±â¿¡ °üÇÑ ±¸¼º Á¤º¸(¿¹: ±¸Çö Ŭ·¡½º, ÀÚ½ÅÀÌ ¼ÓÇÏ´Â º¸±âÀÇ Ä«Å×°í¸®(¶Ç´Â ±×·ì), ¸Þ´º¿Í ·¹À̺íÀÇ º¸±â¸¦ ¼³¸íÇÏ´Â µ¥ »ç¿ëÇØ¾ß ÇÒ À̸§ ¹× ¾ÆÀÌÄÜ)¸¦ Á¦°øÇØ¾ß ÇÕ´Ï´Ù.

º¸±âÀÇ ÀÎÅÍÆäÀ̽º´Â IViewPart¿¡ Á¤ÀǵǾî ÀÖÁö¸¸ Ç÷¯±×Àο¡¼­ óÀ½ºÎÅÍ IViewPart¸¦ ±¸ÇöÇÏ´Â ´ë½Å ViewPart Ŭ·¡½º¸¦ È®ÀåÇϵµ·Ï ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

Hello world ¿¹¿¡ ÃÖ¼ÒÇÑÀÇ º¸±â È®ÀåÀ» ±¸ÇöÇß½À´Ï´Ù. ÀÌÁ¦ ´Ù¸¥ Workbench º¸±â¸¦ ÀνÄÇϰí WorkbenchÀÇ »ç¿ëÀÚ Å½»ö°ú ¼±ÅûçÇ× º¯°æ¿¡ ÀÀ´äÇÏ´Â ¿¹Á¦¸¦ »ìÆìº¾´Ï´Ù. ¸ÕÀú plugin.xmlÀÇ È®Àå ¼±¾ðÀ» »ìÆìº¸°Ú½À´Ï´Ù.

   <extension 
   point="org.eclipse.ui.views">
	<category 
	   id="org.eclipse.ui.examples.readmetool"
	   name="%Views.category">
	</category>
	<view
 	   id="org.eclipse.ui.examples.readmetool.views.SectionsView"
	   name="%Views.ReadmeSections"
	   icon="icons/view16/sections.gif"
	   category="org.eclipse.ui.examples.readmetool"
	   class="org.eclipse.ui.examples.readmetool.ReadmeSectionsView">
	</view>
   </extension>

ÀÌ ³»¿ëÀº ÈξÀ Àͼ÷ÇØ º¸ÀÌ´Â ³»¿ëÀÔ´Ï´Ù. »õ º¸±â ReadmeSectionsView°¡ Workbench¿¡ Á¦°øµË´Ï´Ù. º¸±â id, À̸§ ¹× Ä«Å×°í¸®´Â ÀÌÀüó·³ ÁöÁ¤µË´Ï´Ù. Ç÷¯±×ÀÎÀÇ ¼³Ä¡ µð·ºÅ丮¿¡ °ü·ÃµÈ °æ·Î¸¦ »ç¿ëÇÏ¿© º¸±â¿¡ ¾ÆÀÌÄÜÀ» Á¦°øÇÕ´Ï´Ù.

ReadmeSectionsView¸¦ »ìÆìº¸°Ú½À´Ï´Ù. â->º¸±â Ç¥½Ã->±âŸ...¸¦ ¼±ÅÃÇÏ°í º¸±â Ç¥½Ã ¸ñ·Ï¿¡¼­ º¸±â¸¦ ¼±ÅÃÇÏ¿© Workbench¿¡ º¸±â¸¦ Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

ReadmeSectionsView¸¦ Ç¥½ÃÇÒ °æ¿ì ¸ñ·ÏÀ» °¡Áø º¸±â°¡ ÆË¾÷À¸·Î ³ªÅ¸³³´Ï´Ù. È®ÀåÀÚ°¡ .readmeÀÎ ÆÄÀÏÀ» Ŭ¸¯ÇÏÁö ¾ÊÀ¸¸é ¸ñ·ÏÀÌ °ø¹éÀ¸·Î ³ªÅ¸³³´Ï´Ù. ÀÌ °æ¿ì readme ÆÄÀÏÀÇ ¼½¼ÇÀ» »ç¿ëÇÏ¿© ¸ñ·ÏÀ» ä¿ó´Ï´Ù.

Ç÷¯±×ÀÎÀÌ readme ÆÄÀÏÀ» ÀνÄÇÏ´Â ¹æ¹ý ¹× ¼±ÅûçÇ×ÀÌ º¯°æµÇ¾ú´ÂÁö ÆÄ¾ÇÇÏ´Â ¹æ¹ýÀ» »ìÆìº¾´Ï´Ù. ÀÌ ¹æ¹ýÀ» ÃßÀûÇÒ ¼ö ÀÖÀ¸¸é ÅëÇÕµÈ Workbench Ç÷¯±×ÀÎÀ» ºôµåÇÏ´Â ¹æ¹ýÀ» ÀÌÇØÇÒ ¼ö ÀÖ½À´Ï´Ù.

Àͼ÷ÇÑ createPartControl ¸Þ¼Òµå¸¦ ½ÃÀÛÇϰڽÀ´Ï´Ù. Hello World ¿¹¿¡¼­ º¸¾ÒµíÀÌ º¸±â¸¦ ³ªÅ¸³»´Â À§ÁöÆ®(widget)°¡ À̰÷¿¡¼­ ÀÛ¼ºµË´Ï´Ù. ÀϺΠÄÚµå´Â ¹«½ÃÇÏ°í ½ÃÀÛÇϰڽÀ´Ï´Ù.

public void createPartControl(Composite parent) {
viewer = new ListViewer(parent);
      ...
      // add myself as a global selection listener
      getSite().getPage().addSelectionListener(this);

      // prime the selection
      selectionChanged(null, getSite().getPage().getSelection());
   }

º¸±â¿¡¼­ ListViewer¸¦ ÀÛ¼ºÇϰí ÀúÀåÇϰí ÀÚ½ÅÀ» ÇØ´ç ÆäÀÌÁö¿¡ ¼±ÅûçÇ× ¸®½º³Ê·Î µî·ÏÇÕ´Ï´Ù. Workbench â, Æ÷ÇÔÇÏ´Â ÆäÀÌÁö ¹× Ç÷¯±×ÀÎ µî º¸±âÀÇ ÄÁÅØ½ºÆ®¿¡ ´ëÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÏ´Â IViewSite¿¡¼­ ÆäÀÌÁö¸¦ °¡Á®¿É´Ï´Ù. ¼±ÅûçÇ×ÀÇ º¯°æÀ» ÅëÁö¹ÞÀº °æ¿ì¿¡´Â  ´ÙÀ½ Äڵ尡 ½ÇÇàµË´Ï´Ù.

public void selectionChanged(IWorkbenchPart part, ISelection sel) {
      //if the selection is a readme file, get its sections.
      AdaptableList input = ReadmeModelFactory.getInstance().getSections(sel);
      viewer.setInput(input);
   }

ReadmeModelFactory Ŭ·¡½º°¡ ¼±ÅûçÇ×À» readme ¼½¼ÇÀ¸·Î º¯È¯Çϸç ÀÌ ¼½¼ÇÀÌ createPartControl ¸Þ¼Òµå¿¡¼­ ÀÛ¼ºÇÑ Ç¥½Ã±âÀÇ ÀÔ·ÂÀ¸·Î ³ªÅ¸³³´Ï´Ù.

Ç¥½Ã±â°¡ ¸ñ·Ï À§ÁöÆ®(widget)¸¦ ä¿ì´Â ¹æ¹ýÀ» »ìÆìº¾´Ï´Ù. Áö±ÝÀº Ç¥½Ã±â°¡ ÀÔ·Â ¿ä¼Ò¸¦ ÀνÄÇϰí Á¤º¸·Î ¸ñ·Ï À§ÁöÆ®(widget)¸¦ ä¿ì´Â ¹æ¹ýÀ» ¾È´Ù°í °¡Á¤ÇÕ´Ï´Ù. ÀÌ Ç¥½Ã±â¸¦ ListViewer¶ó°í ÇÕ´Ï´Ù. ÀÌ Ç¥½Ã±â¿¡ ´ëÇÑ Á¤º¸¸¦ Áö±Ý º¸·Á¸é Ç¥½Ã±â·Î À̵¿ÇϽʽÿÀ. 

readme ÆÄÀÏÀ» ¹ß°ßÇÏ´Â ¹æ¹ý ¶Ç´Â ÆÄÀÏÀÇ ¼½¼Ç Á¤º¸ÀÇ Ãâó¿¡ ´ëÇØ ¾ËÁö ¸øÇÕ´Ï´Ù. ReadmeModelFactory¸¦ »ìÆì º¸¸é ¾à°£ÀÇ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

public AdaptableList getSections(ISelection sel) {
      // If sel is not a structured selection just return.
      if (!(sel instanceof IStructuredSelection))
      return null;
      IStructuredSelection structured = (IStructuredSelection)sel;

      //if the selection is a readme file, get its sections.
      Object object = structured.getFirstElement();
      if (object instanceof IFile) {
         IFile file = (IFile) object;
         String extension = file.getFileExtension();
         if (extension != null && extension.equals(IReadmeConstants.EXTENSION)) {
            return getSections(file);
         }
      }

      //the selected object is not a readme file
      return null;
   }

±¸Á¶È­µÈ º¹¼ö ¼±ÅûçÇ×ÀÎÁö È®ÀÎÇϱâ À§ÇØ ¼±ÅûçÇ×À» °Ë»çÇÕ´Ï´Ù. ±¸Á¶È­µÈ ¼±ÅûçÇ×ÀÇ °³³äÀº JFace Ç¥½Ã±â¿¡¼­ °¡Á®¿É´Ï´Ù. ¼±ÅûçÇ×ÀÇ Ã¹ ¹øÂ° ¿ÀºêÁ§Æ®ÀÇ °æ¿ì ÆÄÀÏ(IFile) ÀÚ¿øÀÎÁö È®ÀÎÇÕ´Ï´Ù. ÆÄÀÏ ÀÚ¿øÀÏ °æ¿ì È®ÀåÀÚ°¡ ".readme" È®ÀåÀÚ¿Í ÀÏÄ¡ÇÏ´ÂÁö È®ÀÎÇÕ´Ï´Ù. readme ÆÄÀÏÀÌ ÀÖÀ¸¸é ´Ù¸¥ ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© ¼±ÅûçÇ×À» ±¸¹®ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù.  ÆÄÀÏ ±¸¹®ºÐ¼®¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ReadmeModelFactoryMarkElement ¹× DefaultSectionsParserÀÇ ³ª¸ÓÁö ºÎºÐ¿¡¼­ ã¾Æº¼ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ È®ÀåÀ» ¿¬±¸ÇÏ¿© ÀÏ¹Ý Workbench °³³äÀ» ¸¹ÀÌ ´Ù·ç¾ú½À´Ï´Ù. ÀÌÁ¦ ¸î °³ÀÇ ´Ù¸¥ Workbench È®ÀåÀ¸·Î À̵¿ÇÏ¿© Ç÷¯±×Àο¡¼­ Workbench UI¿¡ Á¦°øÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» Á¡°ËÇÕ´Ï´Ù.

Copyright IBM Corporation and others 2000, 2003.