article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
article de presse - Cap Data Consulting
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
P ratique<br />
String editorArea = layout.getEditorArea();<br />
layout.setEditorAreaVisible(false);<br />
layout.setFixed(true);<br />
layout.addStandaloneView(MyView.ID,<br />
false,<br />
IPageLayout.LEFT,<br />
1.0f, editorArea);<br />
}<br />
Ce co<strong>de</strong> mérite d'être commenté pas à pas. Nous commençons par obtenir<br />
l'i<strong>de</strong>ntificateur <strong>de</strong> la zone <strong>de</strong> l'éditeur par défaut. Ensuite, nous <strong>de</strong>mandons<br />
au gestionnaire <strong>de</strong> masquer cette zone. Puis nous ajoutons notre vue dans<br />
l'emplacement <strong>de</strong> la zone <strong>de</strong> l'éditeur qui est donc remplacée par notre vue.<br />
Si vous mettez la <strong>de</strong>uxième ligne en commentaire, la vue apparaît à gauche<br />
<strong>de</strong> l'éditeur comme illustré, mais elle rési<strong>de</strong> dans la zone <strong>de</strong> l'éditeur.<br />
Si vous voulez obtenir un résultat <strong>de</strong> ce<br />
genre mais plus raffiné, c'est-à-dire avec une<br />
vue à gauche <strong>de</strong> l'éditeur, mais en <strong>de</strong>hors<br />
<strong>de</strong> sa zone, alors vous ajouterez un emplacement<br />
pour la vue dans la page au moyen<br />
<strong>de</strong> la métho<strong>de</strong><br />
Ajout d'une vue<br />
sans masquage <strong>de</strong> l'éditeur.<br />
IPageLayout.AddPlaceHol<strong>de</strong>r().<br />
Notre vue est ajoutée en tant que vue autonome(<br />
Standalone), ce qui signifie qu'elle ne<br />
peut être arrimée. Nous remarquons que la métho<strong>de</strong> addStandaloneView ne<br />
reçoit pas une référence sur un objet. Nous travaillons avec Eclipse, pas avec<br />
Swing. La métho<strong>de</strong> reçoit simplement un i<strong>de</strong>ntificateur, c'est à dire une chaîne.<br />
Le runtime va alors examiner les points d'extensions "Views" dans le<br />
<strong>de</strong>scriptif XML, et s'il trouve l'i<strong>de</strong>ntificateur, il instanciera lui même la classe<br />
mise en correspondance et notre vue apparaîtra. Mais pour l'instant, ni la<br />
classe ni son i<strong>de</strong>ntificateur n'existent. Nous nous en occupons maintenant.<br />
3<br />
Plein la vue<br />
Revenez à l'éditeur <strong>de</strong> plug-in, au besoin en double-cliquant sur plugin.xml<br />
dans l'explorateur. Puis, dans l'éditeur, sélectionnez l'onglet extension. A ce<br />
point, cliquez sur le bouton Add. Dans le dialogue qui suit, sélectionnez<br />
org.eclipse.ui.views puis cliquez sur 'Finish', ce qui vous ramène à l'éditeur.<br />
Cliquez alors sur org.eclipse.ui.views avec le bouton droit et dans le menu<br />
contextuel, sélectionnez 'View'. Remplissez ensuite les champs en haut à<br />
droite comme ceci<br />
id: monrcp.myview<br />
name: monrcp.myview<br />
class: monrcp.MyView<br />
L'éditeur <strong>de</strong><br />
plug-in, volet<br />
extensions.<br />
La classe MyView n'existe pas encore. Ajoutez la à votre projet en la faisant<br />
dériver <strong>de</strong> org.eclipse.ui.part.ViewPart. Le terme Part apparaît, car<br />
nous passons à la concrétisation <strong>de</strong> la vue. On pourrait alors penser que<br />
la classe serait mieux nommée MyPart. Disons que ce n'est pas l'habitu<strong>de</strong><br />
sous Eclipse, sans doute pour l'homogénéité <strong>de</strong>s informations<br />
dans le <strong>de</strong>scriptif XML. Ebauchons le co<strong>de</strong> <strong>de</strong> la classe.<br />
public class MyView extends ViewPart<br />
implements PaintListener {<br />
public static final String ID = "monrcp.myview";<br />
}<br />
private Canvas canvas;<br />
private Display display;<br />
private Color red;<br />
private final String texte = "Programmez!";<br />
public void createPartControl(Composite parent) {<br />
canvas = new Canvas(parent, SWT.Paint);<br />
canvas.addPaintListener(this);<br />
display = canvas.getDisplay();<br />
red = display.getSystemColor(SWT.COLOR_RED);<br />
}<br />
Notre classe se déclare comme implémentant PaintListener afin <strong>de</strong> s'enregistrer<br />
comme écouteur d'événement <strong>de</strong> <strong>de</strong>ssin. Nous verrons l'implémentation<br />
plus loin. Remarquons la présence du membre ID dont la valeur est<br />
la même que celle déclarée dans le <strong>de</strong>scriptif XML. Le constructeur <strong>de</strong> notre<br />
classe ne fait rien. Quand le runtime a instancié notre classe, il invoque sa<br />
métho<strong>de</strong> createPartControl. Dans celle-ci nous instancions un composant<br />
enfant Canvas, puis nous nous abonnons aux événements <strong>de</strong> <strong>de</strong>ssin. Enfin,<br />
nous <strong>de</strong>mandons un objet préfabriqué en prévision du <strong>de</strong>ssin. Toutefois, le<br />
système ne peut pas toujours nous fournir tout ce dont nous avons besoin.<br />
4<br />
Programmez n°85 78 avril 2006<br />
Mais café la police ?<br />
Niveau<br />
java facile avancé expert<br />
Ajout d'un branchement sur le point<br />
d'extension org.eclipse.ui.views.<br />
Nous abordons un point très particulier <strong>de</strong> la programme Eclipse/Java: la gestion<br />
<strong>de</strong> ressources. En effet, dès que nous travaillons avec <strong>de</strong>s widgets, nous<br />
travaillons avec SWT, et SWT <strong>de</strong>man<strong>de</strong> au programmeur <strong>de</strong> gérer la libération<br />
d'objets comme contexte graphique (GC), polices, etc. par la métho<strong>de</strong><br />
dispose <strong>de</strong> l'objet concerné. Pour chaque classe SWT utilisée, la première<br />
chose à faire est <strong>de</strong> consulter la documentation afin <strong>de</strong> savoir si effective-