Script für Benutzerschnittstelle erstellen
Mit dem Plattform-Plug-in für das Erstellen von Scripts können Sie
unter Verwendung von JavaScript ganz unterschiedliche
Workbench-Erweiterungen entwickeln. Diese Unterstützung wird
über die JavaScript-Steuerkomponente von Rhino bereitgestellt. Durch
die Verwendung von JavaScript können Sie die Workbench durch die
folgenden Elemente ergänzen:
- Aktionen (actionSets)
-
Editoren
-
Assistenten (newWizards, exportWizards, importWizards)
- Kontextmenüs
-
Benutzervorgabenseiten
Die folgenden Abschnitte gehen davon aus, dass Sie bereits
Kenntnisse im Umgang mit JavaScript,
Workbench-Erweiterungen und SWT besitzen.
Konzepte
Scripts werden in der Workbench wie normale Projektdateien verwaltet. In
der Regel erstellen Sie für Ihre Scripts ein separates Projekt. Zur
Bearbeitung der Scripts gibt es einen speziellen Editor.
Die Plattform unterstützt zwei Typen von Scripts:
-
Stapel-Scripts verwenden JavaScript, um Methoden für
verschiedene Workbench-Objekte aufzurufen und die Ergebnisse zu
bearbeiten.
Diese Scripts sind sehr gut zur Erstellung neuer und wiederholt
benötigter Aktionen geeignet, die nicht zur Basisfunktion der
Workbench gehören.
-
Benutzerschnittstellen-Scripts haben Ähnlichkeit mit
einer clientseitigen HTML-Seite, die Benutzerschnittstellenereignisse
in Script-Form enthält.
Diese Scripts sind vor allem für die Erstellung von Scripts geeignet,
die eine ausgeklügeltere Interaktion mit dem Benutzer verlangen.
Script-Writer erhalten den Zugriff auf die Workbench-Umgebung über
verschiedene Plattformobjekte, die als lokale JavaScript-Variablen
zur Verfügung stehen.
Scripts können mit den
JavaScript-Funktionen außerdem Java-Objekte erstellen und deren
Methoden aufrufen. Sobald eine Datei erstellt wird, die das Script
enthält, kann sie in der Workbench über den Benutzervorgabendialog
(Fenster > Benutzervorgaben > Scripts) registriert werden.
Bei Erweiterung dieses Eintrags auf der Benutzervorgabenseite wird
eine Liste der Workbench-Erweiterungspunkte angezeigt, die mit
Scripts ausgestattet werden können. Scripts werden zu
einem Erweiterungspunkt hinzugefügt, indem der Punkt in der
Baumstruktur der Benutzervorgaben ausgewählt und dann die
entsprechende Schaltfläche
Hinzufügen auf der Benutzervorgabenseite verwendet wird.
Die
Workbench muss erneut gestartet werden, nachdem ein Script zum ersten
Mal registriert wurde.
Sobald das Script registriert ist, kann es geändert und sofort
ausgeführt werden, ohne dass ein Neustart der Workbench erforderlich
ist.
Die gesamte Konsolenausgabe aus Scripts wird, ebenso wie alle
Fehler, die bei der Ausführung von Scripts festgestellt werden, an
die Script-Konsole geschrieben.
Sie können die Sicht für die Script-Konsole zu allen anderen
Perspektiven hinzufügen oder aber Ihre Scripts immer aus der
Perspektive "Script-Erstellung" ausführen (diese Perspektive enthält
standardmäßig die Sicht "Konsole").
Einschränkungen für Scripts
Scripts, die zur Workbench hinzugefügt werden, können nur auf die
API-Methoden zugreifen, die in den folgenden Plug-ins definiert sind:
- org.eclipse.core.runtime
- org.eclipse.core.boot
- org.eclipse.core.resources
- org.eclipse.ui
- org.eclipse.swt
- org.eclipse.scripting
In künftigen Releases wird diese Einschränkung aufgehoben, damit
auch andere Plug-ins durch Scripts verwendet werden können.
Stapel-Script schreiben
Ein Stapel-Script ist einfach eine Sammlung von
JavaScript-Anweisungen, die mit Plattformobjekten arbeiten, indem
deren API-Methoden aufgerufen und die Ergebnisse bearbeitet werden.
Es gibt drei Plattformobjekte, die Script-Verfasser verwenden
können:
-
toolkit - Dies ist ein Dienstprogrammobjekt, das
org.eclipse.scripting.IToolkit
implementiert. Es bietet geeignete Methoden für die
Bearbeitung von Basisressourcen der Workbench, Bedienerführungen und
das Laden eines permanenten Script-Status.
-
plugin - Dies ist ein Standardexemplar von
org.eclipse.core.runtime.Plugin.
Es ermöglicht den Zugriff auf Plug-in-Methoden. Alle Benutzer-Scripts
werden als Teil eines einzigen Plug-ins ausgeführt, das durch die
Plattformunterstützung für die Script-Erstellung verwaltet wird.
-
platform - Dies ist ein praktisches Objekt, dessen
Methoden
org.eclipse.core.runtime.Platform
entsprechen. Es ermöglicht den Zugriff auf allgemeine
Plattformfunktionen.
Zum Schreiben von Ausgabe an die Script-Konsole wird die Methode
toolkit.print(String) verwendet.
Zusätzlich zu den vordefinierten lokalen Variablen können Sie
mit der JavaScript-Sprache Java-Objekte erstellen und deren
öffentliche API verwenden. Zu diesem Zweck kann
die JavaScript-Eigenschaft Packages (Pakete) verwendet
werden. Der folgende Ausschnitt
setzt die Eigenschaft
Packages ein, um die Installations-URL und das Bitmap-Objekt
für die Eingangsanzeige abzurufen.
var install =
Packages.org.eclipse.core.boot.BootLoader.getInstallURL();
var splash = new Packages.java.net.URL(install,"splash.bmp");
Scripts für Benutzerschnittstellen schreiben
Mit der Plattformunterstützung für die Script-Erstellung
können SWT-basierte Benutzerschnittstellen erstellt werden.
Die resultierenden Scripts haben große Ähnlichkeit mit clientseitigen
HTML-Seiten, wobei jedoch einige Ausnahmen zu beachten sind:
-
Es wird nur eine Untergruppe von HTML-Elementen und -Attributen
verwendet.
-
Die resultierende HTML muss als xhtml formatiert sein.
-
Es werden mehrere Elemente und Attribute definiert, die nicht aus
HTML stammen.
Ein Editor für die Script-Erstellung wird durch das
Script-Erstellungs-Plug-in bereitgestellt. Dieser Editor
unterstützt eine Quellensicht sowie eine Voranzeige, in der
dargestellt ist, wie die Quellenseite bei der Ausführung übergeben
wird.
Der Editor verwendet die Sichten Gliederung und
Eigenschaften. Daher sollten Sie diese Sichten bei der
Bearbeitung von Benutzerschnittstellen-Scripts einblenden.
Der Editor für Benutzerschnittstellen-Scripts ist als
Standardeditor für Dateien des Typs xhtml registriert.
Benutzerschnittstellen-Scripts können am besten anhand von
Beispielen erläutert werden. Angaben zu speziellen Methoden finden
Sie unter
Beispiele
für Script-Erstellung. Die folgende Übersicht beschreibt die
Elemente, die in Scripts verwendet werden können, sowie die
unterstützten Attribute und Ereignisblöcke.
Hauptteil
- body - id, onload, onunload. Definiert den
Hauptteil der Benutzerschnittstellendefinition.
Format
-
form - id, onreset, onsubmit, title.
Definiert die Hauptgruppe der Benutzerschnittstelle (wird
normalerweise als separate Seite übergeben).
Benutzerschnittstellenelemente
-
label - id, value.
Der Wert ist die Zeichenfolgekennung.
- entry field (<input type="text">) -
id, onblur, onchange, onfocus, onkeypress, value.
Definiert ein Texteingabefeld.
- textarea - id, onblur, onchange, onfocus, onkeypress.
Definiert einen Textbereich.
-
push button (<input type="button">) -
id, onpush, value. Definiert eine Schaltfläche.
- radio button (<input type="radio">) - id, checked, onclick, value. Definiert
ein Optionsfeld.
- check-box (<input type="checkbox">) -
id, checked, onclick, value. Definiert ein
Markierungsfeld.
- combo-box (<select size="1">) -
id, onchange. Definiert ein kombiniertes Feld.
- list-box (<select size="3">) -
id, onchange. Definiert ein Listenfeld.
- image - id, source. Hiermit können Sie ein Image
als Benutzerschnittstellenelement verwenden.
Steuerelemente für Layout
Script-Erstellung
Normalerweise können alle Benutzerschnittstellenelemente ein Attribut
id angeben.
Dieses Attribut definiert eine lokale Script-Variable desselben
Namens. Über diese lokalen Variablen kann das Script die
Benutzerschnittstellenelemente bearbeiten.
Die verfügbaren Methoden entsprechen normalerweise denen des
äquivalenten SWT-Fensterobjekts.
Ein einfaches Benutzerschnittstellenlayout können Sie in der Regel
dadurch einrichten, dass Sie zwischen Gruppen von
Benutzerschnittstellenelementen Zeilenumbrüche
(<br />) einfügen und so eine neue Layoutzeile beginnen.
Die Unterstützung für die Script-Übergabe führt das Standardlayout
aus, das in den meisten einfachen Fällen völlig ausreichend ist.
Ein komplexeres Layout können Sie erstellen, indem Sie die
Platzierung der Benutzerschnittstellenelemente mit Hilfe von Tabellen
steuern.
Außerdem können separate Benutzerschnittstellenelemente unter
Verwendung des Elements
<fieldset> gruppiert werden (ein gültiges
HTML-Element, das beim Webseitendesign jedoch nicht sehr häufig
eingesetzt wird).
Die eigentlichen Funktionshauptteile des Scripts werden mit
einem oder mehreren Elementen <script> definiert.
Die Funktionen werden infolge von Aufrufen ausgelöst, die in den
Attributen "onXXX" (z. B.
onload (= bei Herunterladen) oder onreset (= bei
Zurücksetzen)) der entsprechenden Benutzerschnittstellenelemente
angegeben sind (genau wie bei HTML-Seiten).
Bei Benutzerschnittstellen-Scripts ist die lokale Variable
toolkit ein Objektexemplar der
Schnittstelle
org.eclipse.scripting.IToolkitUI.
Sie enthält zusätzliche Methoden, die in dem Objekt
toolkit, das für Stapel-Scripts verfügbar ist, nicht zur
Verfügung stehen.
Scripts in der Workbench registrieren
Sobald Scripts als Workbench-Ressourcen erstellt wurden, können sie
für den entsprechenden Erweiterungspunkt der Workbench registriert
werden. Dies geschieht über den Benutzervorgabendialog der Workbench.
Scripts werden im Dialog Hinzufügen hinzugefügt. Der Dialog
fordert hierbei die folgenden Informationen an:
-
Anzeigenname des Scripts
-
Script-Position (als Workbench-Ressource)
-
Symbol (optional)
-
Registrierung als Stapel-Script oder als
Benutzerschnittstellen-Script. Für einige Erweiterungspunkte sind
beide Möglichkeiten zulässig.
-
Dateierweiterung, für die das Script registriert werden soll.
Manche Erweiterungspunkte benötigen eine Dateierweiterung.
Scripts für Benutzerschnittstellen mit Java erstellen
Die Funktion zum Erstellen von Benutzerschnittstellen-Scripts
unterstützt als Sprache für die Script-Erstellung Java anstelle von
JavaScript. Wenn Java als Sprache für die Script-Erstellung verwendet
wird, müssen Sie
ein Exemplar von
org.eclipse.scripting.Renderer
erstellen.
Dieses Objekt wird verwendet, um die Benutzerschnittstelle zu
übergeben, und kann einem oder mehreren Objekten für
Ereignissteuerroutinen zugeordnet sein, die ebenfalls in Java
geschrieben sind.
Mit der Methode addObject(String,Object) der Übergabefunktion
können Sie eine Ereignissteuerroutine hinzufügen.
Ds Ereignismodell von JavaScript wird auch bei der
Script-Erstellung in Java verwendet.
Die unterschiedlichen Klauseln
"onXXX" werden wie bereits beschrieben angegeben.
In diesem Fall werden sie als reflektive Rückaufrufe für Methoden in
den registrierten Ereignissteuerroutinen implementiert, und nicht als
Aufrufe der "internen" JavaScript-Funktionen.
Script-Adapter explizit verwenden
Es wurde bereits erläutert, wie Scripts durch den Workbench-Benutzer
hinzugefügt und verwaltet werden können.
Scripts können außerdem als Erweiterungen durch Plug-ins
bereitgestellt werden.
Dies geschieht, indem in der Erweiterungsdefinition für das Attribut
class Script-Adapter anstelle von Implementierungsklassen
angegeben werden.
Die Adapterspezifikation
enthält den Namen des eigentlichen auszuführenden Scripts.
Die folgende Befehlsdatei plugin.xml aus den Beispielen für
die Script-Erstellung ergänzt beispielsweise ein Aktionsset und
gibt ein Objekt
ScriptAdapterWorkbenchAction
mit dem Script-Namen als Attribut class an. Die in diesem
Zusammenhang wichtigen Befehle sind in Fettschrift dargestellt.
<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>
...
In der Spezifikation von
plugin.xml für ein beliebiges Script kann direkt
auf Standardscript-Adapter verwiesen werden.
Die Liste der unterstützten Adapter finden Sie im Paket
org.eclipse.scripting.
Die
Beispiele
für die Script-Erstellung veranschaulichen weitere
Verwendungsmöglichkeiten dieser Adapter. Das Plug-in mit dem
Script-Beispiel implementiert alle Script-Erweiterungen durch die
Verwendung der vordefinierten Adapter.
Zusätzliche Details finden Sie in der Datei
plugin.xml.
Referenzinformationen
Die API-Spezifikation für
org.eclipse.scripting
enthält zusätzliche Informationen zur Unterstützung für die
Script-Erstellung.
Die Beispiele für die Script-Erstellung liefern außerdem
Beschreibungen sowie Informationen zur Verwendung. Entsprechende
Angaben finden Sie unter
Beispiele
für die Scripterstellung.
