Ändern Menüpunkte Programmatically Von Eclipse Plugin
-
05-07-2019 - |
Frage
Ich möchte in der Lage sein, vollständig Menüpunkte beim Start meiner Eclipse-Plugin-Anwendung zu entfernen. Was ich tun möchte, ist in der Lage sein, später diese Menüpunkte Logik je nach Unternehmen basierend hinzuzufügen aus der Aktionen des Benutzers. Gibt es eine Möglichkeit, dies zu tun? Ich habe bei Verwendung von Beiträgen gesucht, aber ich fühle mich wie es ist nicht genau das sein würde, was ich will.
Wenn es können zu tun, was ich brauche, es zu tun, wie gehe ich über sie verwenden? Vielen Dank im Voraus für jede Hilfe.
Lösung
Sie können das Menü aus dem MenuManager erhalten, und dann die Beiträge ändern. Dieser Code-Schnipsel zeigt, wie das Menü Manager für den Zugriff auf und ein benanntes Element entfernen.
Sie werden den Überblick über die entfernte Elemente und Elementindizes zu halten brauchen, um sie wiederherzustellen. Das einzige Problem ist, dass die indexOf Methode nicht sichtbar ist. Das Hinzufügen dieser Schnipsel in einen Typ in dem gleichen Paket wie MenuManager und Hinzufügen zu einem Fragment ist eine Möglichkeit, dass rund.
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();
}
}
Andere Tipps
Es gibt eine Reihe von Möglichkeiten, um die Sichtbarkeit des Menü oder die Symbolleiste Elemente in einer RCP-Anwendung zu steuern.
Wenn Sie die Kontrolle über das haben Plug-in, das Element trägt (s) in Frage, dann ist der einfachste Weg, in der Regel den visibleWhen
Ausdruck mit dem menus
Erweiterungspunkt zugeordnet zu verwenden. Wenn Sie einigen internen Zustand Sie überprüfen möchten, dann können Sie das test
Element des Ausdrucks verwenden zusammen mit einem propertyTester
.
Eine Alternative ist es, Aktivitäten zu verwenden. Diese können viele andere Dinge Ihrer Anwendung steuern, haben Sie benötigen, um einige der integrierten in Dialogen neu zu implementieren. Sehen Sie diesen Blog-Eintrag „Verwenden von Aktivitäten für die Benutzerverwaltung“ für einige Details.