Définition d'une application client avancée

La définition d'un plug-in d'application client avancée commence de la même manière que celle des autres plug-ins que nous avons étudiés. La seule différence dans la première partie du marquage réside dans le fait que la liste de plug-ins nécessaires est bien plus réduite que ce à quoi vous êtes habitué !

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin
   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>

Jusque-là, vous avez contribué à la fonction du plan de travail de la plate-forme en déclarant des extensions qui ajoutent des éléments au plan de travail. Dans tout le contenu du fichier plugin.xml passé en revue jusque-là, nous n'avons examiné que des contributions individuelles à un plan de travail qui est considéré comme existant. Sur la plate-forme client avancée, aucune application n'est définie pour le moment. Le plug-in du client avancé est chargé de spécifier la classe qui doit être exécutée au lancement de la plate-forme. Cette opération est effectuée dans l'extension 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>

Dans cette extension, nous spécifions la classe qui doit être exécutée lorsque la plate-forme est lancée pour la première fois. Cette classe doit implémenter IPlatformRunnable, ce qui signifie simplement qu'elle doit implémenter une méthode run. La méthode run est chargée de créer l'affichage SWT et de lancer un plan de travail. La classe PlatformUI implémente des méthodes de commodité pour effectuer ces tâches.

	public Object run(Object args) throws Exception {
		Display display = PlatformUI.createDisplay();
		try {
			int code = PlatformUI.createAndRunWorkbench(display,
					new BrowserAdvisor());
			// pour quitter l'application avec un code de retour approprié
			return code == PlatformUI.RETURN_RESTART
					? EXIT_RESTART
					: EXIT_OK;
	} finally {
			if (display != null)
				display.dispose();
		}
	}

L'appel de createAndRunWorkbench n'est pas renvoyé tant que le plan de travail n'est pas fermé. La boucle d'événement SWT et l'autre logistique de niveau inférieur sont gérés dans cette méthode. A ce niveau, il n'est pas très important que vous compreniez la mécanique sous-jacente de l'exécution d'une application SWT. Ce code peut être copié dans l'application client avancée avec des modifications réduites. En fait, le point d'ancrage grâce auquel vous a joutez la fonction est WorkbenchAdvisor, que vous avez transmis comme argument lors de la création du plan de travail. Examinons cela plus en détail.