retargetable ÆíÁý±â Á¶Ä¡

readme µµ±¸´Â ReadmeEditorActionBarContributor¸¦ »ç¿ëÇÏ¿© 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>

Áö½ÃÀÚ Å¬·¡½º¿¡¼­ ¹ß»ýÇÏ´Â ÀÛ¾÷À» Á» ´õ ÀÚ¼¼È÷ »ìÆìº¾´Ï´Ù.

public ReadmeEditorActionBarContributor() {
	...
	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);
	...  
	handler2 = new EditorAction(MessageUtil.getString("Editor_Action2")); 
	...
	handler3 = new EditorAction(MessageUtil.getString("Editor_Action3")); 
	...

Áö½ÃÀÚ°¡ ÀÛ¼ºµÇ¸é Áö½ÃÀÚ´Â µÎ °³ÀÇ »õ·Î ´ë»ó ÁöÁ¤ °¡´ÉÇÑ Á¶Ä¡(·¹ÀÌºí °»½ÅÀ» Çã¿ëÇÏ´Â Á¶Ä¡¿Í Çã¿ëÇÏÁö ¾Ê´Â Á¶Ä¡)¸¦ ÀÛ¼ºÇÕ´Ï´Ù. Á¶Ä¡ ÀÛ¼º ½Ã Workbench°¡ »ç¿ëÇÏ´Â ¹æ¹ý°ú °°Àº ¹æ¹ýÀ» »ç¿ëÇÕ´Ï´Ù. ÆíÁý±â°¡ Ȱ¼º ÆÄÆ®ÀÏ °æ¿ì Á¶Ä¡¿¡ »ç¿ëµÇ´Â µÎ °³ÀÇ Çڵ鷯µµ ÀÛ¼ºµË´Ï´Ù.  

±×·¯¸é Á¶Ä¡¿¡ ´ëÇÑ Çڵ鷯°¡ µî·ÏµÇ´Â À§Ä¡´Â ¾îµðÀԴϱî? ±Û·Î¹ú Çڵ鷯¸¦ ¼³Á¤ÇÏ´Â ÀÛ¾÷Àº ÆíÁý±â¿¡¼­ »õ·Î ´ë»ó ÁöÁ¤µÈ Á¶Ä¡¸¦ Á¤ÀÇÇÒ ¶§¿Í´Â ¾à°£ ´Ù¸£°Ô ¼öÇàµË´Ï´Ù. ±× ÀÌÀ¯´Â ´Ù¸¥ º¸±â³ª ÆíÁý±â°¡ Ȱ¼ºÈ­µÉ ¶§ Áö½ÃÀÚ°¡ Ȱ¼º º¸±â¸¦ ÃßÀûÇÏ°í ´Ù¸¥ Çڵ鷯¸¦ ÈÄÅ©ÇØ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù. »ç¿ëÀÚ°¡ ±Û·Î¹ú Á¶Ä¡ Áß Çϳª¿¡ ´ëÇÑ Çڵ鷯¸¦ ¼³Á¤ÇÒ ¶§ Workbench¿¡¼­ ÀÌ ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù. ´ÙÀ½Àº ReadmeEditorActionBarContributor¿¡¼­ À̸¦ ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» º¸¿©ÁÝ´Ï´Ù.

public void init(IActionBars bars, IWorkbenchPage page) {
	super.init(bars, page);
	bars.setGlobalActionHandler(IReadmeConstants.RETARGET2, handler2);
	bars.setGlobalActionHandler(IReadmeConstants.LABELRETARGET3, handler3);
	...

¸ÕÀú Áö½ÃÀÚ´Â »õ·Î ´ë»ó ÁöÁ¤µÈ Á¶Ä¡¿¡ ´ëÇØ Çڵ鷯¸¦ µî·ÏÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ÆíÁý±â°¡ Ȱ¼ºÈ­µÉ ¶§ Áö½ÃÀÚÀÇ Á¶Ä¡°¡ ½ÇÇàµË´Ï´Ù. ´ÙÀ½ ´Ü°è´Â ÆäÀÌÁöÀÇ ÆÄÆ® ¸®½º³Ê·Î °¢ RetargetActionÀ» µî·ÏÇÏ´Â °ÍÀÔ´Ï´Ù.

	...
	// Hook retarget actions as page listeners
	page.addPartListener(action2);
	page.addPartListener(action3);
	IWorkbenchPart activePart = page.getActivePart();
	if (activePart != null) {
		action2.partActivated(activePart);
		action3.partActivated(activePart);
	}
}

°¢ RetargetActionÀ» ÆÄÆ® ¸®½º³Ê·Î Ãß°¡Çϸé Ȱ¼º ÆÄÆ®°¡ º¯°æµÉ ¶§ À̸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù. Á¶Ä¡´Â »õ·Î Ȱ¼ºÈ­µÈ ÆÄÆ®¿¡¼­ Á¤È®ÇÑ ±Û·Î¹ú Çڵ鷯¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â RetargetActionÀÇ ±¸ÇöÀ» ÂüÁ¶ÇϽʽÿÀ. ½ÃÀÛÇÏ·Á¸é Á¶Ä¡°¡ ÇöÀç Ȱ¼º ÆÄÆ®·Î ½ÃÀ۵Ǿî¾ß ÇÕ´Ï´Ù. 

