# Eclipse: Contextmenu id erhalten?



## BerNda (23. Feb 2012)

Hi,

ich möchte gerne über das Extensionframework in der plugin.xml für mein Eclipseplugin einen neuen Eintrag in das Kontextmenu hinzufügen, der in 2-3 Contextmenus vorkommt.

Ich hab diese locationUri für "alle" contextmenus gefunden: "popuprg.eclipse.ui.popup.any?after=additions"

Aber alle sind zuviele, nun krieg ich aber nicht heraus, wie ich von einem bestimmten fenster die Kontext-uri bekomme.

Ich will meinen Eintrag z.B. im Contextmenu der Outlineview sehen. ich hab daher auf gut glück versucht "popuprg.eclipse.ui.popup.ContentOutline?after=additions", aber das funktioniert nicht.

Wie kann man diese Menu-URIs ermitteln? Ich finde dazu nichts, auch dieser Plugin-Spy Alt+Shift+F1 spuckt mir die URI nicht aus.
Kann mir jemand helfen?


----------



## Wildcard (23. Feb 2012)

Menu Contributions - Eclipsepedia


> For popup: valid root ids are any registered context id (*which defaults to the part id if no context menu id was given at registration time*) and org.eclipse.ui.popup.any for all registered context menus.


----------



## BerNda (24. Feb 2012)

Danke,

klappt so weit ganz gut. Nur die locationURI für die ContentOutline funktioniert nicht.

"popuprg.eclipse.ui.views.ContentOutline?after=additions" 

Ich verstehe nicht ganz warum? Für den package-explorer klappt das wunderbar


----------



## Wildcard (24. Feb 2012)

Die Outline ist erstmal ein leerer Container der sich anhand einer aktuellen Selektion mit ganz verschiedenartigem Inhalt füllt. Es hängt also von der konkreten Outline Page Implementierung ob, ob sie Menu Additions erlaubt und ob sie eine spezielle ID dafür verwendet.


----------



## BerNda (25. Feb 2012)

hm, das wusste ich nicht.

Wenn diese any-id benutze, sehe ich mein option im kontextmenu. Also prinzipiell muss das für z.b. das Java-ContentOutlining gehen, aber wie Spreche ich den jetzt eine konkrete Outlining-id an? Der plugin-spy liefert mir nur die Id des Kontainers?


----------



## Wildcard (25. Feb 2012)

Der Plugin Spy zeigt die aber auch die Klasse der aktiven Page. Also einfach mal im Code nachschauen ob du fündig wirst


----------



## BerNda (26. Feb 2012)

In der Doku steht das hier:

The content outline page of the Java editor. The viewer implements a proprietary update mechanism based on Java model deltas. It does not react on domain changes. It is specified to show the content of ICompilationUnits and IClassFiles. Publishes its context menu under JavaPlugin.getDefault().getPluginId() + ".outline".

Kann man Java-Code in der plugin.xml spezifieren oder muss ich meinen Menueintrag immer programmatisch da rein bringen?


----------



## Wildcard (27. Feb 2012)

> Kann man Java-Code in der plugin.xml spezifieren oder muss ich meinen Menueintrag immer programmatisch da rein bringen?


Du brauchst keinen Java Code in der plugin.xml. JavaPlugin.getDefault().getPluginId() ist eine Konstante (der symbolic name des Bundles)


----------



## BerNda (28. Feb 2012)

hm, sorry. Klappt nicht.

Damit ich das richtig verstehe, BundleName ist dann doch die ConteView locationUri (org.eclipse.ui.views.ContentOutline) oder woher kriege ich die Bundle id von einem fremden Plugin?


----------



## Wildcard (28. Feb 2012)

Schau einfach in die Klasse JavaPlugin, da steht sie drin.


----------

