2009-08-17 6 views
4

plugin.xmlファイルを設定するだけでCommons Navigator FrameworkからほぼすべてのpopUpメニューを削除できました。EclipseのCNF(Common Navigator Framework)からpopUpMenusを削除する

  • group.edit
  • group.reorganize

  • 行くことを拒否する2つのメニューがあります。

plugin.xml設定は次のようになります。falseにallowsPlatformContributionを設定

<extension 
      point="org.eclipse.ui.navigator.viewer"> 
     <viewer 
      viewerId="org.eclipse.ui.example.navigator.view"> 
      <popupMenu allowsPlatformContributions="false"> 
       <insertionPoint 
        name="group.edit" /> 

       <insertionPoint 
        name="group.reorganize" /> 
      </popupMenu> 
     </viewer> 
     <viewerContentBinding 
      viewerId="org.eclipse.ui.thermo.navigator.view"> 
      <includes> 
      <contentExtension 
        pattern="org.eclipse.ui.navigator.resourceContent"/> 
      </includes> 
     </viewerContentBinding> 
</extension> 

group.editgroup.reorganizeため除き、コンテキストメニューに追加する拠出を停止DOES ...これは見て始めています私にバグのように。

明白な解決策は、私の<popUpMenu>から挿入ポイントを削除することですが、それらなしでアプリケーションが例外をスロー:

Throwable: java.lang.IllegalArgumentException: Group not found: group.edit 

java.lang.IllegalArgumentException: Group not found: group.edit 
at org.eclipse.jface.action.ContributionManager.addToGroup(ContributionManager.java:131) 
at org.eclipse.jface.action.ContributionManager.appendToGroup(ContributionManager.java:138) 
at org.eclipse.ui.internal.navigator.resources.actions.EditActionGroup.fillContextMenu(EditActionGroup.java:74) 
at org.eclipse.ui.internal.navigator.resources.actions.EditActionProvider.fillContextMenu(EditActionProvider.java:50) 
at org.eclipse.ui.navigator.NavigatorActionService.addCommonActionProviderMenu(NavigatorActionService.java:205) 
at org.eclipse.ui.navigator.NavigatorActionService.fillContextMenu(NavigatorActionService.java:172) 
at org.eclipse.ui.internal.navigator.CommonNavigatorManager.fillContextMenu(CommonNavigatorManager.java:258) 
at org.eclipse.ui.internal.navigator.CommonNavigatorManager$4.menuAboutToShow(CommonNavigatorManager.java:273) 
at org.eclipse.jface.action.MenuManager.fireAboutToShow(MenuManager.java:335) 
at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:463) 
at org.eclipse.jface.action.MenuManager.access$1(MenuManager.java:459) 
at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:485) 

これは、再編成のグループに同じ例外がスローされます。

+1

CNFの最近の記事を追加してください(私の完成した回答を参照してください) – VonC

+0

eclipse3.5ベースのRCPでエラーが発生していないかどうかを確認できますか? – VonC

答えて

4

私は "group.edit" アクション(コピー/貼り付け)を除去することに成功し、私はそのようにやった、共通ナビゲーターの拡張ポイントを使用して:

<extension 
     point="org.eclipse.ui.navigator.viewer"> 
     <viewerActionBinding 
      viewerId="org.eclipse.ui.navigator.ProjectExplorer"> 
     <includes> 
      <actionExtension 
        pattern="my.app.client.actions.MyAppEditActionExtension"> 
      </actionExtension> 
     </includes> 
     </viewerActionBinding>  
    </extension> 
    <extension 
     point="org.eclipse.ui.navigator.navigatorContent"> 
     <actionProvider 
      class="my.app.client.workshop.MyPasteActionProvider" 
      id="my.app.client.actions.MyAppEditActionExtension" 
      overrides="org.eclipse.ui.navigator.resources.actions.EditActions" 
      priority="highest"> 
     <enablement> 
     <!-- A hack to allways be enabled --> 
     <not> 
      <systemTest 
        property="MyApp" 
        value="WONT-EVER-BE-SET"> 
      </systemTest> 
     </not> 
     </enablement> 
    </actionProvider> 
    </extension> 

