2011-12-22 12 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

私は、次の活動パターンは、外部ツール]メニューの寄与を削除することがわかりました。このことはわかりにくいものでした。

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

     <activityPatternBinding 
     activityId="org.eclipse.ui.navigator.resources.unwanted" 
     pattern=".*ExternalTool.*"> 
     </activityPatternBinding> 
関連する問題