1

このチュートリアルを使用して、実行時に構築されるメニューを定義しました。しかし、私が取りたい次のステップは、何らかのイベントが発生したときに、プログラムでこのメニューを再構築したいということです。どうすればこれを行うことができますか?

4

2 に答える 2

2

メニューが表示されるたびにすべてのアイテムを削除するようにメニュー マネージャーに指示できます。これにより、メニューを再構築する機会が得られます。

MenuManager mm = new MenuManager();
mm.setRemoveAllWhenShown(true);

mm.addMenuListener(new IMenuListener() {
    public void menuAboutToShow(IMenuManager manager) {
        if(giraffes) {
            Action giraffeAction = new Action("Giraffe") {
                public void run() {
                    // do giraffe-y stuff
                }
            };
            mgr.add(giraffeAction);
        }
    }
});

Control myControl = myViewer.getControl();
myControl().setMenu(mm.createContextMenu(myControl));
于 2012-10-04T14:13:17.383 に答える
1

を使用する代わりに、 をExtensionContributionFactory使用して必要なメニューに要素org.eclipse.ui.menusを追加しdynamicます。サブクラスを提供する実装クラスとorg.eclipse.ui.actions.CompoundContributionItem、メニューを開くたびにメニューのその部分を再構築する機会があります。

編集:例へのポインタを追加します。

plugin.xml の違いについては、 http: //git.eclipse.org/c/platform/eclipse.platform.ui.git/tree/examples/org.eclipse.ui.examples.contributions/plugin.xml#n666を参照してください。実装クラスもそのプラグインに含まれています。

于 2012-10-11T03:02:51.313 に答える