A definição de um plug-in de aplicativo rich client começa de forma semelhante aos outros plug-ins que estamos estudando. A única diferença na primeira parte da marcação é que a lista de plug-ins requeridos é bem menor
do que estamos acostumados!
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plug-in id="org.eclipse.ui.examples.rcp.browser"
name="%pluginName"
version="3.0.0"
provider-name="%providerName">
<runtime>
<library name="browser.jar">
</library>
</runtime>
<requires>
<import plugin="org.eclipse.core.runtime"/>
<import plugin="org.eclipse.ui"/>
</requires>
Até agora, temos contribuídos com a função para o workbench da plataforma, declarando extensões que incluem elementos no workbench. Em todo o conteúdo do plugin.xml que revisamos até agora, observamos apenas contribuições individuais para um workbench que assume-se que esteja lá. Na plataforma rich client, não há um aplicativo já definido. Seu plug-in rich client é responsável por especificar a classe que deve ser executada quando a plataforma é iniciada. Isso é feito
na extensão de org.eclipse.core.runtime.applications.
<extension
point="org.eclipse.core.runtime.applications"
id="app"
name="%appName">
<application>
<run
class="org.eclipse.ui.examples.rcp.browser.BrowserApp">
</run>
</application>
</extension>
Nesta extensão, especificamos a classe que deve ser executada quando a plataforma é iniciada pela primeira vez.
Esta classe deve implementarIPlatformRunnable,
que simplesmente significa que deve implementar um método de execução. O método de execução é responsável por criar a exibição SWT e iniciar um workbench. A classe PlatformUI
implementa os métodos de conveniência para executar essas tarefas.
public Object run(Object args) throws Exception {
Display display = PlatformUI.createDisplay();
try {
int code = PlatformUI.createAndRunWorkbench(display,
new BrowserAdvisor());
// exit the application with an appropriate return code
return code == PlatformUI.RETURN_RESTART
? EXIT_RESTART
: EXIT_OK;
} finally {
if (display != null)
display.dispose();
}
}
A chamada para createAndRunWorkbench não retornará até que o workbench esteja fechado. O loop de eventos SWT e outras logísticas de nível inferior são manipulados dentro deste método. Nesse estágio, não é tão importante que você entenda os mecanismos de suporte em execução do aplicativo SWT. Esse código pode ser copiado para o seu aplicativo rich client com alterações mínimas. Na verdade, o gancho para você incluir sua própria funcionalidade é o WorkbenchAdvisor que é transmitido quando o workbench é criado. Vamos observar mais de perto.