Crear script de una interfaz de usuario

El conector de creación de scripts de la plataforma, le permite desarrollar distintas extensiones de entorno de trabajo utilizando JavaScript.  Este soporte se proporciona mediante el motor Rhino JavaScript.  Puede utilizar JavaScript para contribuir con lo siguiente al entorno de trabajo:

En las secciones siguientes se presupone que conoce el funcionamiento de JavaScript, extensiones de entorno de trabajo y SWT.

Conceptos

La gestión de scripts en el entorno de trabajo es similar a la de los archivos habituales de un proyecto. Generalmente, se crea un proyecto aparte que contiene los scripts.  Para editarlos, se proporciona un editor específico.

La plataforma soporta dos tipos de scripts:

  1. Scripts de proceso por lotes, que utilizan JavaScript para llamar a métodos en diversos objetos de entorno de trabajo y manipulan los resultados. Estos scripts son los adecuados para crear acciones nuevas y repetitivas que no son parte de la función básica del entorno de trabajo.
  2. Scripts de UI, que se parecen a una página HTML de cliente con eventos de UI en forma de script. Estos scripts son los adecuados para crear scripts que requieren mayor interacción con el usuario.
Los transcriptores de script acceden al entorno de trabajo mediante varios objetos de la plataforma que se muestran como variables de JavaScript locales. Los scripts también pueden utilizar los recursos de JavaScript para crear objetos Java y llamar a sus métodos.

Una vez se crea el archivo que contiene el script, se puede registrar en el entorno de trabajo mediante el diálogo de preferencias (Ventana->Preferencias->Scripts). Al ampliar esta entrada en la página de preferencias aparecerá una lista de los puntos de extensión de entorno de trabajo para los que se puede crear un script.  Los scripts se añaden a cada punto de extensión seleccionándolo en el árbol de preferencias y pulsando el botón Añadir correspondiente en la página de preferencias. 

El entorno de trabajo debe reiniciarse la primera vez que se registra cada script. Una vez registrado, el script puede modificarse y ejecutarse inmediatamente sin reiniciar el entorno de trabajo.

Toda la salida de consola de los scripts, así como cualquier error detectado al ejecutarlos se escriben en la consola de scripts. Puede hacer que la vista de consola de scripts tenga el enfoque que desea o puede hacer que los scripts se ejecuten siempre desde el punto de vista de la creación de scripts (incluye la vista de consola por omisión).

Limitaciones de los scripts

Los scripts que se añaden al entorno de trabajo sólo pueden acceder a los métodos de API definidos en los conectores siguientes:

En los futuros releases se suprimirá está restricción para que puedan crearse scripts de los conectores arbitrarios.

Escribir un script de proceso por lotes

Un script de "proceso por lotes" es tan sólo un conjunto de sentencias de JavaScript que funciona con objetos de la plataforma invocando sus métodos de API y manipulando los resultados. Existen tres objetos de plataforma expuestos en transcriptores de script:
  1. juego de herramientas - un objeto de programa de utilidad que implementaorg.eclipse.scripting.IToolkit. Proporciona los métodos adecuados para efectuar manipulaciones de recursos de área de trabajo básicas, solicitudes y cargas de estado de script persistentes.
  2. conector - una instancia por omisión de org.eclipse.core.runtime.Plugin. Proporciona acceso a métodos de conector. Todos los scripts de usuario se ejecutan como parte de un conector único gestionado por el soporte de creación de scripts de la plataforma.
  3. plataforma - un objeto adecuado que incluye métodos correspondientes a org.eclipse.core.runtime.Platform. Proporciona acceso a funciones generales de la plataforma.
El método toolkit.print(String) se utiliza para escribir las salidas en la consola de scripts.

Además de las variables locales predefinidas, el lenguaje JavaScript le permite crear objetos Java y utilizar su API pública.  La propiedad Paquetes de JavaScript puede utilizarse para esta finalidad.  El segmento siguiente utiliza la propiedad Paquetes para obtener el URL de instalación y la imagen inicial.

 

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

Escribir scripts de interfaz de usuario

Las interfaces de usuario basadas en SWT se pueden crear con el soporte de script de la plataforma.  Los scripts resultantes son muy parecidos a las páginas HTML de cliente, con algunas excepciones: El conector de creación de scripts proporciona un editor de creación de scripts.  Este editor soporta una vista de código fuente y una vista previa que muestra cómo quedará la página fuente cuando se ejecute. El editor utiliza la vista Esquema y la vista Propiedades, por lo que debe mostrar estas vistas al editar scripts de UI.

