Announcement

Collapse
No announcement yet.

Menüeinträge aus org.eclipse.ui.ide.workbench entfernen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Menüeinträge aus org.eclipse.ui.ide.workbench entfernen

    Hallo

    ich habe eine RCP-Applikation geschrieben.
    Für das Prototyping habe ich mich dafür entschieden, beim Produktexport nicht meine Application sondern die org.eclipse.ui.ide.workbench zu verwenden.

    Die RCP Applikation ist nun im Laufe der Entwicklung immer weiter gewachsen und nun stehe ich vor dem Problem, das ich Plugins (nicht meine) verwende, welche Erweiterungspunkte der org.eclipse.ui.ide.workbench bedienen. Resultat ist, das ich nun in meiner RCP-Anwendung auf einmal Menüs und Aktionen habe, die ich nicht möchte.

    Ich sehe momentan zwei Möglichkeiten:
    1) Ich stecke Entwicklungsaufwand in meine eigene Application und integriere nur das was ich brauche.
    • sehr aufwendig

    2) Ich entferne Menüeinträge aus der org.eclipse.ui.ide.workbench

    Mit Punkt 2 habe ich schon ein wenig experimentiert.

    Code:
    		MenuManager mm = ((ApplicationWindow) PlatformUI.getWorkbench().getActiveWorkbenchWindow()).getMenuBarManager();
    		for (int i = 0; i < mm.getItems().length; i++) {
    			IContributionItem ci = mm.getItems()[i];
    			System.out.println(ci.getId());
    			if ("org.eclipse.ui.run".equals(ci.getId())) {
    				mm.remove(ci.getId());
    			}
    		}
                                    mm.updateAll(true);
    Die Frage die sich mir stellt ist die, wo die korrekte Stelle für den Code ist, da er ausgeführt sein muss, bevor der Nutzer die Anwendung sieht.

    Ich habe es dem Erweiterungspunkt org.eclipse.ui.startup versucht, dort steht mir jedoch noch kein aktives WorkbenchWindow zur Verfügung.
    Ich habe es auch mit
    Code:
    IWindowListener
    versucht, aber nicht die richtige Stelle/Zeitpunkt gefunden, da dieser nur auf Änderungen reagiert und ich den Listener scheinbar zu spät anmelde.

    Hat jemand eine Idee?

  • #2
    Hallo,

    du kannst das im WorbenchAdvisor in der Methode postStartup() machen. Diese Methode wird nämlich dann ausgeführt, wenn die Fenster schon erzeugt aber noch nicht angezeigt werden.

    Dafür muss man eigenen WorkbenchAdvisor erzeugen (vielleicht hast du ihn schon) und die Standard-Methode postStartup() überschreiben.

    Comment


    • #3
      Das Problem ist dabei allerdings das mir der anzupassende WorkbenchAdvisor leider nicht gehört.

      Comment

      Working...
      X