La prise en charge de l'introduction est un ensemble de points d'extension et de parties de plan de travail qui permettent aux plug-ins de définir des pages spécialisées qui introduisent un produit de plate-forme aux nouveaux utilisateurs. Les informations d'introduction sont généralement affichées lorsque le produit est lancé pour la première fois. La prise en charge de l'introduction est généralement configurée au niveau du produit, même si des plug-ins individuels peuvent contribuer aux informations d'introduction dans des configurations d'introduction de produits connus.
Du point de vue d'un plan de travail, la racine de la prise en charge de l'introduction se trouve dans la partie introduction. Cette partie est spécifiée dans une définition d'extension. Lorsque le plan de travail est initialisé, il crée un site d'introduction qui réserve de l'espace pour la page d'introduction. L'implémentation de la partie introduction du site est déterminée à l'aide des informations de configuration du produit. Une fois que la partie introduction est affichée, elle peut être utilisée dans deux modes :
Une fois qu'un partie introduction est définie, elle doit être configurée avec les informations d'introduction. Cette opération est effectuée à l'aide d'une configuration d'introduction à laquelle contribue également une extension. Il est possible d'ajouter des plug-ins individuels à la configuration standard de l'introduction du produit à l'aide de leurs propres extensions.
Nous allons observer la page d'introduction du kit SDK de la plate-forme sous forme d'exemple pour mieux comprendre ces concepts.
L'interface IIntroPart et le point d'extension org.eclipse.ui.intro composent le mécanisme générique qui peut être utilisé pour créer votre propre prise en charge pour un produit donné. L'objectif principal de cette extension est de définir la classe qui implémente IIntroPart et de définir la liaison entre un ID produit et une partie introduction. Par exemple, la contribution ci-dessous définit une partie introduction hypothétique à afficher par le plan de travail au démarrage :
<extension point="org.eclipse.ui.intro"> <intro class="com.example.SampleIntroPart" id="someId"> icon="someIcon.gif" </intro> <introProductBinding introId="someId" productId="com.example.someProductId"> </introProductBinding> </extension>Cette contribution définit tout d'abord la partie introduction et lui affecte l'ID "someId". Elle lie ensuite cette partie introduction à un produit dont l'ID est "com.example.someProductId". Au démarrage de la plate-forme, la classe spécifiée dans l'attribut class est instanciée par le plan de travail et affichée à l'attention de l'utilisateur pour présenter le produit. C'est le niveau d'intégration le moins élevé dans l'interface IIntroPart.
La plate-forme met à disposition sa propre implémentation IIntroPart appelée CustomizableIntroPart, qui permet de personnaliser le contenu et la présentation de l'introduction. Voici le fragment de code qui définit la partie introduction du plan de travail. Nous n'allons pas étudier les mécanismes d'implémentation d'une partie introduction car nous souhaitons nous concentrer sur la définition du contenu de l'introduction (pour plus d'informations, reportez-vous à la documentation relative aux points d'extension et à la documentation Java).
<extension point="org.eclipse.ui.intro"> <intro class="org.eclipse.ui.intro.config.CustomizableIntroPart" id="org.eclipse.platform.intro"> </intro> <introProductBinding introId="org.eclipse.platform.intro" productId="org.eclipse.platform"> </introProductBinding> </extension>La contribution ci-dessus définit CustomizableIntroPart comme la partie introduction à utiliser pour la plate-forme du kit SDK Eclipse. Le reste de ce document illustre comment utiliser et étendre cette partie.
L'élémentCustomizableIntroPart de la plate-forme permet de personnaliser le contenu et la présentation de l'introduction à l'aide du point d'extension org.eclipse.ui.intro.config (cette configuration de l'introduction peut être étendue à l'aide du point d'extension org.eclipse.ui.intro.configExtension). Cette structure permet aux développeurs de plug-in de se concentrer sur le développement de leur propre contenu d'introduction plutôt que sur l'implémentation d'une structure de partie introduction à partir de zéro. Si une autre classe d'introduction est spécifiée, ces deux points d'extension ne sont pas utilisés et la classe spécifiée doit implémenter sa propre structure pour le format et la configuration du contenu de l'introduction.
org.eclipse.ui.intro.config décrit l'ID de la configuration d'introduction qui doit afficher le contenu et le nom du fichier XML qui contient la définition spécifique du contenu de l'introduction. Il est considéré qu'une seule configuration d'introduction doit être définie pour un élément CustomizableIntroPart donné (seule la première configuration d'introduction détectée peut être affichée dans CustomizableIntroPart).
<extension id="intro" point="org.eclipse.ui.intro.config"> <config introId="org.eclipse.platform.intro" id="org.eclipse.platform.introConfig" content="$nl$/introContent.xml"> <presentation home-page-id="root" standby-page-id="standby"> <implementation ws="win32" style="css/shared.css" kind="html" os="win32"> </implementation> <implementation kind="swt"> </implementation> </presentation> </config> </extension>Le chemin d'accès au fichier est relatif par rapport au répertoire du plug-in (notez l'utilisation de la variable $nl$ dans le nom du répertoire, qui signifie que le fichier se trouve dans un répertoire spécifique à la langue nationale de l'environnement cible).
L'extension de la configuration permet de spécifier le contenu et la présentation. Alors que l'élément content est chargé de définir les pages, l'élément presentation décrit les attributs liés à la présentation qui déterminent l'affichage des pages. L'ID page de la page d'accueil d'introduction (en mode complet) doit être indiqué, mais l'ID de la page d'attente (en mode attente) est facultatif. La page d'accueil est la page affichée lorsque le produit est lancé pour la première fois. Une présentation peut spécifier une ou plusieurs implémentations pour afficher les pages. Les implémentations sont spécifiés pour chaque plate-forme et système de fenêtrage, ce qui permet de tirer parti des fonctions spécifiques à la plate-forme pour afficher le contenu de la page. Par exemple, la plate-forme windows possède un widget de navigateur HTML robuste afin qu'une implémentation HTML soit utilisée pour le contenu de l'introduction. D'autres plates-formes qui ne disposent pas de cette fonction utilisent une implémentation SWT qui mappe la description de la page vers un formulaire SWT. Une implémentation qui ne spécifie pas un système de fenêtrage ou un système d'exploitation est considérée comme l'implémentation générique. Pour s'assurer qu'une introduction est affichée sur toutes les plates-formes, il est important de définir ce type d'implémentation. Le plan de travail commence par rechercher une implémentation correspondant au système d'exploitation et au système de fenêtrage actifs. Si aucune implémentation n'est détectée, le plan de travail cherche l'implémentation générique. La plupart de ces détails sont gérés au niveau de la configuration du produit, donc nous n'en parlerons pas plus en détail ici.
A présent, nous pouvons observer le contenu lui-même. Le contenu est décrit en termes de pages. Toutes les pages possèdent un attribut id. Il s'agit de l'ID utilise pour définir les pages d'accueil et d'attente, et d'autres emplacements contenant une référence à une page. Autrement, les attributs pertinents dépendent du type de page défini. Il existe deux types principaux de pages :
Le meilleur moyen de se faire une idée du format de définition du contenu est d'accéder à l'implémentation dans le kit SDK. Le fragment de code ci-dessous affiche seulement la première partie du contenu de la page principale du kit SDK, qui est la première page d'introduction affichée.
<introContent> <page alt-style="css/root_swt.properties" style="css/root.css" id="root" style-id="page"> <title style-id="intro-header">Bienvenue dans Eclipse Platform 3.0</title> <group id="links-background"> <group id="page-links"> <link label="Présentation" url="http://org.eclipse.ui.intro/showPage?id=overview" id="overview" style-id="left"> <text>Découvrez Eclipse</text> </link> <link label="Didacticiels" url="http://org.eclipse.ui.intro/showPage?id=tutorials" id="tutorials" style-id="left"> <text>Laissez-vous guider dans les didacticiels bout-en-bout d'Eclipse</text> </link> <link label="Exemples" url="http://org.eclipse.ui.intro/showPage?id=samples" id="samples" style-id="right"> <text>Explorez le développement d'Eclipse grâce à des exemples de code</text> </link> <link label="Nouveautés" url="http://org.eclipse.ui.intro/showPage?id=news" id="news" style-id="right"> <text>Découvrez les nouveautés de cette version</text> </link> </group> </group>
Les éléments d'une page peuvent également être filtrés à partir d'une implémentation en particulier. Cela permet aux concepteurs de pages de travailler avec des plates-formes déterminées en tête. Il existe bien d'autres attributs puissants qui peuvent être utilisés pour décrire une page et son contenu. Pour obtenir une référence complète des éléments, sous-éléments et attributs valides, reportez-vous à la documentation relative aux points d'extension pour org.eclipse.ui.intro.config et à la spécification de format de fichier de contenu d'introduction associée.
Une configuration d'introduction peut être étendue de trois manières :
Les plug-ins peuvent contribuer a contenu de l'introduction dans une page définie ailleurs. Cependant, la définition des pages doit définir un attribut anchor qui sert d'espace réservé pour l'emplacement du nouveau contenu. La page de présentation du kit SDK définit deux points d'ancrage pour ajouter des éléments associés aux outils JDT et à l'environnement PDE sur la page de présentation.
<group id="page-content"> <text style-id="page-title" id="page-title">OVERVIEW</text> <text style-id="page-description" id="page-description">Eclipse est une sorte de plate-forme d'outils universels - un environnement IDE extensible sans objectif particulier. Il offre un environnement de développement avancé qui permet aux développeurs de créer, avec la plus grande efficacité, des outils qui s'intègrent sans faille à Eclipse Platform.</text> <group id="overview-links"> <link label="Bases du plan de travail" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.platform.doc.user/concepts/concepts-2.htm" id="basics"> <text>Découvrez les concepts standard du plan de travail Eclipse</text> </link> <link label="Prise en charge d'équipe" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.platform.doc.user/concepts/concepts-26.htm" id="team"> <text>Apprenez à collaborer avec d'autres développeurs</text> </link> <anchor id="jdtAnchor"/> <anchor id="pdeAnchor"/> </group> </group>Ces points d'ancrage peuvent être référencés par des plug-ins qui ajoutent du contenu à la page. Le contenu est ajouté à l'aide de l'extension org.eclipse.ui.intro.configExtension. Outre l'extension du contenu de la page, ce point d'extension permet également de contribuer aux parties de contenu d'attente et aux actions personnalisées.
Pour étendre une configuration d'introduction existante, vous pouvez utiliser l'élément configExtension. Dans cet élément, vous indiquez l'ID configuration de la configuration d'introduction en cours d'extension et le fichier de contenu qui décrit le nouveau contenu.
<extension point="org.eclipse.ui.intro.configExtension"> <configExtension configId="org.eclipse.platform.introConfig" content="$nl$/overviewExtensionContent.xml"/> ... </extension>Le format du fichier de contenu est similaire à celui du contenu de la configuration d'introduction, à l'exception du fait qu'il doit contenir un élément extensionContent qui définit le chemin d'accès au point d'ancrage au niveau duquel le contenu de l'extension doit être inséré.
<introContent> <extensionContent alt-style="css/swt.properties" style="css/overview.css" path="overview/page-content/overview-links/jdtAnchor"> <link label="Développement Java" url="http://org.eclipse.ui.intro/showHelpTopic?id=/org.eclipse.jdt.doc.user/gettingStarted/qs-BasicTutorial.htm" id="java"> <text>Familiarisez-vous avec le développement de programmes Java à l'aide d'Eclipse</text> </link> </extensionContent> </introContent>Après avoir contribué au contenu personnalisé de points d'ancrage prédéfinis, un produit donné peut se lier lui-même à cette introduction à l'aide du point d'extension org.eclipse.ui.intro décrit ci-dessus. Lorsque le produit est exécuté, l'introduction qui a été étendue s'affiche avec le contenu supplémentaire. Cela permet au produit de disposer de ses propres informations de marque et informations spécifiques au produit, tout en réutilisant l'introduction d'un produit étroitement lié avec le contenu clé qui lui est propre.
Une introduction déterminée peut également inclure de manière sélective des parties d'une introduction de produit associé. En pareil cas, le produit peut définir sa propre introduction et sa propre configuration d'introduction, puis référencer les éléments importants définis dans une autre configuration d'introduction à l'aide d'un élément include dans le fichier de contenu. Ce mécanisme est utile dans les situations dans lesquelles des produits associés sont créés l'un à partir de l'autre et qu'il est nécessaire de présenter aux utilisateurs les concepts clés des produits de niveau supérieur.
Les plug-ins peuvent également implémenter une partie pour afficher un contenu alternatif lorsque la page d'introduction est en mode d'attente. Par exemple, la plate-forme définit une partie d'attente qui affiche un aide-mémoire pour le contenu de l'introduction associée. La partie est lancée à l'aide d'un lien vers la page contenant une adresse URL spécialisée. Les parties d'attente sont lancées à l'aide d'une adresse URL contenant une commande spéciale pour afficher une partie d'attente, comme http://org.eclipse.ui.intro/showStandby?partId=somePartId. La partie est définie dans le sous-élément standbyContentPart de l'extension org.eclipse.ui.intro.configExtension. Vous devez spécifier un ID, un ID plug-in et une classe pour la partie. La classe doit implémenter IStandbyContentPart. Le fragment de code ci-dessous illustre la manière dont la plate-forme définit une partie d'attente pour afficher les aide-mémoires.
<extension point="org.eclipse.ui.intro.configExtension"> <standbyContentPart id="org.eclipse.platform.cheatsheet" class="org.eclipse.platform.internal.CheatSheetStandbyContent" pluginId="org.eclipse.platform"/> </extension>Cet aide-mémoire peut être lancé à partir d'une page d'introduction à l'aide d'un sous-élément link dont l'adresse URL esthttp://org.eclipse.ui.intro/showStandby?partId=org.eclipse.platform.cheatsheet&input=org.eclipse.pde.helloworld. Cette adresse URL de l'introduction lance la partie de contenu d'attente org.eclipse.platform.cheatsheet et définit son résultat sur "org.eclipse.pde.helloworld". Les mécanismes détaillés pour implémenter une partie d'attente dépassent le cadre du présent document. Pour plus d'informations, reportez-vous à IStandbyContentPart et à ses classes associées.
A l'aide du point d'extension org.eclipse.ui.intro.configExtension, les plug-ins peuvent contribuer à leurs propres actions personnalisées qui peuvent être utilisées comme valeur url pour un élément de lien dans une page. Par exemple, observez le lien suivant :
http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.pde.ui&class=org.eclipse.pde.ui.internal.samples.ShowSampleAction&id=org.eclipse.sdk.samples.swt.examples
Cette adresse URL d'introduction va exécuter une classe d'action appelée ShowSampleAction, qui se trouve dans un package "org.eclipse.pde.ui.internal.samples" dans le plug-in "org.eclipse.pde.ui". L'ID de l'exemple à exécuter est "org.eclipse.sdk.samples.swt.examples".
Pour définir une version personnalisée de cette adresse URL d'introduction, vous pouvez utiliser le marquage suivant :
<extension point="org.eclipse.ui.intro.configExtension"> <action name="myCommand" replaces="runAction?pluginID=org.eclipse.pde.ui&class=org.eclipse.pde.ui.internal.samples.ShowSampleAction"> </action> </extension>Avec l'extension ci-dessus, vous pouvez utiliser l'adresse URL ci-dessous pour exécuter la même action :
http://org.eclipse.ui.intro/myCommand?id=org.eclipse.sdk.samples.swt.examples
L'action "myCommand" va être remplacée par la valeur de l'attribut replaces et les autres paramètres d'adresse URL éventuels vont être ajoutés à la fin. Une fois la substitution effectuée, l'adresse URL qui en résulte est redéveloppée de la manière suivante :
http://org.eclipse.ui.intro/runAction?pluginId=org.eclipse.pde.ui&class=org.eclipse.pde.ui.internal.samples.ShowSampleAction&id=org.eclipse.sdk.samples.swt.examples