Scripting di un'interfaccia utente

Il plug-in di scripting della piattaforma consente di sviluppare varie estensioni di workbench utilizzando JavaScript.  Questo supporto è fornito utilizzando il motore JavaScript Rhino.  Utilizzare JavaScript per fornire al workbench quanto riportato di seguito:

Le sezioni successive presuppongono che l'utente abbia una conoscenza pratica di JavaScript, estensioni del workbench e SWT.

Concetti

Gli script sono gestiti all'interno del workbench come file di progetto regolari. L'utente crea generalmente un progetto separato per contenere gli script.  Viene fornito un editor specializzato per la modifica di script.

Esistono due tipi di script supportati dalla piattaforma:

  1. Gli script batch utilizzano JavaScript per richiamare metodi su vari oggetti del workbench e modificare i risultati. Questi script sono consigliati per la creazione di nuove azioni ripetitive che non fanno parte della funzione di base del workbench.
  2. Gli script di interfaccia utente somigliano ad una pagina HTML del client con eventi di interfaccia utente contenenti script. Questi script sono adatti per la creazione di script che richiedono una più elaborata interazione con l'utente.
Gli autori di script ottengono l'accesso all'ambiente del workbench attraverso vari oggetti della piattaforma rappresentati come variabili JavaScript locali. Gli script possono anche utilizzare le funzioni di JavaScript per la creazione di oggetti Java e per il richiamo dei relativi metodi.

Quando viene creato un file contenente lo script, è possibile registrarlo sul workbench attraverso la finestra di dialogo delle preferenze (Finestra > Preferenze > Script). Espandendo questa voce nella pagina delle preferenze si otterrà un elenco dei punti di estensione del workbench sui quali è possibile inserire script.  Gli script vengono aggiunti ad ogni punto di estensione selezionando quest'ultimo dalla struttura delle preferenze e premendo il pulsante corrispondente Aggiungi nella pagina delle preferenze. 

La prima volta che viene registrato uno script, è necessario riavviare il workbench. Una volta registrato, lo script può essere modificato ed immediatamente eseguito senza dover riavviare il workbench.

Tutto l'output di console derivante da script, così come qualsiasi errore rilevato durante l'esecuzione di script, viene riportato nella console di script. La visualizzazione della console di script può essere aggiunta a qualsiasi altra prospettiva, oppure, è possibile eseguire sempre i propri script dalla prospettiva Scripting (che include la visualizzazione della console per impostazione predefinita).

Limitazioni degli script

Gli script aggiunti al workbench possono accedere solo ai metodi API definiti nei seguenti plug-in:

Successivi rilasci elimineranno questa limitazione in modo che gli script possano accedere a plug-in arbitrari.

Scrittura di uno script batch

Uno script "batch" è semplicemente un'insieme di istruzioni JavaScript che gestiscono oggetti della piattaforma richiamandone i metodi API e utilizzandone i risultati. Esistono tre oggetti di piattaforma a disposizione degli autori di script:
  1. toolkit - un programma di utilità che implementa org.eclipse.scripting.IToolkit. Fornisce i metodi adatti per la modifica di risorse di base dell'area di lavoro, per la richiesta e per il caricamento dello stato permanente degli script.
  2. plugin - un'istanza predefinita di org.eclipse.core.runtime.Plugin. Fornisce l'accesso ai metodi del plug-in. Tutti gli script dell'utente vengono eseguiti come parte di un singolo plug-in gestito dal supporto di scripting della piattaforma.
  3. piattaforma - un oggetto di utilità contenente metodi corrispondenti a org.eclipse.core.runtime.Platform. Fornisce l'accesso alle funzioni generali della piattaforma.
Il metodo toolkit.print(String) viene utilizzato per scrivere l'output nella console degli script.

Oltre alle variabili locali predefinite, il linguaggio JavaScript consente all'utente di creare oggetti Java e di utilizzarle le API pubbliche.  La proprietà JavaScript Packages può essere utilizzata a tale scopo.  Il frammento di codice seguente utilizza la proprietà Packages per ottenere l'URL di installazione e l'oggetto bitmap splash.

 

var install = Packages.org.eclipse.core.boot.BootLoader.getInstallURL();
var splash = new Packages.java.net.URL(install,"splash.bmp");

Scrittura di script di interfaccia utente

Le interfacce utente basate su SWT possono essere create con il supporto di scripting della piattaforma.  Gli script risultanti sono molto simili alle pagine HTML del client, con le poche eccezioni seguenti: Un editor di scripting viene fornito dal plug-in di scripting.  Questo editor supporta una visualizzazione sorgente e un'anteprima che mostra come apparirà la pagina sorgente dopo l'esecuzione. L'editor utilizza le visualizzazioni Struttura e Proprietà, quindi queste visualizzazioni dovrebbero essere mostrate durante la modifica di script di interfaccia utente.

L'editor di script di interfaccia utente è registrato come editor predefinito per i file di tipo xhtml

