2009-08-27 16 views
12

In Eclipse-Plugin-Entwicklung, möchte ich ein Element hinzufügen (zB: Mystyle) im Popup-Menü.Wie fügt man Elemente im Popup-Menü hinzu?

Für eine Instanz,

Projekt-Explorer -> Rechtsklick -> Neu -> MyStyle

Wie kann ich dies in Eclipse Plugin-Entwicklung erreichen?

Grüße Mathan

Antwort

23

So etwas sollte es tun (nach this thread):

<extension 
     point="org.eclipse.ui.menus"> 
     <menuContribution 
     locationURI= 
     "popup:org.eclipse.ui.navigator.ProjectExplorer#PopupMenu?after=additions"> 
     <command 
       commandId="myplugin.command.mycommand" 
       icon="icons/etool16/mycommand.png" 
       label="Run mycommand" 
       mnemonic="M1+P" 
       tooltip="Do something with this project"> 
     </command> 
     </menuContribution> 
    </extension> 

Siehe Menucontribution

Definiert eine geordnete Menge von Ergänzungen der Befehl UI-Struktur. Die definierten Elemente werden in die Befehls-UI-Struktur an dem durch das Element locationURI angegebenen Speicherort eingefügt.

Dies sollte der Ausgangspunkt für alle Beiträge in Menüs, Symbolleisten oder Trim, wo immer sie in der Benutzeroberfläche auftreten.

  • locationURI - A URI-Spezifikation, die den Einfügepunkt definiert, bei der die darin enthaltenen Zusätze hinzugefügt werden.
    Das Format für die URI aus drei grundlegenden Teilen besteht:
    • Schema:. Ein „Menü“, „Pop-up“ oder „Symbolleiste
      Gibt den Typ des Managers
    • die Beiträge zu handhaben verwendet
    • Id: Dies ist entweder die ID eines vorhandenen Menüs, eine Ansichts-ID oder die ID des Editors 'type'
    • Abfrage: Das Abfrageformat ist <placement>=<id> Dabei steht: <placement> entweder "vor" oder "nach" und <id> ist die ID eines bestehenden Menüpunkts

Show Readme Action

Siehe org.eclipse.ui.popupMenus, auch org.eclipse.ui.menus -Erweiterung Punkt mit einem menuContribution, die popup:org.eclipse.ui.popup.any?after=additions seine locationURI -Attribut Zeige hat.
Warnung, da Prashant Bhate im Kommentar erwähnt, dass Paket org.eclipse.ui.popupMenus veraltet ist.
Siehe Frage Missing link between objectContribution and command für mehr.

+1

Ich denke org.eclipse.ui.popupMenus ist jetzt bereinigt siehe http://stackoverflow.com/questions/5915550/missing-link-between-objectcontribution-and-command –

+1

@ Prashant: sehr guter Punkt. Ich habe meine Antwort bearbeitet, um Ihren Kommentar zu reflektieren. – VonC

+0

@VonC Die eclipse.org-Links in Ihrer Antwort sind jetzt gebrochen. – reprogrammer

8

Ich brauchte eine Weile, um genau dieses Problem zu lösen, also werde ich die Antwort auf die OP-Frage stellen (Hinzufügen zu Datei-> Neu).

Beitrag zum Beitrag (common.new.Menü)

Dank diesem Beitrag entdeckte ich, dass Sie Popup beitragen möchten: common.new.menu? after = new. warum fragst du? Verdammt, wenn ich es weiß; Aber es funktioniert.

Ergebnis

(bei C/C++ ist aktiv Perspektive)

enter image description here

(W Henne 'nicht' C/C++ als aktive Perspektive)

enter image description here

Hier ist mein Beispiel Plugin:

<?xml version="1.0" encoding="UTF-8"?> 
<?eclipse version="3.4"?> 
<plugin> 
    <extension 
     point="org.eclipse.ui.commands"> 
     <command 
      defaultHandler="com.justin.debug.SampleHandler" 
      id="com.justin.debug.commands.sampleCommand" 
      name="Sample Command"> 
     </command> 
    </extension> 
    <extension 
     point="org.eclipse.ui.menus"> 
     <menuContribution 
      locationURI="popup:common.new.menu?after=new"> 
     <command 
       commandId="com.justin.debug.commands.sampleCommand" 
       icon="icons/sample.gif" 
       label="New Root Command From Justin" 
       style="push"> 
      <visibleWhen 
        checkEnabled="false"> 
       <with 
        variable="activeWorkbenchWindow.activePerspective"> 
        <equals 
         value="org.eclipse.cdt.ui.CPerspective"> 
        </equals> 
       </with> 
      </visibleWhen> 
     </command> 
     </menuContribution> 
     <menuContribution 
      locationURI="popup:common.new.menu?after=new"> 
     <menu 
       id="org.ecilpse.ui.navigator.ProjectExplorer.helloJustin" 
       label="Hello Justin"> 
      <command 
        commandId="com.justin.debug.commands.sampleCommand" 
        icon="icons/sample.gif" 
        label="New Submenu Command From Justin" 
        style="push"> 
      </command> 
     </menu> 
     </menuContribution> 
    </extension> 
</plugin> 

Ich habe eine wichtige Rolle hier der Parameter 'visibleWhen'. Dies zeigt nur New Root Command von Justin wenn in der C/C++ Perspektive. Es erweist sich als schwierig, das herauszufinden, also meine Aufnahme in Beispiel. Hier sind nützliche Ressourcen, die ich ausgegraben, während die Erforschung:

ich den Namen der C-Perspektive org.eclipse.cdt.ui.CPerspective durch schmerzlich ausgegraben Durchsuche die plugin.xml des org.eclipse.cdt.ui Plugins.

jetzt, wenn mir jemand sagen könnte, wie diese uri/resources/properties in der Zukunft leicht aussehen ... omg.

Verwandte Themen