2009-08-27 18 views
12

Nello sviluppo di plugin di eclipse, voglio aggiungere un elemento (es: Mystyle) nel menu popup.Come aggiungere elementi nel menu popup?

Per un esempio,

progetti -> tasto destro -> Nuovo -> MyStyle

Come posso raggiungere questo obiettivo in Plug-in Eclipse di sviluppo?

saluti Mathan

risposta

23

Qualcosa del genere dovrebbe farlo (segue 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> 

Vedi Menucontribution

Definisce un insieme ordinato di aggiunte alla struttura di comando interfaccia utente. Gli elementi definiti verranno aggiunti nella struttura dell'interfaccia utente di comando nella posizione specificata dall'elemento locationURI.

Questo dovrebbe essere il punto di partenza per tutti i contributi in menu, barre degli strumenti o ritaglio, ovunque si verifichino nell'interfaccia utente.

  • locationURI - Una specifica URI che definisce il punto di inserimento alla quale verranno aggiunti le aggiunte contenute.
    Il formato per l'URI è composto da tre parti fondamentali:
    • Schema:. Uno dei "menu", "pop-up" o" barra degli strumenti
      Indica il tipo di manager utilizzato per gestire i contributi
    • Id: è l'id di un menu esistente, un id di vista o l'id del tipo di editor
    • Query: il formato di query è <placement>=<id> dove: <placement> è "prima" o "dopo" e <id> è il id di una voce di menu esistente

Show Readme Action

Vedi anche org.eclipse.ui.popupMenus, org.eclipse.ui.menus -Estensione punti con un menuContribution che ha la sua punta locationURI -attribute a popup:org.eclipse.ui.popup.any?after=additions.
Avvertenza, come menzionato nel commento Prashant Bhate, il pacchetto org.eclipse.ui.popupMenus è deprecato.
Vedere la domanda Missing link between objectContribution and command per ulteriori informazioni.

+1

Penso che org.eclipse.ui.popupMenus non sia disponibile ora vedi http://stackoverflow.com/questions/5915550/missing-link-between-objectcontribution-and-command –

+1

@Prashant: ottimo punto. Ho modificato la mia risposta per riflettere il tuo commento. – VonC

+0

@VonC I link di eclipse.org nella tua risposta sono ora infranti. – reprogrammer

8

mi ci è voluto un po 'per risolvere questo problema esatto solo ora, quindi mi metterò risposta alla domanda di OP (aggiungere a File-> Nuovo menu).

Dove contribuire (common.new.menu)

grazie a questo post, ho scoperto che si desidera contribuire al popup: common.new.menu? after = new. perchè lo chiedi? diamine se lo so; ma funziona

Risultato

(Quando C/C++ è prospettiva attivo)

enter image description here

(W gallina 'non e' C/C++ come punto di vista attivo)

enter image description here

Ecco il mio esempio 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> 

ho aggiunto una parte importante qui, il parametro 'visibleWhen'. Mostra solo Nuovo comando di root da Justin quando ci si trova nella prospettiva C/C++. Risulta complicato capirlo, quindi la mia inclusione nell'esempio. Qui ci sono risorse utili ho scavato mentre la ricerca che:

ho scavato il nome della C Prospettiva org.eclipse.cdt.ui.CPerspective da dolorosamente scavando attraverso il plugin.xml del plugin org.eclipse.cdt.ui.

ora se qualcuno potesse dirmi come guardare facilmente questi uri/risorse/proprietà in futuro ... omg.

Problemi correlati