Le plan de travail définit des points d'extension pour que les plug-ins ajoutent des fonctions de l'interface utilisateur à la plateforme. Un grand nombre de ces points d'extension, en particulier les extensions d'assistant, sont implémentés à l'aide de classes dans les packages org.eclipse.jface.*. Quelle est la différence ?
JFace est un toolkit de l'interface utilisateur qui fournit des classes auxiliaires pour le développement des fonctionnalités de l'interface utilisateur pouvant être ennuyeuses à implémenter. JFace opère au-dessus du niveau d'un système de widgets bruts. Il fournit des classes pour le traitement des tâches de programmation courantes de l'interface utilisateur :
JFace vous permet de vous concentrer sur l'implémentation de la fonction de votre plug-in spécifique, plutôt que de vous concentrer sur le système de widgets sous-jacent ou sur la résolution des problèmes qui sont courants dans presque toute application de l'interface utilisateur.
Où finit JFace et où commence le plan de travail ? Parfois, les lignes de séparation ne sont pas évidentes. En règle générale, les API JFace (des packages org.eclipse.jface.*) sont indépendantes des points d'extension et des API du plan de travail. Il est concevable qu'un programme JFace puisse être écrit sans aucune utilisation de code du plan de travail.
Le plan de travail utilise JFace, mais si possible, tente de réduire ses dépendances. Par exemple, le modèle de composant de plan de travail (IWorkbenchPart) est conçu pour être indépendant de JFace. Nous avons vu au préalable que les vues et les éditeurs peuvent être implémentés directement à l'aide de widgets SWT, sans utiliser de classes JFace. Le plan de travail tente autant que possible de rester "neutre vis à vis de JFace", permettant aux programmeurs d'utiliser les éléments de JFace qu'ils trouvent utile. En pratique, le plan de travail utilise JFace pour une grande partie de son implémentation et il existe des références aux types JFace dans les définitions des API. (Par exemple, les interfaces JFace pour IMenuManager, IToolBarManager et IStatusLineManager apparaissent comme des types dans les méthodes IActionBar du plan de travail.)
Les lignes de séparation entre SWT et JFace sont beaucoup plus claires. SWT ne dépend pas du tout de JFace, ni du code de la plateforme. De nombreux exemples SWT montrent comment générer une application indépendante.
JFace est conçu pour fournir une fonction d'interface utilisateur d'application commune à partir de la bibliothèque SWT. JFace ne tente pas de "masquer" SWT ou de remplacer sa fonction. Il fournit des classes et des interfaces qui traitent un grand nombre des tâches courantes associées à la programmation d'une interface utilisateur dynamique à l'aide de SWT.
La relation entre JFace et SWT est plus clairement illustrée à la section décrivant les afficheurs et leurs relations avec les widgets SWT.