ÆíÁý±â Áö½ÃÀÚ°¡ »èÁ¦µÉ ¶§ »õ·Î ´ë»ó ÁöÁ¤ °¡´ÉÇÑ Á¶Ä¡¸¦ ÆäÀÌÁö ¸®½º³Ê·Î ÈÄÅ© ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù.

public void dispose() {
	// Remove retarget actions as page listeners
	getPage().removePartListener(action2);
	getPage().removePartListener(action3);
}

¸¶Áö¸·À¸·Î ÇÑ ÆíÁý±â Ŭ·¡½ºÀÇ ¿©·¯ ÀνºÅϽº¿¡¼­ Á¶Ä¡ ¸·´ë Áö½ÃÀÚ¸¦ °øÀ¯ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·± ÀÌÀ¯·Î Ȱ¼º ÆíÁý±â°¡ º¯°æµÇ¸é Áö½ÃÀÚ°¡ ÀûÀýÇÑ ÆíÁý±â ÀνºÅϽº¿¡ ¿¬°áÇÒ ¼ö ÀÖµµ·Ï Çڵ鷯¿¡°Ô ¾Ë·Á¾ß ÇÕ´Ï´Ù.

public void setActiveEditor(IEditorPart editor) {
	...
	handler2.setActiveEditor(editor);
	handler3.setActiveEditor(editor);
	...
}

ÆíÁý±âÃø ¼³Á¤ÀÌ ¿Ï·áµÇ¾ú½À´Ï´Ù. ÆíÁý±â°¡ ¿­¸®°í Ȱ¼ºÈ­µÇ¸é ReadmeEditorActionBarContributor¿¡¼­ Á¤ÀÇµÈ Çڵ鷯(¹× ·¹À̺í)Àº Workbench ¸Þ´º Ç¥½ÃÁÙ¿¡ ³ªÅ¸³³´Ï´Ù.

Workbench ¸Þ´º Ç¥½ÃÁÙ¿¡ ¼¼ °³ÀÇ ÆíÁý±â Á¶Ä¡°¡ ÀÖ´Â readme ¸Þ´º

ÀÌÁ¦ ÆíÁý±âÀÇ Áö½Ã¹®ÀÌ ÀûÀýÇϹǷΠÇڵ鷯¸¦ µî·ÏÇϱâ À§ÇØ º¸±â¿¡¼­ ¼öÇàÇØ¾ß ÇÒ ÀÛ¾÷Àº ¹«¾ùÀԴϱî? Å¬¶óÀ̾ðÆ®Ãø ÄÚµå´Â Workbench Á¶Ä¡¿¡ ´ëÇØ Çڵ鷯¸¦ µî·ÏÇÏ´Â ÀÛ¾÷°ú ºñ½ÁÇÏÁö¸¸ Á¶Ä¡ ID°¡ Ç÷¯±×ÀÎÀÇ ÆíÁý±â¿¡¼­ Á¤Àǵȴٴ Á¡ÀÌ ´Ù¸¨´Ï´Ù. ReadmeContentOutlinePage´Â ÀÌ Á¶Ä¡¿¡ ´ëÇØ Çڵ鷯¸¦ µî·ÏÇÕ´Ï´Ù.

public void createControl(Composite parent) {
	super.createControl(parent);
	...
	getSite().getActionBars().setGlobalActionHandler(
		IReadmeConstants.RETARGET2, 
		new OutlineAction(MessageUtil.getString("Outline_Action2")));  

	OutlineAction action = new OutlineAction(MessageUtil.getString("Outline_Action3")); 
	action.setToolTipText(MessageUtil.getString("Readme_Outline_Action3")); 
	getSite().getActionBars().setGlobalActionHandler(
		IReadmeConstants.LABELRETARGET3, 
		action);  
	...

¾Æ¿ô¶óÀ̳ʿ¡¼­ ·¹ÀÌºí º¯°æÀÌ °¡´ÉÇϹǷΠ¾Æ¿ô¶óÀ̳ʴ µÎ ¹øÂ° Á¶Ä¡¿¡ ´ëÇÑ ·¹ÀÌºí ¹× µµ±¸ ÆÁ ÅØ½ºÆ®¸¦ ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. readme ¾Æ¿ô¶óÀÌ³Ê º¸±â°¡ Ȱ¼ºÈ­µÇ¸é ÀÌÀÇ Çڵ鷯 ¹× ·¹À̺íÀÌ Workbench ¸Þ´º Ç¥½ÃÁÙ¿¡ ³ªÅ¸³³´Ï´Ù.

ÇϳªÀÇ À̸§ ¹Ù²ï ÆíÁý±â Á¶Ä¡°¡ ÀÖ´Â readme ¸Þ´º

·¹À̺íÀÌ ´Ù½Ã ÁöÁ¤µÈ Á¶Ä¡´Â »õ ·¹À̺íÀ» Ç¥½ÃÇÕ´Ï´Ù.

Copyright IBM Corporation and others 2000, 2003.