org.eclipse.ui.popupMenus

org.eclipse.ui.popupMenus 확장점을 사용하면 플러그인을 다른 보기 및 편집기의 팝업 메뉴에 제공할 수 있습니다.

조치의 ID(viewerContribution)를 사용하거나 특정 오브젝트 유형(objectContribution)에 조치를 연관시켜 특정 팝업 메뉴에 조치를 제공할 수 있습니다. 

readme 도구는 두 가지를 정의합니다. 먼저 오브젝트 지시문을 살펴봅니다.  

<extension point = "org.eclipse.ui.popupMenus">
     <objectContribution
        id="org.eclipse.ui.examples.readmetool"
        objectClass="org.eclipse.core.resources.IFile"
	    nameFilter="*.readme">
	    <action id="org.eclipse.ui.examples.readmetool.action1"
	       label="%PopupMenus.action"
	       icon="icons/ctool16/openbrwsr.png"
	      menubarPath="additions"
	       helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
	       class="org.eclipse.ui.examples.readmetool.PopupMenuActionDelegate"	
	       enablesFor="1">
	   </action>
	 </objectContribution>
 	 ...

오브젝트 지시문

"Readme 조치 표시" 조치는 IFile 오브젝트 클래스에 제공됩니다. 이것은 IFile 오브젝트가 포함된 보기에 IFile 오브젝트를 선택하려면 지시문이 표시된다는 것을 의미합니다. 이름 필터(nameFilter="*.readme")와 단일 선택사항(enablesFor="1")으로 선택 기준이 더 제한되었음을 알 수 있습니다. 전에 설명한 대로 메뉴 항목을 실제로 선택할 때까지 이 메뉴의 등록에서는 플러그인의 코드를 실행하지 않습니다.

메뉴 항목을 선택한 경우 Workbench는 지정한 클래스를 실행합니다.  팝업을 objectContribution으로 선언하였으므로 제공된 클래스는 IObjectActionDelegate를 구현해야 합니다. 

이 조치는 PopupMenuActionDelegate에 구현됩니다.  

public void run(IAction action) {
MessageDialog.openInformation(
         this.part.getSite().getShell(),
         "Readme Example",
         "Popup Menu Action executed");
   }

자원 네비게이터에서 readme 파일을 선택한 경우 팝업 메뉴 지시문을 볼 수 있습니다.

표시기 지시문

해당 ID를 사용하여 특정 보기나 편집기의 팝업 메뉴에 제공하기 위해 표시기 지시문을 사용할 수 있습니다. 다음은 readme 도구의 표시기 지시문입니다.

      ...
      <viewerContribution
        id="org.eclipse.ui.examples.readmetool2"
        targetID="org.eclipse.ui.examples.readmetool.outline">
	    <action id="org.eclipse.ui.examples.readmetool.action1"
	       label="%PopupMenus.action"
	       icon="icons/ctool16/openbrwsr.png"
	      menubarPath="additions"
	       helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
	       class="org.eclipse.ui.examples.readmetool.ViewActionDelegate">	
	   </action>
       </viewerContribution>
   </extension>
참고: viewerContribution이란 이름은 JFace 표시기와 관련이 없으므로 명확하지 않습니다. popupMenuContribution과 같은 이름으로 사용할 것을 권장합니다.

확장이 viewerContribution일 경우 조치가 편집기의 팝업 메뉴 또는 보기의 팝업 메뉴에 제공되는지에 따라 제공된 클래스는 IEditorActionDelegate 또는 IViewActionDelegate 인터페이스를 구현해야 합니다. 

targetID는 팝업 메뉴가 변경될 보기를 지정합니다. 이 경우에 readme 도구 보기 중 하나인 아웃라이너에 조치를 추가합니다. 조치 자체는 이미 살펴본 다른 조치와 비슷합니다. 조치의 id, labelicon을 지정하고 지시문의 팝업에서 경로를 지정합니다. 조치는 readme 아웃라인 보기의 팝업 메뉴에만 표시됩니다.

popupMenus 확장점에 viewerContribution을 제공하기 위해 필요한 인터페이스는 viewActionseditorActions 확장점에서 필요한 인터페이스와 같습니다. 같은 조치를 팝업 메뉴와 보기 또는 편집기의 로컬 메뉴에 제공할 경우 두 확장에 대해 같은 클래스를 사용할 수 있습니다.