2009-08-27 25 views
12

En el desarrollo del complemento eclipse, quiero agregar un elemento (por ejemplo: Mystyle) en el menú emergente.¿Cómo agregar elementos en el menú emergente?

Para un ejemplo,

Explorador de proyectos -> Haga clic derecho -> Nuevo -> MyStyle

¿Cómo puedo lograr esto en Eclipse Plugin para el desarrollo?

Saludos Mathan

Respuesta

23

Algo así debe hacerlo (después de 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> 

Ver Menucontribution

Define un conjunto ordenado de adiciones a la estructura de mando de la interfaz de usuario. Los elementos definidos se agregarán a la estructura de UI del comando en la ubicación especificada por el elemento locationURI.

Este debería ser el punto de partida para todas las contribuciones a menús, barras de herramientas o recorte, donde sea que ocurran en la interfaz de usuario.

  • locationURI - Una especificación URI que define el punto de inserción a la que se añadirán las adiciones contenidas.
    El formato de la URI se compone de tres partes básicas:
    • Esquema:. Una de "menú", "emergente" o" barra de herramientas
      Indica el tipo del gestor utiliza para manejar las contribuciones
    • id: Este es el ID de un menú existente, a fin de identificación o el identificador del 'tipo' editor de
    • pregunta: el formato de la consulta es <placement>=<id> donde: <placement> está bien "antes" o "después" y <id> es el id de un elemento de menú existente

Show Readme Action

Ver también org.eclipse.ui.popupMenus, org.eclipse.ui.menus -Ampliación punto con un menuContribution que tiene su locationURI apuntando a -attribute popup:org.eclipse.ui.popup.any?after=additions.
Advertencia, como Prashant Bhate menciona en el comentario, ese paquete org.eclipse.ui.popupMenus está en desuso.
Ver pregunta Missing link between objectContribution and command para más.

+1

Creo que org.eclipse.ui.popupMenus está privado ahora vea http://stackoverflow.com/questions/5915550/missing-link-between-objectcontribution-and-command –

+1

@Prashant: muy buen punto. He editado mi respuesta para reflejar su comentario. – VonC

+0

@VonC Los enlaces de eclipse.org en su respuesta ahora están rotos. – reprogrammer

8

me tomó un tiempo resolver este problema exacto en este momento, así que voy a responder a la pregunta de OP (agregar a Archivo-> Nuevo menú).

Dónde contribuir (common.new.menú)

Gracias a esta publicación, descubrí que desea contribuir a la ventana emergente: common.new.menu? after = new. ¿Porque preguntas? diablos si lo sé; pero funciona.

Resultado

(Cuando C/C++ es perspectiva activo)

enter image description here

(W gallina 'no' C/C++ como perspectiva activo)

enter image description here

Aquí está mi ejemplo 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> 

I añadió una parte importante aquí, el parámetro 'visibleWhen'. Esto solo muestra New Root Command From Justin cuando está en la perspectiva C/C++. Resulta ser difícil de entender, por lo tanto, mi inclusión en el ejemplo. Éstos son recursos útiles Desenterré mientras que la investigación que:

Desenterré el nombre de la C Perspectiva org.eclipse.cdt.ui.CPerspective por dolorosamente explorando el complemento plugin.xml del complemento org.eclipse.cdt.ui.

ahora si alguien pudiera decirme cómo ver fácilmente estas uri/resources/properties en el futuro ... omg.

Cuestiones relacionadas