Un plug-in elementare

Tutti sappiamo come appare "Hello World" nel vecchio codice Java senza l'utilizzo di alcuna interfaccia utente o altra struttura.

   public class HelloWorld {
      public static void main(String[] args) {
         System.out.println("Hello World");
      }
   }

Cosa succede a questo vecchio standard nel contesto della piattaforma Eclipse? Anziché pensare a Hello World come un programma indipendente, si provi a rivederlo come estensione della piattaforma. Poiché si desidera utilizzarlo, è necessario decidere come estendere il workbench perché lo includa.

Quando si affronteranno in dettaglio i componenti dell'interfaccia utente della piattaforma, si effettuerà un riepilogo completo di come sia possibile estendere e personalizzare l'interfaccia utente del workbench. Per ora, si inizierà con una delle più semplici estensioni del workbench: una visualizzazione. 

E possibile considerare la finestra del workbench come un frame che presenta diverse parti visive. Queste parti ricadono in due principali categorie: visualizzazioni ed editor.  Gli editor verranno esaminati in seguito.  Le visualizzazioni forniscono informazioni sull'oggetto con cui l'utente sta lavorando nel workbench. Le visualizzazioni cambiano spesso il loro contenuto man mano che l'utente seleziona differenti oggetti nel workbench.

Visualizzazione di Hello world

Per il plug-in Hello world, verrà implementata la visualizzazione dell'utente per mostrare "Hello World."

Il pacchetto org.eclipse.ui e i rispettivi sottopacchetti contengono le interfacce pubbliche che definiscono l'API dell'interfaccia utente del workbench. Molte di queste interfacce dispongono di classi di implementazione predefinite che possono essere estese per fornire semplici modifiche al sistema. Nell'esempio Hello world, verrà estesa una visualizzazione del workbench per fornire un'etichetta che riporti "hello".

L'interfaccia di interesse è IViewPart, che definisce i metodi che devono essere implementati per fornire una visualizzazione al workbench. La classe ViewPart fornisce un'implementazione predefinita di questa interfaccia. ViewPart è responsabile della creazione dei widget necessari per aprire la visualizzazione.

Le visualizzazioni standard presenti nel workbench spesso mostrano alcune informazioni relative a un oggetto che è stato selezionato o che viene esplorato dall'utente. Le visualizzazioni aggiornano il proprio contenuto in base alle azioni che si verificano nel workbench. Nel nostro caso, si tratterà solo di inserire la scritta "hello", quindi la visualizzazione è abbastanza semplice.

Utilizzo degli strumenti per scrivere il plug-in

Per creare plug-in Eclipse, è possibile utilizzare qualsiasi IDE Java si desideri; in questo caso, tuttavia, si procederà attraverso le varie fasi per la creazione del nuovo plug-in utilizzando l'IDE Java Eclipse.  Se non si ha ancora dimestichezza con il workbench Eclipse e l'IDE Java, consultare il Manuale dell'utente per lo sviluppo Java per ulteriori informazioni sulle varie operazioni che si stanno effettuando.  Inizialmente ci si occuperà del codice, non dello strumento.  Tuttavia, vi sono alcune istruzioni di base che occorre conoscere ed applicare per poter cominciare:

  1. Per poter lavorare, è necessario creare un progetto.  Il modo più semplice per eseguire tale operazione consiste nell'aprire la procedura guidata Nuovo progetto e nel selezionare Progetto di plug-in dalla categoria Sviluppo plug-in.  In tal modo si imposterà il progetto per la scrittura del codice e si otterrà un file manifest di plug-in predefinito.  Utilizzare org.eclipse.examples.helloworld come nome del progetto e id del plug-in.  La procedura guidata offre la possibilità di generare codice per diversi tipi di plug-in, ma è preferibile non complicare troppo la procedura.  Per ora, limitarsi a scegliere Create a blank plug-in project nella pagina dei generatori di codice.
  2. Creare un pacchetto org.eclipse.examples.helloworld al di sotto della directory src per il progetto.
  3. Creare una nuova classe denominata HelloWorldView all'interno di questo pacchetto.

Scrittura del codice

Si passerà ora ad analizzare un esempio di codice,  in cui è riportato il contenuto che è necessario inserire in HelloWorldView.  (E possibile copiare tale contenuto all'interno della classe creata.) 

   package org.eclipse.examples.helloworld;

   import org.eclipse.swt.widgets.Composite;
   import org.eclipse.swt.widgets.Label;
   import org.eclipse.swt.SWT;
   import org.eclipse.ui.part.ViewPart;

   public class HelloWorldView extends ViewPart {
      Label label;
      public HelloWorldView() {
      }
      public void createPartControl(Composite parent) {
         label = new Label(parent, SWT.WRAP);
         label.setText("Hello World");
      }
      public void setFocus() {
         // impostare come attivo il widget. Per un'etichetta, ciò non
         // è significativo, ma per insiemi più complessi di widget
         // è necessario decidere a quale widget assegnare lo stato attivo.
      }
   }

La parte visualizzazione crea i widget che la rappresenteranno nel metodo createPartControl. In questo esempio, viene creata un'etichetta SWT in cui viene impostato il testo "Hello World". 

  E possibile ora compilare la nuova classe, assicurandosi però che .classpath sia impostato correttamente in modo da poter eseguire la compilazione del codice.  

  1. Selezionare il progetto org.eclipse.examples.helloWorld e aprire la finestra di dialogo Proprietà.
  2. Nelle proprietà Percorso di build Java, scegliere la scheda Progetti, quindi selezionare i progetti  org.eclipse.ui e org.eclipse.swt. Si tratta dei progetti che contengono le classi importate.
  3. Utilizzare l'opzione Ricrea per ricreare il progetto. 

A questo punto, la visualizzazione è stata compilata.  La nuova visualizzazione dovrebbe apparire così:

Visualizzazione
semplice con la voce Hello World

Come eseguire il codice e aggiungere questa visualizzazione al workbench?

Il plug-in hello world

E necessario informare la piattaforma che si intende fornire la visualizzazione. Per eseguire tale operazione occorre estendere il punto di estensione org.eclipse.ui.views. L'estensione viene registrata fornendo un file manifest, plugin.xml, che descrive il plug-in, incluso il punto in cui è ubicato il codice, e l'estensione che si sta aggiungendo.

(Se si sta ancora eseguendo la procedura, è possibile copiare queste informazioni nel plugin.xml generato alla creazione del progetto.)

   <?xml version="1.0" ?>
   <plugin
      name="Hello World Example" 
      id="org.eclipse.examples.helloworld"
      version="1.0">
      <requires>
         <import plugin="org.eclipse.ui" />
      </requires>
      <runtime>
         <library name="helloworld.jar" />
      </runtime>
      <extension point="org.eclipse.ui.views">
         <category 
            id="org.eclipse.examples.helloworld.hello"
            name="Hello" />
         <view 
            id="org.eclipse.examples.helloworld.helloworldview"
            name="Hello Greetings"
            category="org.eclipse.examples.helloworld.hello"
            class="org.eclipse.examples.helloworld.HelloWorldView" />
      </extension>
   </plugin>

In questo file vengono definiti il nome, l'id e la versione relativi al plug-in.

Vengono anche elencati i plug-in necessari. Dato che si utilizza il workbench e l'API SWT nel plug-in, è necessario elencare org.eclipse.ui. E anche necessario descrivere il punto in cui è posizionato il codice eseguibile. Poiché verrà inserito in helloworld.jar, il codice viene registrato come nome della libreria.

Infine, si dichiara il punto di estensione fornito dal plug-in. L'estensione org.eclipse.ui.views ha vari parametri di configurazione differenti. Per prima cosa si dichiara una categoria per l'estensione della visualizzazione. Le categorie possono essere utilizzate per raggruppare insieme visualizzazioni correlate nella finestra di dialogo Mostra visualizzazione del workbench. Viene, quindi, definita una categoria personalizzata, "Hello," in modo che verrà visualizzata in un proprio gruppo.  Viene dichiarato un id univoco per la visualizzazione e viene specificato il nome della classe che fornisce l'implementazione della visualizzazione. Inoltre, si specifica un nome per la visualizzazione, "Hello Greetings", che verrà mostrata nella finestra di dialogo Mostra visualizzazione e nella barra del titolo della visualizzazione.

ID dei plug-in

Esistono molti id utilizzati in un file manifest di plug-in. I punti di estensione singoli spesso definiscono parametri di configurazione che richiedono id (come l'id di categoria utilizzato in precedenza per il punto di estensione delle visualizzazioni). L'utente definisce anche un id del plug-in. In generale, si dovrebbero utilizzare prefissi di nomi di pacchetto Java per tutti gli id per poter assicurare l'unicità tra tutti i plug-in installati. 

Il nome specifico utilizzato dopo il prefisso è di esclusiva scelta dell'utente. Tuttavia, se il prefisso dell'id del plug-in corrisponde esattamente al nome di uno dei pacchetti dell'utente, è bene evitare di utilizzare i nomi di classe di questo pacchetto.   In caso contrario, sarà difficile capire se si sta esaminando il nome di un id oppure il nome di una classe. 

E anche preferibile evitare l'utilizzo dello stesso id per parametri di configurazione di estensioni diverse. Nel manifest precedente, è stato utilizzato un prefisso di id comune (org.eclipse.examples.helloworld) ma tutti gli id sono univoci.  Questo approccio di denominazione aiuta l'utente a leggere il file e a individuare quali id sono correlati. 

Passaggi successivi

A questo punto, è stata implementata una nuova visualizzazione e dichiarata l'aggiunta nel manifest di plug-in.  Occorre ora installare il plug-in nella piattaforma per poterla eseguire.

Copyright
IBM Corp. e altri 2000,2002.