Definindo um aplicativo cliente rich

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 no arquivo MANIFEST.MF é que a lista de plug-ins requeridos é muito menor do que a que costumávamos utilizar!

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.ui.examples.rcp.browser; singleton:=true
Bundle-Version: 3.2.0.qualifier
Bundle-ClassPath: browser.jar
Bundle-Activator: org.eclipse.ui.examples.rcp.browser.BrowserPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
 org.eclipse.ui
Eclipse-AutoStart: true
Eclipse-AutoStart-comment: Utilize Eclipse-AutoStart no lugar de Eclipse-LazyStart porque
o exemplo de navegador deve ser executado no 3.1 e também no 3.2.

Até agora, temos contribuídos com a função para o ambiente de trabalho da plataforma, declarando extensões que incluem elementos no ambiente de trabalho. Em todo o conteúdo do plugin.xml que revisamos até agora, observamos apenas contribuições individuais para um ambiente de trabalho 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 ambiente de trabalho. 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 ambiente de trabalho 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 ambiente de trabalho é criado. Vamos observar mais de perto.