mardi, avril 28, 2009

Les dangers du PaintListener ...

Pour information, lorsque vous utilisez l'écouteur PaintListener pour ajouter des éléments graphiques à des composants, faites attention lorsque vous souhaitez avoir accès aux dimensions du cadre de la zone de dessin.

Il y a deux façons d'obtenir la taille de cette zone de dessin :
  • Soit en utilisant les attributs width et height de l'objet PaintEvent, passé en paramètre de la méthode paintControl.
  • Soit en utilisant la source de l'écouteur qui devrait être normalement de type Control. Ainsi par l'intermédiaire de la propriété bounds, il y a possibilité d'avoir accès à la hauteur et à la largeur.
On pourrait penser que les valeurs obtenues sont identiques, et bien non. Dans le premier cas, la taille de la zone de dessin peut changer lors de mise à jour de l'affichage. Le cas classique quand une fenêtre superpose la fenêtre contenant la zone de dessin. On peut obtenir des résultats assez catastrophiques. On se rend compte que la largeur et la hauteur peuvent prendre des valeurs incohérentes (voir capture ci-dessous).


Pour résoudre ce problème, je vous recommande de passer par les dimensions de la source pour déterminer les limites de la zone de dessin.

Pour résumer, il ne faut pas utiliser le code ci-dessous (où e est de type PaintEvent) :
int width = e.width;
int height = e.height;
Mais le code ci-dessous pour déterminer la hauteur et la largeur de la zone de dessin :
int width = 0;
int height = 0;
if (e.getSource() != null) {
Control currentSource = (Control)e.getSource();
Rectangle bounds = currentSource.getBounds();
width = bounds.width;
height = bounds.height;
}
Tout ça pour dire que je ne faisais pas attention depuis un certain moment et j'utilisais bêtement les dimensions fournis par l'objet PaintEvent.

PS : les codes sources du support de cours concernant la partie SWT vont être modifiés.

lundi, avril 27, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Angello Zerr propose un billet qui explique comment développer un éditeur de Workflow XML. En d'autres termes, si vous avez envie de développer un éditeur de type naviagation-rules pour les pages JSF, ce billet est pour vous.
  • Un exemple qui montre comment détacher une vue de manière programmatique, encore une histoire d'API interne.
Java
  • C'est fait, Oracle a racheter Sun. Je ne m'y attendais pas. Faut voir maintenant ce qui va se passer entre Netbeans et Eclipse. Oracle a des liens avec la fondation Eclipse. Toplink a été offert à la fondation Eclipse et est devenu EclipseLink, attendons de voir ce qui va se passer.
  • Un article intéressant concernant JUnit 4.

lundi, avril 20, 2009

Introduction au langage de description Schema XML

Un nouveau support de cours est disponible concernant le langage de description Schema XML. Il s'agit d'une mini-introduction que j'avais écrit pour le cours sur les extensions d'Eclipse.

Au menu de ce support de cours :
  • Généralités sur le langage de description Schema XML
  • Définition des types simples (Element, Attributs et Restrictions)
  • Définition des types complexes à partir de quatre combinaisons (éléments vides qui ne contiennent que des attributs, éléments de type simple qui contiennent des attributs, éléments qui peuvent contenir des sous éléments et des attributs, éléments qui contiennent des attributs, des sous éléments et du texte)
  • Annotations
Tout ce qui concerne le Schema XML n'a pas été traité.

Le lien du support de cours et les exemples peuvent être trouvés ici.

vendredi, avril 17, 2009

Supports de cours en préparation ...

Voici un état sur l'écriture des supports de cours en préparation.
  • Le support de cours sur le Workbench Eclipse. Les plus grosses parties ont été écrites. Les parties encore à traiter sont les UI Forms, les Actions et la customisation. Je vous prépare une surprise pour le mode de distribution de ce nouveau support de cours ...
  • Le support de cours sur Schema XML (transfuge du cours sur les points d'extension). Il est prêt depuis longtemps et devrait être publié dans quelques jours.
  • Un support de cours sur l'industrialisation avec les outils suivant Maven 2, SVN, Hudson, Nexus. Il s'agit d'un retour d'expérience.

samedi, avril 11, 2009

JUG Poitou-Charentes

Un nouveau JUG vient d'ouvrir, le JUG Poitou-Charentes, la première session était le vendredi 10 avril. A la différence des autres JUG qui reste fixé à une ville, le JUG Poitou-Charentes a pour vocation de présenter des sessions autour du monde Java dans les principales villes de la région Poitou-Charentes. La première était dans l'agglomération de Poitiers et il est question de déplacements à Niort, à la Rochelle, Angoulème, ...


Pour la première, j'y étais puisque c'est ma région, l'événement était dans ma ville et c'était juste à côté de mon lieu de travail, que demander de plus.

Le premier thème était consacré à Maven 2 présenté par Nicolas De Loof.

J'ai eu l'occasion de discuter avec Nicolas sur mes petits problèmes d'utilisation de Maven 2 pour la conception de plugin Eclipse. Il m'a rassuré sur le fait que pour l'instant ce n'est pas possible du fait qu'OSGi fait un peu la même chose. Des pistes ont été données concernant l'outil Tycho.

Un grand merci à l'équipe du JUG Poitou-Charentes pour cet événement et ceux à venir et merci pour le cadeau de la soirée. J'ai gagné le livre d'Antonio Goncalves : les Cahiers du Programmeur Java EE 5 2ème édition.

Mise à jour (09 mai 2009) : Nicolas a rendu disponible les transparents et la vidéo de la présentation (lien).

PS : Voici enfin un billet qui ne traite pas des liens pratiques de la semaine ;-)

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Google fournit le support de Java pour Google App Engine. Pourquoi dans la section Eclipse ? Tout simplement car un plugin est disponible pour assister le développeur.
  • Toujours sur le sujet Google App Engine, il semblerait que le support OSGi soit supporté.

dimanche, avril 05, 2009

Liens pratiques de la semaine

Vous trouverez ici une sélection de liens pratiques autour des technologies Java qui m'ont particulièrement intéressées ces dernières semaines.

Eclipse
  • Un exemple de code qui montre comment fournir un outil de changement de perspectives pour vos applications Eclipse RCP.
  • Un article sur comment utiliser le projet RIENA (rien à voir avec la chanteuse). Voir précédent billet.
  • Second millestone pour e4, voir ici pour les nouveautés et ici pour le téléchargement.
  • Un support de cours sur le sujet les WebTools pour mettre en œuvre les standards du W3C (source EclipseTotale).
  • Une nouvelle version du composant graphique Nebula Gallery.