Categorías
Rich Client Platform(RCP)

Desarrollo de complementos de Eclipse: agregar un menú mediante el asistente

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>
  Diseño de Eclipse RCP: SWT GridLayout

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(),
			&quot;HelloWorldMenu&quot;,
			&quot;Hello, Eclipse world&quot;);
	}

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;
	}
}
  Desarrollo de complementos de Eclipse: cree una perspectiva

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.

Por Programación.Click

Más de 20 años programando en diferentes lenguajes de programación. Apasionado del code clean y el terminar lo que se empieza. ¿Programamos de verdad?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *