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.
È 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.
Per il plug-in Hello world, verrà implementata la visualizzazione dell'utente per mostrare "Hello World."
Il pacchetto org.eclipse.ui e i rispettivi pacchetti secondari 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.
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() {
// portare il widget creato allo stato attivo. Per
un'etichetta, ciò non
// è significativo, ma per insiemi
più complessi di widget
// l'utente deve 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".
Per quanto concerne il codice non è necessario fare altro. È possibile compilare la nuova classe (assicurarsi che i file JAR della piattaforma siano visibili nell'IDE o nell'ambiente del compilatore in modo che sia possibile compilare il plug-in), ma si deve ancora decidere come eseguire la nuova visualizzazione.
La nuova visualizzazione dovrebbe apparire circa così:
Come aggiungere questa visualizzazione alla piattaforma?
È necessario informare la piattaforma che si intende fornire una visualizzazione. Questo avviene estendendo 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.
<?xml version="1.0" ?>
<plugin
name="Hello World Example"
id="org.eclipse.examples.helloworld"
version="1.0"
provider-name="Object Technology International, Inc.">
<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, si definisce nome, id, versione e nome del provider per il 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. È anche necessario descrivere il punto in cui è posizionato il codice eseguibile. Nel nostro caso, il codice verrà inserito in helloworld.jar.
Infine, si dichiara il punto di estensione fornito dal plug-in. L'estensione org.eclipse.ui.views ha vari parametri di configurazione differenti. Si rivedano i parametri specificati nel manifest.
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. Verrà 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.
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.
È 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.