Widgets personnalisés

Vous pouvez étendre SWT en implémentant votre propre widget personnalisé. SWT fournit lui-même un package, org.eclipse.swt.custom, qui contient des contrôles personnalisés ne figurant pas dans le groupe principal de contrôles SWT, mais qui sont nécessaires pour implémenter le plan de travail de la plate-forme.

Contrôle
Objectif
CBanner CBanner est utilisé dans le plan de travail pour afficher la zone de la barre d'outils et la barre d'outils de commutation perspective.
CCombo Similaire à Combo, mais redimensionnable verticalement lui permettant de s'adapter aux cellules du tableau.
CLabel Similaire à Label, mais prend en charge la réduction du texte avec une ellipse. Supporte également un effet dégradé de la couleur d'arrière-plan, comme on peut le voir dans la vue du plan de travail actif. Ne supporte pas les retours à la ligne.
CTabFolder Similaire à TabFolder, mais supporte une configuration supplémentaire de l'apparence visuelle des onglets (supérieurs ou inférieurs) et des bordures.
CTabItem Objet de l'interface utilisateur sélectionnable, correspondant à un onglet pour une page dans un CTabFolder.
SashForm Contrôle composite présentant ses enfants en ligne ou en colonne et utilisant un bouton de réglage pour les séparer de telle sorte que l'utilisateur puisse les redimensionner.
ScrolledComposite Contrôle composite faisant défiler son contenu et qui éventuellement l'étend pour remplir l'espace disponible.
StyledText Contrôle éditable permettant à l'utilisateur de saisir du texte. Les plages de texte à l'intérieur du contrôle peuvent avoir des couleurs différentes et des styles de police différents.
ViewForm ViewForm est utilisé dans le plan de travail pour positionner la barre locale libellé/barre d'outils/menu d'une vue.

Implémentation d'un widget personnalisé

Dès lors que vous avez déterminé qu'un widget personnalisé est nécessaire et décidé quelles plates-formes doivent être supportées, vous pouvez envisager plusieurs techniques d'implémentation pour votre widget. Ces techniques peuvent être mélangées et appariées en fonction de ce qui est disponible sur la plate-forme du système d'exploitation sous-jacent.

Implémentation native

Si votre application requiert un widget natif qui n'est pas fourni par SWT, vous devez également l'implémenter de manière native. Il peut s'agir d'un widget de plate-forme, d'un widget tiers ou de tout autre widget de la bibliothèque partagée d'une plate-forme. Un exemple complet d'implémentation de widget personnalisé natif figure à l'article Creating Your Own Widgets using SWT.

Combinaison de widgets existants

Les widgets peuvent être combinés pour former des widgets plus sophistiqués. Par exemple, un Combo peut êtreimplémenté à l'aide d'un widget d'entrée de texte associé à un bouton et à une liste déroulante. Pour implémenter un widget combiné, vous devez créer une sous-classe de Composite et gérer les enfants en interne.

Un exemple simple figure dans CCombo.

Implémentation personnalisée

Dans certains cas, vous ne disposez pas de code natif, ni de widgets existants qui vous aident à implémenter votre nouveau widget. Ceci signifie que vous devez tracer le widget vous-même dans le gestionnaire pour l'événement Paint. Bien que cette technique puisse devenir assez compliquée, elle présente l'avantage de fournir une implémentation totalement transférable.

Les contrôles personnalisés sont implémentés en sous-classant la classe Canvas ou Composite. Sous-classez la classe Canvas si votre widget ne contient aucun contrôle d'enfants.

L'implémentation interne d'un widget personnalisé implique généralement les tâches principales suivantes :

Un grand nombre des widgets implémentés dans org.eclipse.swt.custom utilisent cette approche. Un simple exemple figure dans CLabel.

Pour plus d'informations sur les widgets personnalisés, reportez-vous à la section Creating your own widgets using SWT.