2009-09-12 10 views
6

Ich hatte dieses Problem häufig und habe noch keine Lösung gefunden: Immer wenn ich eine neue Eclipse RCP-basierte Anwendung schreibe und Plugins von der Eclipse-Plattform einschließe, erben ich UI-Beiträge von einigen diese Plugins.Plugin-Beiträge in Eclipse RCP-Anwendung deaktivieren

Die meisten dieser Beiträge (Menüeinträge, Tastaturkürzel, Eigenschaftenseiten) sind nützlich, aber manchmal würde ich einige dieser Beiträge lieber deaktivieren, nur weil ich sie wirklich nicht brauche und sie die Benutzer vielleicht verwirren könnten.

Kennt jemand den offiziellen oder eine praktische Möglichkeit, ausgewählte Beiträge in Eclipse RCP-Anwendungen zu deaktivieren/verbieten?

+0

Ich glaube nicht, removeContributionFactory() ist für die Deaktivierung * aller * Beitrag, sondern ist eher eine "dispose" -Mechanismus für die Aufhebung der Registrierung einer Ansicht/Menü Beitrag, und ich schlug vor, das für explizit entfernen zu verwenden Beiträge von * anderen * Plugins. – VonC

+0

Es ist also: a/not * genau * was Sie suchen, b/nicht einfach, da Sie diese Beiträge erkennen und entfernen müssen. Aber das habe ich bisher erreicht. – VonC

+0

Ihren Kommentar erneut lesen: Nein, Sie deaktivieren * * nicht * alle Beiträge (von * allen * anderen Plugins), aber Sie könnten am Ende alle Beiträge eines externen Plugins deaktivieren. – VonC

Antwort

3

Die einzige Methode, die das wäre zu tun nahe kommt:

IMenuService::removeContributionFactory()

Paul Webster für die Sichtbarkeit des Menüs ein IMenuService::addOverride() zu ändern angerufen hat, jeden Beitrag zu verhindern, aber diese Idee hat nicht war schon integriert.

Sie können ein Beispiel zum Entfernen eines Beitrags in dieser org.eclipse.ui.tests.menus.MenuBuilder Klasse sehen;

public static void removeMenuContribution() { 
    if (!PlatformUI.isWorkbenchRunning()) { 
     return; 
    } 
    IMenuService menuService = (IMenuService) PlatformUI.getWorkbench() 
      .getService(IMenuService.class); 
    if (menuService==null) { 
     return; 
    } 
    menuService.removeContributionFactory(viewMenuAddition); 
    viewMenuAddition = null; 
    menuService.removeContributionFactory(viewToolbarAddition); 
    viewMenuAddition = null; 
} 
+0

Danke! Aber bekomme ich es richtig - ich deaktiviere * alle * Beiträge auf diese Weise? Keine Möglichkeit, einzelne Beiträge zu deaktivieren, die möglicherweise durch ihre IDs identifiziert werden? –

0

Equinox Transformationen können auch XLST Transformationen zu liefern, die unerwünschte UI entfernen Beiträge verwendet werden.

Verwandte Themen