Eclipseプラグイン・アプリケーションの起動時にメニュー項目を完全に削除したいと考えています。私がやりたいことは、後でこれらのメニュー項目を、ユーザーの行動に基づいてビジネスロジックに応じて追加できるようにすることです。これを行う方法はありますか?私は寄付を使って調べましたが、私が望むものと正確に一致しないような気がします。Eclipseプラグインからプログラム的にメニュー項目を変更
がの場合は、どうすれば使用するのですか?ご協力いただきましてありがとうございます。
Eclipseプラグイン・アプリケーションの起動時にメニュー項目を完全に削除したいと考えています。私がやりたいことは、後でこれらのメニュー項目を、ユーザーの行動に基づいてビジネスロジックに応じて追加できるようにすることです。これを行う方法はありますか?私は寄付を使って調べましたが、私が望むものと正確に一致しないような気がします。Eclipseプラグインからプログラム的にメニュー項目を変更
がの場合は、どうすれば使用するのですか?ご協力いただきましてありがとうございます。
MenuManagerからメニューを取得し、寄稿を変更することができます。このスニペットでは、メニューマネージャにアクセスして名前付きアイテムを削除する方法を示します。
削除したアイテムとアイテムのインデックスを復元する必要があります。唯一の問題は、indexOfメソッドが表示されないことです。このスニペットをMenuManagerと同じパッケージ内の型に追加し、それをフラグメントに追加することは一方的な方法です。
IWorkbenchWindow window = Workbench.getInstance().getActiveWorkbenchWindow()
if(window instanceof WorkbenchWindow) {
MenuManager menuManager = ((WorkbenchWindow)window).getMenuManager();
//TODO you may need to remove items from the coolbar as well
ICoolBarManager coolBarManager = null;
if(((WorkbenchWindow) window).getCoolBarVisible()) {
coolBarManager = ((WorkbenchWindow)window).getCoolBarManager2();
}
Menu menu = menuManager.getMenu();
//you'll need to find the id for the item
String itemId = "menuId";
IContributionItem item = menuManager.find(itemId);
// remember position, TODO this is protected
int controlIdx = menu.indexOf(mySaveAction.getId());
if (item != null) {
// clean old one
menuManager.remove(item);
// refresh menu gui
menuManager.update();
}
}
RCPアプリケーションでメニュー項目またはツールバー項目の表示を制御するには、いくつかの方法があります。
問題のアイテムに寄与するプラグインを制御できれば、最も簡単な方法は通常menus
拡張ポイントに関連付けられたvisibleWhen
式を使用することです。チェックしたい内部状態がある場合は、式のtest
要素をpropertyTester
と一緒に使用することができます。
別の方法として、アクティビティを使用する方法があります。これらはアプリケーションの他の多くのものを制御することができます。組み込みのダイアログのいくつかを再実装する必要があるかもしれないと考えました。詳細については、このブログのエントリー"Using activities for user management"を参照してください。
これはIDEベースのアプリケーションでも可能ですか?たとえば、 'Project 'のようなEclipseのメニューのいくつかを削除する。 – nbz