そして、私のプラグインの依存関係にある「org.eclipse.ui.navigator.resources」を追加して、私はこのような「MyPasteActionProvider」を実装:

import org.eclipse.jface.action.IContributionItem; 
import org.eclipse.jface.action.IMenuManager; 
import org.eclipse.ui.internal.navigator.resources.actions.EditActionProvider; 

/** 
* Create the Edit actions (Cut/Copy/Paste) 
* and register then globally in the workbench using EditActionProvider. 
* <p/> 
* Then, removes the Copy/Paste contributions in the pop-up menu. 
*/ 
public class MyPasteActionProvider extends EditActionProvider { 
    public void fillContextMenu(IMenuManager menu) { super.fillContextMenu(menu); 
    // remove Copy/Paste contributions 
    IContributionItem copyItemRemoved = menu.remove("org.eclipse.ui.CopyAction"); 
    IContributionItem pasteItemRemoved = menu.remove("org.eclipse.ui.PasteAction"); 
    } 
} 

まあ、それは「がっかりです私は落ち込んでいました;-) JM.D

1

このthread suggestsメニュー項目が最初の場所に表示される原因となっているものを削除するには:

彼らは、アクション・セットにおそらくあるので、あなたは攻撃的な貢献を引き起こしているアクションのセットを識別することができれば、あなたができますあなたのWorkbenchAdvisorにこのような何かを:

ActionSetRegistry reg = WorkbenchPlugin.getDefault() 
      .getActionSetRegistry(); 


    IActionSetDescriptor[] actionSets = reg.getActionSets(); 
    String[] removeActionSets = new String[] { 
     "org.eclipse.ui.cheatsheets.actionSet", 
     "org.eclipse.ui.edit.text.actionSet.annotationNavigation", 
     "org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo", 
      "org.eclipse.ui.WorkingSetActionSet", 
     "org.eclipse.update.ui.softwareUpdates", }; 


    for (int i = 0; i < actionSets.length; i++) 
    { 
     boolean found = false; 
     for (int j = 0; j < removeActionSets.length; j++) 
     { 
      if (removeActionSets[j].equals(actionSets[i].getId())) 
       found = true; 
     } 


     if (!found) 
      continue; 
     IExtension ext = actionSets[i].getConfigurationElement() 
       .getDeclaringExtension(); 
     reg.removeExtension(ext, new Object[] { actionSets[i] }); 
    } 

私が見つけた最も近いバグがsimilar hackと、145233: Make more obvious way to specify input (for RCP apps)です。
バグ143430 (CommonNavigator requires initialInput to be Adaptable)がより一般的であり、CNFがeclipse3.5(Galileo)で改善されたことを示します。
3.5とカスタムCNFクラスにもこの問題がありますか?記事「Eclipse CNF: Navigator Content Extensions」で述べたように


、CNFはeclipse3.5で進化してきましたが、この記事では、真のカスタムコンテキストメニュー項目で、いくつかの木を持っているようです。

alt text http://www.techjava.de/wp-content/uploads/CNF2-rename-child.png

+0

私はこの提案を試みたが、うまくいかなかった。その理由は、それがもう少し前に非難されたということです。おそらく、新しいAPIでこれを行う新しい方法がありますか? – user157916

+0

そうかもしれませんが、どのEclipseのバージョンを使用していますか? – VonC

+0

私はeclipse rpc 3.4を使用しています – user157916

1

通常、最近のバージョンのEclipse(3)にはCommand Frameworkを使用する必要があります。3以上)、これはCommon Navigatorでポップアップメニューを提供する仕組みに取って代わるものです。

関連する問題