El siguiente ejemplo es en realidad de eclipse. Simplemente agrega un menú a la barra de menú y un icono a la barra de herramientas. Cuando se hace clic en el elemento de menú del nuevo menú o en el icono de la barra de herramientas, aparece un cuadro de diálogo de mensaje.
Archivo-> Nuevo-> Proyecto-> Proyecto de complemento
Nombre del proyecto: HelloWordMenu
Estructura de archivo:
MANIFEST.MF especifica la dependencia. El menú depende de la interfaz de usuario y el tiempo de ejecución. El archivo se puede generar usando el asistente, así que no se preocupe por esta parte, lo mismo ocurre con plugin.xml.
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: HelloWorldMenu Bundle-SymbolicName: HelloWorldMenu; singleton:=true Bundle-Version: 1.0.0.qualifier Bundle-Activator: helloworldmenu.Activator Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-1.6 |
plugin.xml especifica la extensión. Es el lugar central para configurar el complemento que se está desarrollando. El punto de extensión de este complemento de muestra es org.eclipse.ui.actionSets.
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.4"?> <plugin> <extension point="org.eclipse.ui.actionSets"> <actionSet id="SampleView.actionSet" label="Sample Action Set" visible="true"> <menu id="sampleMenu" label="Sample Menu"> <separator name="sampleGroup"> </separator> </menu> <action class="sampleview.actions.SampleAction" icon="icons/sample.gif" id="sampleview.actions.SampleAction" label="Sample Action" menubarPath="sampleMenu/sampleGroup" toolbarPath="sampleGroup" tooltip="Hello, Eclipse world"> </action> </actionSet> </extension> </plugin> |
La GUI para la extensión es la siguiente:
Como se muestra arriba, en este ejemplo se requiere la extensión actionSets. (Más adelante se explicará cómo decidir cuál se requiere)
El código Java en SampleAction.java y Activator.java es sencillo si no pregunta más sobre cómo funciona el marco.
Aquí está el método de ejecución del archivo SampleAction.java. La clase SampleAction implementa la interfaz IWorkbenchWindowActionDelegate. Es el llamar de vuelta método llamado por el complemento de host. El banco de trabajo creará el proxy de acción y se mostrará en la interfaz de usuario. Cuando el usuario intente utilizar la acción, se creará este delegado y se le delegará la ejecución.
public void run(IAction action) { MessageDialog.openInformation( window.getShell(), "HelloWorldMenu", "Hello, Eclipse world"); } |
Complete SampleAction.java
package sampleview.actions; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.eclipse.ui.PlatformUI; import org.eclipse.jface.dialogs.MessageDialog; /** * Our sample action implements workbench action delegate. * The action proxy will be created by the workbench and * shown in the UI. When the user tries to use the action, * this delegate will be created and execution will be * delegated to it. * @see IWorkbenchWindowActionDelegate */ public class SampleAction implements IWorkbenchWindowActionDelegate { private IWorkbenchWindow window; /** * The constructor. */ public SampleAction() { } /** * The action has been activated. The argument of the * method represents the 'real' action sitting * in the workbench UI. * @see IWorkbenchWindowActionDelegate#run */ public void run(IAction action) { MessageDialog.openInformation( window.getShell(), "SampleView", "Hello, Eclipse world"); } /** * Selection in the workbench has been changed. We * can change the state of the 'real' action here * if we want, but this can only happen after * the delegate has been created. * @see IWorkbenchWindowActionDelegate#selectionChanged */ public void selectionChanged(IAction action, ISelection selection) { } /** * We can use this method to dispose of any system * resources we previously allocated. * @see IWorkbenchWindowActionDelegate#dispose */ public void dispose() { } /** * We will cache window object in order to * be able to provide parent shell for the message dialog. * @see IWorkbenchWindowActionDelegate#init */ public void init(IWorkbenchWindow window) { this.window = window; } } |
Ejecute este complemento como «Aplicación Eclipse».
Este es un ejemplo muy simple. Un trabajo de desarrollo real normalmente relacionado con el análisis de programas, como el uso de JDT Java Model, ASTParser, etc.