Criando o script de uma interface do usuário
O plug-in de script da plataforma permite desenvolver várias extensões do workbench, utilizando JavaScript. Esse suporte é fornecido utilizando o mecanismo Rhino
JavaScript. Você pode utilizar JavaScript para fazer o seguinte no workbench:
- ações (actionSets)
-
editores
-
assistentes (newWizards, exportWizards, importWizards)
- menus pop-up
-
páginas de preferências
As próximas seções assumem um conhecimento prévio de JavaScript, extensões de workbench e SWT.
Conceitos
Os scripts são gerenciados no workbench como arquivos de projeto normais. Geralmente, você cria um projeto separado para guardar os scripts. Um editor especializado é fornecido para a edição dos scripts.
Há dois tipos de scripts suportados pela plataforma:
-
Os scripts Batch utilizam JavaScript para chamar métodos em vários objetos do workbench e manipular os resultados. Esses scripts são apropriados para a criação de novas ações repetitivas que não fazem parte da função básica do workbench.
-
Os scripts da UI lembram uma página HTML do lado cliente com eventos da UI em script. Esses scripts são apropriados para a criação de scripts que exigem interação mais elaborada com o usuário.
Os gravadores de script obtêm acesso ao workbench através de vários objetos da plataforma, expostos como variáveis JavaScript locais. Os scripts podem também utilizar os recursos JavaScript para criar objetos Java e chamar seus métodos. Assim que um arquivo contendo um script é criado, ele pode ser registrado no workbench, através do diálogo de preferências (Janela->Preferências->Scripts).
A expansão dessa entrada na página de preferências irá revelar uma lista de pontos de extensão do workbench que podem ser colocados em script. O scripts são incluídos em cada ponto de extensão, selecionando-o na árvore de preferências e pressionando o botão
Incluir na página de preferências.
O workbench deve ser reiniciado a primeira vez que cada script é registrado.
Depois de registrado, o script pode ser modificado e imediatamente executado sem a reinicialização do workbench.
Toda saída de console dos scripts, assim como qualquer erro detectado durante a execução dos scripts, são gravados no console do script. Você pode incluir a exibição do console do script em qualquer outra perspectiva ou pode executar os scripts a partir da perspectiva do script (inclui a exibição do console por padrão).
Limitações dos scripts
Os scripts incluídos no workbench podem acessar somente os métodos da API definidos nos seguintes plug-ins:
- org.eclipse.core.runtime
- org.eclipse.core.boot
- org.eclipse.core.resources
- org.eclipse.ui
- org.eclipse.swt
- org.eclipse.scripting
As releases futuras irão levantar essa restrição para que plug-ins arbitrários possam ser colocados em script.
Gravando um script batch
Um script "batch" é simplesmente uma coleção de instruções JavaScript que trabalham com objetos da plataforma, chamando seus métodos da API e manipulando os resultados. Há três objetos da plataforma expostos aos gravadores de script:
-
toolkit - um objeto utilitário que
implementa org.eclipse.scripting.IToolkit. Ele fornece métodos convenientes para manipulações, aviso e carregamento de estado de script persistente do recurso básico da área de trabalho.
-
plug-in - uma ocorrência padrão deorg.eclipse.core.runtime.Plugin.
Ele fornece acesso aos métodos do plug-in. Todos os scripts do usuário são executados como parte de um único plug-in gerenciado pelo suporte a script da plataforma.
-
platform - um objeto conveniente com métodos correspondentes
paraorg.eclipse.core.runtime.Platform. Ele fornece acesso às funções gerais da plataforma.
O método toolkit.print(String) é utilizado para gravar a saída no console do script.
Além das variáveis locais predefinidas, a linguagem JavaScript permite criar objetos Java e utilizar a sua API pública. A propriedade JavaScript Packages pode ser utilizada para essa finalidade. O trecho a seguir utiliza a propriedade Packages para obter o URL de instalação e o objeto splash bitmap.
var install =
Packages.org.eclipse.core.boot.BootLoader.getInstallURL();
var splash = new Packages.java.net.URL(install,"splash.bmp");
Gravando scripts da interface do usuário
As interfaces do usuário com base em SWT podem ser criadas com suporte a script da plataforma. Os scripts resultantes são bastante semelhantes às páginas HTML do lado cliente, com algumas exceções:
-
somente um subconjunto de elementos html e atributos é utilizado
-
o html resultante deve ser xhtml bem formado
-
vários elementos e atributos "não-html" são definidos
Um editor de script é fornecido pelo plug-in de script. Esse editor é compatível com uma exibição de origem e uma pré-visualização que mostra como a página de origem será processada quando executada. O editor utiliza as exibições Outline e Properties, portanto, você deve usar essas exibições na edição de scripts da UI.
O editor de script da UI está registrado como o editor padrão de arquivos do
tipo xhtml.
Os scripts da UI são melhor compreendidos através de exemplo. Consulte Exemplos de Script para obter as técnicas específicas. O esquema a seguir descreve os elementos que podem ser utilizados nos scripts e seus blocos de atributos e eventos suportados.
Body
-
body - id, onload, onunload. Define o corpo da definição da UI.
Form
-
form - id, onreset, onsubmit, title.
Define o grupo principal da UI (geralmente,
processado como uma página separada).
Elementos da UI
-
label - id, value.
O valor é a etiqueta da cadeia.
-
entry field (<input type="text">) -
id, onblur, onchange, onfocus, onkeypress, valor.
Define o campo de entrada de texto.
-
textarea - id, onblur, onchange, onfocus, onkeypress.
Define a área de texto.
-
push button (<input
type="button">) - id, onpush,
valor. Define um botão de comando.
-
radio button (<input
type="radio">) - id, checked, onclick,
valor. Define um botão de rádio.
-
check-box (<input type="checkbox">) -
id, checked, onclick, valor. Define uma caixa de entrada.
-
combo-box (<select size="1">) -
id, onchange. Define uma caixa de combinação.
-
list-box (<select size="3">) -
id, onchange. Define um quadro de listagem.
-
image - id, origem. Permite o posicionamento de uma imagem como um elemento da interface do usuário.
Controles de layout
Scripting
Em geral, todos os elementos da UI podem especificar um atributo de id.
Isto irá definir uma variável de script local de mesmo nome. O script pode manipular os elementos da UI através dessas variáveis locais. Geralmente, os métodos disponíveis são aqueles equivalentes ao widget SWT.
O layout simples da UI pode ser executado com mais eficiência através da inserção de quebras de linha <br /> entre os grupos de elementos da UI, para iniciar uma nova linha do layout. O suporte ao processamento do script executa o layout padrão, o qual será suficiente em casos mais simples.
Pode-se conseguir um layout mais complexo utilizando tabelas para controlar o posicionamento dos elementos da UI. Além disso, elementos separados da UI podem ser agrupados utilizando o elemento <fieldset> (HTML válido mas não usado com freqüência no design de página da Web).
Os corpos de função reais do script são definidos através dos elementos <script> . As funções são disparadas como um resultado das chamadas especificadas nos atributos "onXXX" (por exemplo, onload,
onreset) dos elementos correspondentes da UI (como nas páginas html).
Para scripts da UI, a variável local toolkit é uma ocorrência do objeto da interface
org.eclipse.scripting.IToolkitUI. Ela contém métodos adicionais que não estão disponíveis no objeto toolkit, exposto nos scripts batch.
Registrando scripts com o workbench
Depois de criados como recursos do workbench, os scripts podem ser registrados no ponto de extensão do workbench adequado, utilizando o diálogo de preferências do workbench.
Os scripts são incluídos utilizando o diálogo Add. O diálogo exibe as seguintes informações:
-
nome da exibição do script
-
localização do script (como um recurso do workbench)
-
ícone (opcional)
-
se é para registrar como script batch ou script da UI. Alguns pontos de
extensão permitem ambos.
-
extensão de arquivo no qual registrar o script. Alguns pontos de extensão
exigem uma extensão de arquivo.
Utilizando script da UI com Java
O recurso de script da UI irá suportar Java como sua linguagem de script, em vez de
JavaScript. Quando Java é utilizada como linguagem de script, é necessário
criar uma ocorrência org.eclipse.scripting.Renderer.
Esse objeto será utilizado para processar a UI e pode
ser associado a um ou mais objetos da rotina de tratamento de evento, também gravados em Java. Utilize o método addObject(String,Object) do processador para incluir uma rotina de tratamento de evento. O gabarito de eventos JavaScript é utilizado na criação de scripts com Java. As várias cláusulas "onXXX" são especificadas como antes.
Neste caso, elas são implementadas como callbacks refletivos a métodos nas rotinas de tratamento registradas do evento, em vez de serem implementadas como chamadas para funções JavaScript "inline".
Utilização explícita do adaptador de script
Vimos como os scripts podem ser incluídos e gerenciados pelo usuário do workbench. Os scripts podem também ser fornecidos como extensões pelos plug-ins. Isso é feito especificando-se os adaptadores de script no lugar das classes de implementação como o atributo class na definição da extensão. A especificação do adaptador inclui o nome do script real a executar. Por exemplo, a marcação a seguir dos exemplos de script plugin.xml contribui com um conjunto de ações e especifica um ScriptAdapterWorkbenchAction
com o nome do script como class. A marcação relevante está em negrito.
<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:/plug-in/org.eclipse.scripting.examples/excalibur.js
language=javascript">
</action>
...
Os adaptadores de script padrão podem ser utilizados como referência diretamente como parte da especificação plugin.xml de qualquer plug-in. A lista de adaptadores suportados pode ser encontrada no pacoteorg.eclipse.scripting.
Os Exemplos de Script mostram outras utilizações desses adaptadores. O plug-in de exemplo de script implementa cada uma das extensões de script, utilizando os adaptadores predefinidos. Consulte o arquivo plugin.xml para obter detalhes adicionais.
Referências
A Especificação de API deorg.eclipse.scripting
contém informações adicionais sobre o suporte a script.
Os exemplos de script fornecem também descrições e informações sobre utilização.
Consulte Exemplos de Script para obter mais informações.