El editor de scripts de UI se registra como el editor por omisión para archivos de tipo xhtml

Para entender los scripts de UI es mejor ver los ejemplos.  Vea los Ejemplos de creación de scripts para obtener información sobre procedimientos específicos.  El mapa siguiente describe los elementos que pueden utilizarse en scripts y sus bloques de eventos y atributos soportados.

Cuerpo

Formulario

Elementos de UI

Controles del diseño

Creación de scripts

Generalmente, todos los elementos de la UI pueden especificar un atributo id. Este atributo define una variable de script local con el mismo nombre.  El script puede manipular los elementos de la UI mediante estas variables locales. Los métodos disponibles suelen ser los del widget de SWT equivalente.

Para obtener un diseño simple de la UI de manera más eficiente se pueden insertar interrupciones de línea <br /> entre grupos de elementos de la UI para iniciar la nueva fila del diseño. El soporte de representación de scripts efectúa el diseño por omisión, que será suficiente en la mayoría de los casos.

Se puede obtener un diseño más complejo utilizando tablas para controlar la colocación de elementos de la UI. También se pueden agrupar elementos diferentes de la UI mediante el elemento <fieldset> (HTML válido pero no utilizado frecuentemente en el diseño de la página web).

Los cuerpos de las funciones de script reales se definen mediante elementos <script> . Las funciones se activan como consecuencia de llamadas especificadas en los atributos "onXXX" (por ejemplo, onload, onreset) de los elementos de la UI correspondiente (tal como en las páginas html).

Para scripts de la UI, la variable local toolkit es una instancia de objeto de la interfazorg.eclipse.scripting.IToolkitUI. Contiene métodos adicionales que no están disponibles en el objeto toolkit expuesto para scripts de proceso por lotes.

Registrar scripts con el entorno de trabajo

Una vez creados como recursos de entorno de trabajo, los scripts pueden registrarse en el punto de extensión de entorno de trabajo adecuado utilizando el dialogo de preferencias del entorno de trabajo.

Los scripts se añaden utilizando el diálogo Añadir. Este diálogo solicita la información siguiente:

Crear scripts de UI con Java

El recurso de creación de scripts de la UI soporta Java como el lenguaje de creación de scripts en lugar de JavaScript.  Cuando se utiliza Java como el lenguaje de creación de scripts, ese debe crear una instancia de org.eclipse.scripting.Renderer. Este objeto se utilizará para representar la UI y puede estar asociado con uno o más objetos de manejador de eventos, escritos también en Java.  Utilice el método addObject(String,Object) de la UI representada para añadir un manejador de eventos.

El modelo de eventos de JavaScript se utiliza incluso cuando se crean scripts con Java. Las diferentes cláusulas "onXXX" se especifican igual que antes. En este caso, se implementan como llamadas de retorno reflectivas a métodos en los manejadores de eventos registrados, en lugar de como llamadas a funciones de JavaScript "en línea".

Utilizar adaptadores de script de manera explícita

Se ha mostrado cómo el usuario de entorno de trabajo puede añadir y gestionar scripts.  Los scripts también pueden suministrarse como extensiones mediante conectores.  Esto se lleva a cabo especificando adaptadores de script en lugar de clases de implementación como el atributo class en la definición de la extensión.  La especificación del adaptador incluye el nombre del script real que se ha de ejecutar.  Por ejemplo, la siguiente marcación del plugin.xml en los ejemplos de creación de scripts contribuye con un conjunto de acciones y especifica un ScriptAdapterWorkbenchAction con el nombre de script como la class.  La marcación importante está en negrita.


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

A los adaptadores de script estándar se les puede hacer referencia directamente como parte de la especificación del plugin.xml de cualquier conector. Se puede encontrar la lista de adaptadores soportados en el paqueteorg.eclipse.scripting.

Los Ejemplos de creación de scripts muestran distintas maneras de utilizar estos adaptadores.  El conector de ejemplo de creación de scripts implementa cada una de las extensiones de script utilizando adaptadores predefinidos.  Consulte el archivo  plugin.xml para obtener más detalles.

Referencias

La especificación API para org.eclipse.scripting contiene información adicional sobre el soporte de creación de scripts. 

Los ejemplos de creación de scripts también proporcionan descripciones e información sobre su utilización.  Para obtener más información, vea Ejemplos de creación de scripts.