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:

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:

  1. 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.
  2. 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:

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:
  1. 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.
  2. 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.
  3. 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: 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

Format

Benutzerschnittstellenelemente

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:

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.