Génération d'un script pour l'interface utilisateur

Le plug-in de génération d'un script de la plateforme permet de développer diverses extensions du plan de travail à l'aide de JavaScript. Ce support est fourni via le moteur JavaScript Rhino. Vous pouvez utiliser JavaScript pour faire contribuer les éléments suivants au plan de travail :

Les sections suivantes présument que vous avez de bonnes connaissances de JavaScript, des extensions de plan de travail et de SWT.

Concepts

Les scripts sont gérés dans le plan de travail comme des fichiers de projet classiques. En règle générale, un projet distinct est créé pour contenir les scripts, un éditeur spécial étant fourni pour leur édition.

Il existe deux types de scripts supportés par la plateforme :

  1. Les scripts par lot utilisent JavaScript pour appeler les méthodes sur divers objets du plan de travail et manipuler les résultats. Ces scripts sont adaptés à la création d'actions répétitives ne faisant pas partie de la fonction de base du plan de travail.
  2. Les scripts de l'interface utilisateur ressemblent à une page HTML côté client avec des événements de l'interface utilisateur convertis en scripts. Ces scripts sont adaptés à la création de scripts nécessitant une interaction plus élaborée avec l'utilisateur.
Les rédacteurs de script obtiennent l'accès à l'environnement du plan de travail via plusieurs objets plateforme exposés comme des variables JavaScript locales. Les scripts peuvent également utiliser les capacités de JavaScript pour créer des objets Java et appeler leurs méthodes.

Lorsqu'un fichier contenant le script est créé, il peut être enregistré dans le plan de travail via la boîte de dialogue des préférences (Fenêtre->Préférences->Scripts). L'expansion de cette entrée dans la page des préférences révèle une liste de points d'extension du plan de travail qui peut être convertie en script. Les scripts sont ajoutés à chaque point d'extension en le sélectionnant dans l'arborescence des préférences et en sélectionnant le bouton Ajouter dans la page des préférences.

Le plan de travail doit être redémarré la première fois que chaque script est enregistré. Une fois enregistré, le script peut être modifié et immédiatement exécuté sans devoir redémarrer le plan de travail.

Toutes les sorties console de scripts, ainsi que les erreurs détectées pendant l'exécution des scripts sont écrites sur la console de script. Vous pouvez ajouter la vue de la console de script à n'importe quelle perspective ou exécuter les scripts à partir de la perspective Génération de script (qui inclut la vue de la console par défaut).

Limitations des scripts

Les scripts ajoutés au plan de travail ne peuvent accéder qu'aux méthodes d'API définies dans les plug-ins suivants :

Les versions futures lèveront cette restriction de sorte que les plug-ins arbitraires puissent être convertis en script.

Ecriture d'un script par lot

Un script "par lot" est tout simplement une collection d'instructions JavaScript qui gèrent des objets plateforme en invoquant leurs méthodes d'API et en manipulant les résultats. Il existe trois objets plateforme exposés aux rédacteurs de script :
  1. toolkit : objet utilitaire mettant en oeuvre org.eclipse.scripting.IToolkit. Il fournit des méthodes d'accompagnement pour les manipulations de base des ressources de l'espace de travail, les messages et le chargement de l'état du script conservé.
  2. plugin : instance par défaut de org.eclipse.core.runtime.Plugin. Elle fournit l'accès aux méthodes de plug-in. Tous les scripts utilisateur s'exécutent en tant que fragment d'un seul plug-in géré par le support de génération de script de la plateforme.
  3. platform : objet d'accompagnement doté de méthodes correspondant à org.eclipse.core.runtime.Platform. Il fournit l'accès aux fonctions générales de la plateforme.
La méthode toolkit.print(String) est utilisée pour écrire la sortie sur la console de script.

En plus des variables locales prédéfinies, le langage JavaScript permet de créer des objets Java et d'utiliser leur API publique. La propriété JavaScript Packages peut être utilisée dans ce but. L'extrait ci-dessous utilise la propriété Packages pour obtenir l'URL d'installation et l'objet bitmap d'accueil.

 

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

Ecriture des scripts de l'interface utilisateur

Les interfaces utilisateur basées sur SWT peuvent être créées avec le support de génération de script de la plateforme. Les scripts résultants sont très similaires aux pages HTML côté client, avec cependant quelques exceptions : Un éditeur de script est fourni par le plug-in de génération de script. Il supporte une vue de la source et un aperçu qui montre comment la page de la source est rendue une fois exécutée. Cet éditeur utilise la vue Structure et la vue Propriétés, aussi devez-vous les montrer lors de l'édition des scripts de l'interface utilisateur.

