Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Eclipse: introduzione allo sviluppo di Plugin

Quali sono i passi per la creazione di un plugin per la piattaforma Eclipse? In questo articolo introduciamo i concetti di base con la creazione di un semplice template di plugin.
Quali sono i passi per la creazione di un plugin per la piattaforma Eclipse? In questo articolo introduciamo i concetti di base con la creazione di un semplice template di plugin.
Link copiato negli appunti

In questo breve tutorial analizziamo l'architettura standard di Eclipse ed implementiamo un semplice plug-in utile per prendere confidenza con l’ambiente di sviluppo (Eclipse SDK).

Oltre ad essere uno dei più diffusi IDE, Eclipse può essere considerato un programma dotato di una piaffaroma facilmente estendibile, mediante lo sviluppo di plugin, cioè di componenti java che ne estendono le funzionalità base.

Eclipse: lo schema dell'SDK per lo sviluppo di plugin

I componenti dell'SDK

L'SDK è il cuore di Eclipse perché contiene tutte le classi che è possibile utilizzare per creare il proprio plug-in personalizzato.

Il Java Development Tools (JDT) è l'ambiente di sviluppo Java.

Il plug-in Developer Environment (PDE) è un estensione che aggiunge all’ambiente di sviluppo base, un elenco di strumenti specializzati utili per lo sviluppo di plug-in

Il Platform Runtime è il componente di Eclipse che si occupa del caricamento di tutti i plugin registrati. Tale componente viene avviato allo startup del programma quindi è sempre necessario riavviare Eclipse in seguito all'installazione di un nuovo modulo.

É interressante osservare che i plugin possono essere interdipendenti. In fase di caricamento il runtime gestisce anche l’ordine di esecuzione delle dipendenze seguendo l'ordine di priorità definito nel file di configurazione di ciascun modulo.

Wizard per la creazione del plugin da template

Per facilitare l'apprendimento, creiamo un semplice plugin utilizzando il wizard fornito dall'ambiente di sviluppo, e successivamente analizziamo in dettaglio i file creati.

Selezioniamo la voce Plugin Project dal seguente menù File -> Nuovo -> Progetto -> Plugin Development.

Eclipse: creazione di Plugin

Definiamo un ID ed un nome univoco per il nostro plugin e terminiamo la procedura. Per adesso tralasciamo le altre impostazioni che analizzeremo in dettaglio successivamente.

Il Wizard ci propone un elenco di plug-in base che si desidera estendere. Selezioniamo il Template Hello World e completiamo la procedura cliccando sul pulsante Finish.

Questo template consente di creare una semplice voce nella barra dei menu ed un pulsante nella barra degli strumenti. Entrambi i componenti aprono una semplice finestra di dialogo nel quale viene stampato un messaggio. L'Extension Point utilizzato è org.eclipse.ui.actionSets. L'Extension Point è un componente base sul quale costruire la propria estensione.

Esportazione del plugin

Il nostro plugin è già pronto per essere eseguito ed esportato.

Possiamo infatti eseguirlo in una nuova istanza di Eclipse, selezionando il file MANIFEST.MF file, e cliccando sulla voce Esegui-As -> Eclipse Application attivabile con il tasto destro del mouse. Si aprirà una nuova instanza del programma nel quale possiamo individuare la nuova voce di menù (Sample Menu) ed un nuovo pulsante presente nella barra degli strumenti contrassegnato dall’icona di eclipse.

Eclipse: test del Plugin

Qualora sia necessario, è possibile esportare il plugin per distribuirlo più facilmente selezionando il file plugin.xml e selezionando la voce export attivabile con il tasto destro del mouse. Verrà generato il jar che sarà possibile importare in un’altra istanza di Eclipse utilizzando il modulo di installazione dei plugin standard (Help -> Install New Software).

I file del plugin

Il wizard ha generato diversi file ma i più importanti sono i seguenti:

  • plugin.xml
  • MANIFEST.MF
  • Activator.java
  • SampleAction.java

Il file plugin.xml

Il cuore del progetto è il file plugin.xml. In esso sono infatti contenute tutte le informazioni necessarie all'esecuzione del plugin e la modalità con cui il modulo deve essere richiamato (pulsante sulla barra delle applicazioni, menù contestuale situato nella barra dei menù). Contiene inoltre indicazioni sulle icone dei pulsanti e sulle azioni che Eclipse deve intraprendere una volta che questi vengono attivati.

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            label="Sample Action Set"
            visible="true"
            id="HelloWorld.actionSet">
         <menu
               label="Sample &Menu"
               id="sampleMenu">
            <separator
                  name="sampleGroup">
            </separator>
         </menu>
         <action
               label="&Sample Action"
               icon="icons/sample.gif"
               class="helloworld.actions.SampleAction"
               tooltip="Hello, Eclipse world"
               menubarPath="sampleMenu/sampleGroup"
               toolbarPath="sampleGroup"
               id="helloworld.actions.SampleAction">
         </action>
      </actionSet>
   </extension>
</plugin>

Il tag action definisce, oltre alle varie impostazioni grafiche come l'icona, le label e le voci di menù, qual è la classe che gestisce il componente. Nel nostro caso la classe è la helloworld.actions.SampleAction.

Il file MANIFEST.MF

Il file MANIFEST.MF contiene la definizione di diverse informazioni, tra le quali il parametro Bundle-Activator. Nel nostro caso, la classe Activator è helloworld.Activator, che estende la superclasse AbstractUIPlugin e definisce i metodi start e stop, invocati automaticamente dal sistema rispettivamente quando il plugin viene avviato e stoppato (start e stop di Eclipse). Di solito nel metodo start vengono inizializzati i componenti e letti eventuali i file di configurazione. Nel metodo stop si rilasciano le risorse.

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: HelloWorld
Bundle-SymbolicName: HelloWorld; singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: helloworld.Activator
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime
Bundle-ActivationPolicy: lazy
Bundle-RequiredExecutionEnvironment: JavaSE-1.6

La classe di esempio SampleAction

La classe SampleAction, invece, estende la superclasse IWorkbenchWindowActionDelegate e contiene la logica del componente. In tale classe, infatti, è definito il metodo run che viene invocato quando è attivata la voce di menù o il pulsante presente nella barra degli strumenti.

public void run(IAction action) {
	MessageDialog.openInformation(
		window.getShell(),
		"HelloWorld",
		"Hello, Eclipse world"
	);
}

Nel nostro esempio, il metodo run, si occupa semplicemente di aprire una finestra di dialogo nella quale viene stampato un messaggio.

Naturalmente gli strumenti messi a disposizione dall'SDK sono numerosi e analizzarli tutti in dettaglio non è oggetto di questo breve tutorial. Nei prossimi articoli analizzeremo più da vicino i singoli extension point e svilupperemo qualche esempio più complesso che interagisce con l'editor di testo, con i file del progetto selezionato ed altre funzionalità avanzate.

Ti consigliamo anche