1

RCPプログラムでは、ワークベンチウィンドウにメニュー「デモ」を追加し、「デモ」の下にセパレータ「追加」を追加しました。コードは以下のとおりです。

public class ApplicationActionBarAdvisor extends ActionBarAdvisor {

private ExampleAction exampleAction;

@Override
protected void makeActions(IWorkbenchWindow window) {
    // TODO Auto-generated method stub
    super.makeActions(window);

    exampleAction = new ExampleAction(window);      
}

@Override
protected void fillMenuBar(IMenuManager menuBar) {
    // TODO Auto-generated method stub
    super.fillMenuBar(menuBar);

    MenuManager demoMenu = new MenuManager("&Demo", "demo");
    demoMenu.add(exampleAction);
    demoMenu.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));      
    menuBar.add(demoMenu);
}
 ..............

}

ここで、「デモ/追加」の位置にサブメニューを提供したいと思います。以下のようにactionSet拡張ポイントを宣言します。

<extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            id="RCP-View-Example.actionSet"
            label="actionSet">
         <menu
               id="RCP-View-Example.menu"
               label="ActionSetMenu"
               path="demo/additions">
            <groupMarker
                  name="menuItem">
            </groupMarker>
         </menu>
         <action
               class="Action1"
               id="RCP-View-Example.action"
               label="Action"
               menubarPath="RCP-View-Example.menu/menuItem"
               style="push"
               toolbarPath="main/additions">
         </action>
      </actionSet>
   </extension>
   <extension
         point="org.eclipse.ui.actionSetPartAssociations">
      <actionSetPartAssociation
            targetID="RCP-View-Example.actionSet">
         <part
               id="my.view">
         </part>
      </actionSetPartAssociation>
   </extension>

メニューが「デモ」メニューの下に表示されているのがわかりません。メニューパスを「path="demo/additions」から「path="org.eclipse.ui.main.menu / demo / additions」に変更しましたが、まだ表示されません。

誰かが私のプログラムの何が悪いのかを知るのを手伝ってもらえますか?

メニューパスをpath="demo/additionsからpath="additions"に変更します。ビューを開くと、「デモ」の後にメニューが表示されます。ただし、actionSetPartAssociations拡張ポイントで指定されたビューを閉じた後も、メニューは表示されたままです。メニューに関連付けられているビューを閉じると、メニューが消えると思います。プログラムの何が問題になっていますか?

4

2 に答える 2

1

ドキュメントのこのメモはここに収まると思います:

現在、アクション セットに影響する実装上の制限があります。アクション セット内で参照されるメニュー構造全体を定義することが重要です。したがって、たとえば、別のアクション セットで「example」というメニューが定義されている場合、既存の「example」に依存することはできません。「例」メニューを使用するすべてのアクション セットで再定義する必要があります。

したがって、サブメニューへの完全なパスが含まれているはずのサブメニュー path="demo/additions" に問題がある可能性があります。そのサブメニューが既にある場合は、そのメニュー内のアクションで Alt+Shift +F2 を試して、そのメニューの ID を検索し、そこから作業することができます。

ただし、メニューを使い始めたばかりの場合は、すぐにコマンド フレームワークを使用することをお勧めします。既に確立されたリッチ クライアントを使用している場合でも、コマンドを好きな場所に簡単に配置できます。また、actionSets ExtensionPoint は Eclipse Juno 以降では非推奨です。優れたコマンド チュートリアルは、ここにあります。

于 2012-09-19T12:16:14.810 に答える
0

org.eclipse.ui.internal.navigator.resources.actions.NewActionProvider.java を参照してください。

fillContextMenu() メソッドを参照してください。そこでサブメニューを作成しました。理解するのに役立ちます。

于 2012-09-19T12:27:47.580 に答える