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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top