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