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:
- azioni (actionSets)
-
editor
-
procedure guidate (newWizards, exportWizards, importWizards)
- menu di scelta rapida
-
pagine delle preferenze
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:
-
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.
-
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:
- org.eclipse.core.runtime
- org.eclipse.core.boot
- org.eclipse.core.resources
- org.eclipse.ui
- org.eclipse.swt
- org.eclipse.scripting
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:
-
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.
-
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.
-
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:
-
viene utilizzato solo un sottoinsieme di attributi ed elementi html
-
l'html risultante deve avere un formato xhtml definito
-
vengono definiti alcuni elementi ed attributi "non-html"
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
-
body - id, onload, onunload. Definisce il corpo della definizione dell'interfaccia utente.
Form
-
form - id, onreset, onsubmit, title. Definisce il gruppo principale dell'interfaccia utente
(generalmente reso come pagina separata).
Elementi dell'interfaccia utente
-
label - id, value. Il valore è l'etichetta della stringa.
-
entry field (<input type="text">) -
id, onblur, onchange, onfocus, onkeypress, value.
Definisce un campo di immissione testo.
-
textarea - id, onblur, onchange, onfocus, onkeypress.
Definisce un'area di testo.
-
push button (<input
type="button">) - id, onpush,
value. Definisce un pulsante.
-
radio button (<input
type="radio">) - id, checked, onclick,
value. Definisce un pulsante di opzione.
-
check-box (<input type="checkbox">) -
id, checked, onclick, value. Definisce una casella di controllo.
-
combo-box (<select size="1">) -
id, onchange. Definisce una casella combinata.
-
list-box (<select size="3">) -
id, onchange. Definisce una casella di elenco.
-
image - id, source. Consente l'inserimento di un'immagine come elemento 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:
-
nome di visualizzazione dello script
-
posizione dello script (come risorsa del workbench)
-
icona (facoltativo)
-
se procedere alla registrazione come script batch o di interfaccia utente. Alcuni punti di estensione consentono
entrambe le scelte.
-
estensione file per la quale registrare lo script. Alcuni punti di estensione richiedono
un'estensione file.
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.
