org.eclipse.ui.popupMenus

Lisäosa voi tehdä lisäyksiä toisten näkymien ja muokkausohjelmien ponnahdusvalikoihin org.eclipse.ui.popupMenus-laajennuspisteen avulla.

Voit lisätä toiminnon tiettyyn ponnahdusvalikkoon sen tunnuksella (viewerContribution) tai liittämällä sen tiettyyn objektilajiin (objectContribution). 

Readme-työkalu määrittää molemmat. Seuraavassa on ensin objektilisäys.  

<extension point = "org.eclipse.ui.popupMenus">
     <objectContribution
   id="org.eclipse.ui.examples.readmetool"
        objectClass="org.eclipse.core.resources.IFile"
	    nameFilter="*.readme">
	    <action id="org.eclipse.ui.examples.readmetool.action1"
	       label="%PopupMenus.action"
		   icon="icons/ctool16/openbrwsr.png"
	      menubarPath="additions"
		   helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
	       class="org.eclipse.ui.examples.readmetool.PopupMenuActionDelegate"	
           definitionId="org.eclipse.ui.examples.readmetool.action1"
		   enablesFor="1">
	   </action>
	 </objectContribution>
 	 ...

Objektilisäys

Toiminto "Show Readme Action" lisätään objektiluokalle IFile. Tämä tarkoittaa sitä, että lisäys näkyy kaikissa näkymissä, joissa on IFile-objekteja, jos IFile-objekteja on valittu. Tästä näkyy myös, että valintaperusteita on rajoitettu edelleen nimisuodattimella (nameFilter="*.readme") ja koskemaan yksittäisiävalintoja (enablesFor="1"). Kuten edellä on kuvattu, tämän valikon rekisteröinti ei aja mitään koodia lisäosasta, ennen kuin valikon vaihtoehto varsinaisesti valitaan.

Kun valikon vaihtoehto valitaan, työympäristö ajaa määritetyn luokan.  Koska ponnahdusvalikko on esitelty objectContribution-muotoisena, toimitetun luokan on toteutettava IObjectActionDelegate

Toiminto toteutetaan PopupMenuActionDelegate-luokassa.  

   public void run(IAction action) {
      MessageDialog.openInformation(
         this.part.getSite().getShell(),
         "Readme Example",
         "Popup Menu Action executed");
   }

Ponnahdusvalikon lisäys näkyy, kun valitaan readme-tiedosto resurssien siirtymisnäkymästä.

Katseluohjelmalisäys

Katseluohjelmalisäystä käytetään tekemään lisäys tiettyyn näkymään tai muokkausohjelman ponnahdusvalikkoon tunnuksen avulla. Seuraavassa on esitetty readme-työkalun katseluohjelmalisäys:

      ...
      <viewerContribution
        id="org.eclipse.ui.examples.readmetool2"
        targetID="org.eclipse.ui.examples.readmetool.outline">
	    <action id="org.eclipse.ui.examples.readmetool.action1"
	       label="%PopupMenus.action"
		   icon="icons/ctool16/openbrwsr.png"
	      menubarPath="additions"
		   helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
           definitionId="org.eclipse.ui.examples.readmetool.action1"
	       class="org.eclipse.ui.examples.readmetool.ViewActionDelegate">	
	   </action>
       </viewerContribution>
</extension>
Huomautus:  Nimi viewerContribution on jonkin verran harhaanjohtava, sillä se ei liity JFace-katseluohjelmiin. Parempi nimi olisi popupMenuContribution.

Kun laajennus on viewerContribution, toimitetun luokan on toteutettava IEditorActionDelegate- tai IViewActionDelegate-rajapinta sen mukaan, lisätäänkö toiminto muokkausohjelman vai näkymän ponnahdusvalikkoon. 

Määrite targetID määrittää näkymän, jonka ponnahdusvalikkoon muutos kohdistuu.  Tässä tapauksessa lisätään toiminto yhteen readme-työkalun näkymistä, jäsentelytoimintoon.  Toiminto itsessään on samanlainen kuin muut aiemmin käsitellyt.  Lisäykselle määritetään toiminnon tunnus (id), määritystunnus (definitionId), nimiö (label) ja kuvake (icon) sekä polku (path) ponnahdusvalikon sisällä.  Toiminto näkyy ainoastaan readme-hahmotelmanäkymän ponnahdusvalikossa.

Huomautus: Määritystunnuksen avulla toiminto voidaan yhdistää näppäinsidonnoissa käytettävällä laajennuksella org.eclipse.ui.commands luotuun komentoon. Lisätietoja on kohdassa Komennot.

Rajapinnat, joita tarvitaan lisäämään viewerContribution popupMenus-laajennuspisteeseen, ovat samat, joita viewActions- ja editorActions-laajennuspisteet edellyttävät. Jos haluat lisätä saman toiminnon ponnahdusvalikkoon ja näkymän tai muokkausohjelman paikalliseen valikkoon, voit käyttää molemmille laajennuksille samaa luokkaa.