Eclipse - programmatisches Anlegen von Menüeinträgen vor Pluginstart

DarkWizzard

Mitglied
Hallo,

der Titel fasst das, womit ich grad Probleme habe, sehr gut zusammen.

Für meine Bachelorarbeit soll ich Plugins für Eclipse schreiben. Nun wär das ja zu einfach wenn man alles so benutzen würde wie gedacht (Menüeinträge über Extensions in der plugin.xml definieren). Ich soll da also was anderes machen (in die Tiefe gehen würde länger dauern) und hänge da grad an folgendem Problem:

Ich will, bevor das Plugin gestartet ist, Menüeinträge programmatisch hinzufügen.
Hat jemand ne Ahnung ob das geht?

Menüeinträge hinzufügen ist ja nicht so das Problem. Ich mach das über
Code:
IMenuManager menu = getEditorsite().getActionsBars().getMenuManager.findMenuUsingPath("bla");
menu.add(Item)

wobei item mein CommandContributionItem ist.
Code vor dem Pluginstart, also gleich mit dem Start von Eclipse ausführen ist auch kein Problem. Dafür gibts das Interface "org.eclipse.ui.IStartup", das die earlyStartup()-Methode definiert über die ich das machen kann.

Mein Problem ist jetzt nur, dass getEditorSite() null zurückgibt. Macht ja auch Sinn, weil der Editor nicht *wirklich* gestartet wurde. Geht so also nicht und selbst wenn würde das vermutlich nur zu sehen/aktiv sein, wenn der Editor offen/im Vordergrund ist. Weiß jemand ob es eine andere Möglichkeit gibt, Menüs programmweit zu definieren?

Wäre für jede Hilfe dankbar :)
 
Hallo,

was meinst du genau mit: Menüeinträge hinzufügen bevor ein plugin gestartet ist?
Wenn du die Menüstrukturen über die plugin.xml werden diese auch Registriert / verarbeitet. Bevor dein Plugin aktiviert wird. Sprich die Menüeinträge sind schon sichtbar. Die Funktionalität / der Code dahinter wird jedoch erst dann geladen wenn er das erste mal verwendet wird.

Gruß Tom
 
Hallo,

genau diese Funktionalität, dass die Menüstrukturen aus der plugin.xml registriert werden bevor das plugin aktiviert wird, würde ich gerne programmatisch haben.

Um Code vor der Aktivierung eines Plugins auszuführen gibt es das Interface "IStartup" mit der Methode "earlystartup()". Aber zu dem Zeitpunkt an dem diese Methode ausgeführt wird gibts noch keine aktive Workbench, zumindest kann ich nicht drauf zugreifen.

Gruß,
DarkWizzard
 
Zurück