L'éditeur de script de l'interface utilisateur est enregistré comme éditeur par défaut pour les fichiers de type xhtml

Un exemple permet de mieux comprendre les scripts de l'interface utilisateur. Pour obtenir des techniques spécifiques, reportez-vous à la section Exemples de génération de script. L'organigramme suivant décrit les éléments qui peuvent être utilisés dans les scripts et leurs attributs et blocs d'événements supportés.

Corps

Formulaire

Eléments de l'interface utilisateur

Commandes de présentation

Génération de script

En règle générale, tous les éléments de l'interface utilisateur peuvent spécifier un attribut d'id. Ceci définit une variable de script locale du même nom. Le script peut alors manipuler les éléments de l'interface utilisateur via les variables locales. Les méthodes disponibles sont généralement celles du widget SWT équivalent.

Une simple présentation de l'interface utilisateur peut être réalisée de manière plus effective en insérant des passages à la ligne <br /> entre les groupes d'éléments de l'interface utilisateur pour commencer la nouvelle ligne de présentation. Le support de rendu de script réalise une présentation par défaut qui est suffisante dans la plupart des cas.

Une présentation plus complexe peut être réalisée à l'aide de tables permettant de contrôler le placement des éléments de l'interface utilisateur. De plus, des éléments isolés de l'interface utilisateur peuvent être regroupés à l'aide de l'élément <fieldset> (marque HTML valide, mais rarement utilisée dans la conception de page Web).

Les corps de la fonction réelle du script sont définies à l'aide d'un ou de plusieurs éléments <script>. Les fonctions sont déclenchées comme résultat des appels spécifiés dans les attributs "onXXX" (onload, onreset par exemple) des éléments de l'interface utilisateur correspondants (tout comme dans les pages html).

Pour les scripts de l'interface utilisateur, la variable locale toolkit est une instance d'objet de l'interface org.eclipse.scripting.IToolkitUI. Elles contient des méthodes supplémentaires qui ne sont pas disponibles dans l'objet toolkit exposé aux scripts par lot.

Enregistrement des scripts dans le plan de travail

Une fois créés comme ressources du plan de travail, les scripts peuvent être enregistrés dans le point d'extension du plan de travail approprié à l'aide de la boîte de dialogue des préférences du plan de travail.

Les scripts sont ajoutés à l'aide de la boîte de dialogue Ajout. Cette boîte demande les informations suivantes :

Utilisation de la génération de script de l'interface utilisateur avec Java

La fonction de génération de script de l'interface utilisateur supporte Java comme langage de script au lieu de JavaScript. Lorsque Java est utilisé comme langage de script, vous devez créer une instance de org.eclipse.scripting.Renderer. Cet objet sera utilisé pour le rendu de l'interface utilisateur et peut être associé à un ou plusieurs objets de gestionnaire d'événements, également écrits en Java. Utilisez la méthode addObject(String,Object) de représentation pour ajouter un gestionnaire d'événements.

Le modèle d'événement JavaScript est utilisé même lorsque la génération de script a lieu en langage Java. Les diverses clauses "onXXX" sont spécifiées comme avant. Dans ce cas, elles sont implémentées comme des rappels réflecteurs aux méthodes sur les gestionnaires d'événements enregistrés, et non comme des appels aux fonctions JavaScript "en ligne".

Utilisation explicite des adaptateurs de script

Nous avons vu comment les scripts peuvent être ajoutés et gérés par l'utilisateur du plan de travail. Les scripts peuvent également être fournis comme extensions par des plug-ins. Ceci est réalisé en spécifiant des adaptateurs de script à la place de classes d'implémentation, tel que l'attribut class dans la définition des extensions. La spécification de l'adaptateur inclut le nom du script réel à exécuter. Par exemple, les marques ci-dessous extraites des exemples de génération de script plugin.xml ajoutent un ensemble d'actions et spécifient la classe ScriptAdapterWorkbenchAction avec le nom du script. Les marques correspondantes sont en caractères gras.


<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>
        ...

Les adaptateurs de script standard peuvent être référencés directement comme fragment de la spécification plugin.xml de tout plug-in. La liste des adaptateurs supportés figure dans le package org.eclipse.scripting.

Les Exemples de génération de script montrent d'autres utilisations de ces adaptateurs. L'exemple de plug-in de script implémente chacune des extensions de script à l'aide des adaptateurs prédéfinis. Pour plus de détails, reportez-vous au fichier plugin.xml.

Références

La spécification des API pour org.eclipse.scripting contient des informations supplémentaires sur le support de génération de script.

Les exemples de génération de script fournissent également des descriptions et des informations d'usage. Pour plus d'informations, reportez-vous à la section Exemples de génération de script.