2011-12-22 3 views
2

RCP 애플리케이션이 있으며 일부 작업을 수행 할 때 툴바의 일부 요소를 비활성화/활성화하려고합니다. 내 확장 :Eclipse RCP 툴바 기여도 프로그래밍 방식으로

<extension point="org.eclipse.ui.menus"> 
    <menuContribution locationURI="toolbar:org.eclipse.ui.main.toolbar"> 
     <toolbar id="vendor.toolbar1h"> 
     <command commandId="vendor.commands.MyCommand" 
      icon="icon.png" 
      id="MyButtonID1" 
      style="toggle"> 
     </command> 
     </toolbar> 
    </menuContribution> 
</extension> 

이 코드와 모든 도구 모음 기여를 열거하려고 노력하지만, 그것이 작동하지 않는, 그것은 뷰의 기여를 보여줍니다.

IViewReference[] refs = PlatformUI.getWorkbench() 
    .getActiveWorkbenchWindow().getActivePage().getViewReferences(); 
for (IViewReference ref : refs) { 
    System.err.println("ID: "+ref.getId()); 
    IViewPart viewPart = PlatformUI.getWorkbench() 
     .getActiveWorkbenchWindow().getActivePage().findView(ref.getId()); 
    IActionBars bars = viewPart.getViewSite().getActionBars(); 
    if (bars != null) { 
     IToolBarManager tbm = bars.getToolBarManager(); 
     if (tbm != null) { 
     IContributionItem[] items = tbm.getItems(); 
     for (IContributionItem item : items) 
      System.err.println("\t" + item); 
     } 
     } 
} 

주 작업 표시 줄을 가져 오는 방법이 있습니까?

답변

2

아니요, 기본 도구 모음에 액세스 할 수있는 방법이 없습니다. IActionBars 도구 모음은보기 도구 모음 (보기 탭 옆에 있음)을 반환합니다.

그러나 활성 처리기의 활성화에 따라 명령을 활성화/비활성화합니다. 처리기는 사용 가능 상태를 결정합니다.

프로그래밍 방식으로 서브 클래스가 org.eclipse.core.commands.AbstractHandler 인 경우 setBaseEnabled(boolean state)을 호출하면 올바른 이벤트가 발생합니다.

org.eclipse.ui.handlers을 통해 기여한 경우 이는 enabledWhen 요소도 지원합니다. 해당 응용 프로그램 상태에 액세스 할 수 있습니다 org.eclipse.ui.ISources

0

기본 도구 모음에서 항목에 액세스하려면 IHandler가 인터페이스를 구현하면 IElementUpdater Eclipse의 명령 프레임 워크가 해당 클래스를 사용하여 레이블, 툴팁 또는 이미지를 업데이트합니다 명령의. 자세한 내용은이 참조 : 난 그냥 다음 활동 패턴이 외부 도구 메뉴 기여를 제거하는 것을 발견

http://www.robertwloch.net/2011/01/eclipse-tips-tricks-label-updating-command-handler/

0

. 이것은 알아 내기가 꽤 어려웠습니다.

 <activity id="org.eclipse.ui.navigator.resources.unwanted" name="unwanted"/> 

     <activityPatternBinding 
     activityId="org.eclipse.ui.navigator.resources.unwanted" 
     pattern=".*ExternalTool.*"> 
     </activityPatternBinding> 
관련 문제