Gli script di interfaccia utente vengono compresi meglio mediante esempi.  Per le tecniche specifiche, vedere Esempi di script.  Di seguito vengono descritti gli elementi che possono essere utilizzati negli script e i relativi blocchi di attributi e di evento supportati.

Body

Form

Elementi dell'interfaccia utente

Controlli di layout

Scripting

In generale, tutti gli elementi dell'interfaccia utente possono specificare un attributo id. Questo definirà una variabile di script locale con lo stesso nome.  Lo script è in grado di modificare gli elementi dell'interfaccia utente attraverso queste variabili locali. I metodi disponibili corrispondono generalmente a quelli del widget SWT equivalente.

Il semplice layout dell'interfaccia utente può essere eseguito inserendo interruzioni di riga <br/> tra i gruppi di elementi dell'interfaccia utente per avviare la riga del nuovo layout. Il supporto di rendering degli script esegue il layout predefinito, sufficiente nella maggior parte dei casi semplici.

Layout maggiormente complessi possono essere ottenuti utilizzando tabelle per controllare il posizionamento di elementi dell'interfaccia utente. Inoltre, gli elementi separati dell'interfaccia utente possono essere raggruppati utilizzando l'elemento <fieldset> (HTML valido ma non frequentemente utilizzato nel design di pagine web).

Gli effettivi corpi delle funzioni degli script vengono definiti utilizzando l'elemento (o gli elementi) <script>. Le funzioni vengono attivate come risultato di chiamate specificate all'interno degli attributi "onXXX" (ad es., onload, onreset) dei corrispondenti elementi dell'interfaccia utente (proprio come nelle pagine html).

Per script di interfaccia utente, la variabile locale toolkit è un'istanza di oggetto dell'interfaccia org.eclipse.scripting.IToolkitUI. Contiene metodi aggiuntivi che non sono disponibili nell'oggetto toolkit utilizzabile dagli script batch.

Registrazione di script con il workbench

Una volta creati come risorse del workbench, gli script possono essere registrati nel punto di estensione appropriato del workbench utilizzando la finestra di dialogo della preferenze del workbench.

Gli script vengono aggiunti mediante la finestra di dialogo Aggiungi. Tale finestra richiede l'immissione delle seguenti informazioni:

Utilizzo di script di interfaccia utente con Java

La funzione di script dell'interfaccia utente supporterà Java anziché JavaScript come linguaggio di scripting.  Quando Java viene utilizzato come linguaggio di scripting, è necessario creare un'istanza di org.eclipse.scripting.Renderer. Questo oggetto verrà utilizzato per formare l'interfaccia utente e può essere associato a uno o più oggetti gestore di eventi, anch'essi scritti in Java.  Utilizzare il metodo addObject(String,Object) del renderer per aggiungere un gestore di eventi.

Il modello di evento JavaScript viene utilizzato anche con lo scripting Java. Le varie clausole "onXXX" sono specificate come in passato. In questo caso, vengono implementate come callback di riflesso sui metodi dei gestori di eventi registrati anziché come chiamate a funzioni JavaScript "in linea".

Utilizzo esplicito di adattatori di script

È stato descritto come gli script possono essere aggiunti e gestiti dall'utente del workbench.  Gli script possono anche essere forniti come estensioni dai plug-in.  Ciò avviene specificando adattatori di script al posto di classi di implementazione nell'attributo class della definizione di estensione.  La specifica dell'adattatore include il nome dell'effettivo script da eseguire.  Ad esempio, il seguente codice tratto dagli esempi di scripting di plugin.xml fornisce una serie di azioni e specifica una ScriptAdapterWorkbenchAction con il nome dello script per class.  Il codice di rilievo appare in grassetto.


<extension point = "org.eclipse.ui.actionSets">
    <actionSet 
        id="scriptActionSet" 
        label="%S_Script_Examples"
        visible="true">
        ...
        <action id = "scriptaction1"
            menubarPath = "window/org_eclipse_scripting_examples/slot1"
            toolbarPath = "%S_Script_Examples"
            label = "%S_Scripted_Action_Example"
            tooltip = "%S_Perform_Scripted_JavaScript_Action"
            icon = "icons/full/ctool16/script_scp.gif"
            class=
            "org.eclipse.scripting/org.eclipse.scripting.ScriptAdapterWorkbenchAction:file=platform:/plugin/org.eclipse.scripting.examples/excalibur.js language=javascript">
       
</action>
        ...

Gli adattatori di script standard possono essere referenziati direttamente come parte della specifica di plugin.xml di ogni plug-in. L'elenco degli adattatori supportati si trova nel pacchetto org.eclipse.scripting.

Gli Esempi di scripting mostrano utilizzi supplementari di questi adattatori.  Il plug-in di esempio di script implementa ciascuna estensione di script utilizzando gli adattatori predefiniti.  Per ulteriori dettagli, fare riferimento al file  plugin.xml.

Riferimenti

La Specifica API per org.eclipse.scripting contiene ulteriori informazioni sul supporto di scripting. 

Gli esempi di script forniscono anche descrizioni e informazioni sull'utilizzo.  Per ulteriori informazioni, vedere Esempi di script.