samedi, septembre 29, 2007

Effets sur les images, des ressources !!!!

Je viens de trouver un article qui traite de la manipulation des images et des effets qui peuvent y être appliqués (Ultimate Java Image Manipulation). Toutefois, cet article cible l'API Java2D et par conséquent la boîte à outils AWT/Swing.

J'en profite donc pour faire un état des articles/ressources concernant la manipulation d'image pour SWT.

Tout d'abord un article d'IBM (Java2D imaging for the SWT) permettant de passer une image AWT/Swing (BufferedImage) en une image SWT (ImageData). Au niveau performance, j'avoue ce n'est pas le top mais la solution de conversion existe.

Concernant les articles "purs" SWT traitant du sujet de la manipulation des images
Par ailleurs, si vous souhaitez des explications concernant la manière de réaliser des effets sur des images, je vous conseille cet excelent site JH Labs. Les démonstrations sont en Swing ...

vendredi, septembre 28, 2007

Prettify

Prettify est un module JavaScript et CSS permettant de formater un code. Je l'utilise depuis peu dans ce blog et le résultat est assez sympathique (mise en couleur des mots clés, zone délimitée pour le code, etc.).

Voilà un exemple
public class Voiture {
public Voiture() {
}

public int getPuissance() {
return 5;
}
}
Le site du projet : Prettify

A noter qu'au niveau de mon blog, j'ai remarqué un petit bug. Si on défile les billets contenant du code d'une autre page, les couleurs sur les mots clés ne sont pas prises en compte.

vendredi, septembre 21, 2007

Eclipse RAP

Le projet Eclipse RAP (Rich Ajax Platform) permet le développement d'applications serveur comme si vous développiez une application Eclipse RCP (composition de plugins). La bibliothèqe SWT a son équivalent pour cette plateforme, elle s'appelle RWT (RAP Widget Toolkit). L'API est très très proche de SWT et par conséquent la conversion d'une application Eclipse RCP en RAP demande très peu d'investissement (enfin ça c'est dans la pratique).


Par conséquent, le développeur n'a donc pas besoin de connaître l'HTML ou le JavaScript pour développer. Un concurrent de plus pour GoogleWebToolkit. Sans entrer dans les détails, la majeur partie des traitements sont effectués par le serveur. Un événement sur l'IHM est transmis au serveur qui retourne le feedback associé, un peu à la sauce du cycle de vie de JSF. Ces nombreux aller/retour entre le client et le serveur amèneront logiquement à se poser des questions de performance. Je suis curieux de savoir comment employer TPTP pour tester les IHM d'une application Eclipse RAP ?

A noter que le version 1.0 devrait sortir aux alentours de l'Eclipse Summit Europe où une session "Eclipse RAP" doit se dérouler.

Voilà quelques liens
Il se pourrait que dans un prochain cours je m'intéresse à ce projet ...

(Modification apportée le 16 octobre 2007) : la version 1.0 d'Eclipse RAP vient de sortir

TableViewer et TableViewerColumn

Dans un précédent billet (ici) je vous avais montré comment utiliser OwnerDrawLabelProvider pour dessiner le contenu des cellules d'une table. Dans ce billet je vais préciser la notion de LabelProvider unique par colonne. L'intérêt : des comportements spécifiques à chaque colonne pour les bulles d'aides et tout ce qui touche aux couleurs.

Chaque Viewer de la famille des ColumnViewer (TableViewer et TreeViewer), c'est-à-dire des composants affichant plusieurs colonnes, peuvent manipuler pour chaque colonne un LabelProvider spécifique. Pour ce faire un ColumnViewer doit être associé à un ViewerColumn (la colonne en fait) pour être relié à un LabelProvider donné.

La capture d'écran (la bulle d'aide est customisable : déclenchement, temps d'affichage, couleurs)


Le code
final TableViewer viewer = new TableViewer(shell, SWT.FULL_SELECTION);
viewer.setContentProvider(new MyStructuredContentProvider());

TableViewerColumn column = new TableViewerColumn(viewer,SWT.NONE);
column.setLabelProvider(new MyColumnLabelProvider() {
public Color getBackground(Object element) {
return Display.getDefault().getSystemColor(SWT.COLOR_GREEN);
}

public String getText(Object element) {
PersonData currentPerson = (PersonData)element;
return currentPerson.getName();
}

public Color getToolTipBackgroundColor(Object object) {
return Display.getCurrent().getSystemColor(SWT.COLOR_MAGENTA);
}

public String getToolTipText(Object element) {
PersonData myReference = (PersonData)element;
return "Le nom de cette personne est : " + myReference.getName();
}
});
column.getColumn().setText("Nom");

ColumnViewerToolTipSupport.enableFor(viewer,ToolTip.NO_RECREATE);


La colonne est créée par l'intermédiaire d'un objet TableViewerColumn (l'équivalent pour un TreeViewer est un TreeViewerColumn). Notez que ce composant est associé au Viewer concerné lors de la construction. Le LabelProvider est ensuite spécifié. Je factorise les comportements via la classe statique MyColumnLabelProvider (voir ci-dessous). Cette classe hérite de ColumnLabelProvider qui donne tous les services pour modifier la forme et le fond d'une cellule mais aussi pour customiser les bulles d'aides. Une spécialisation de MyColumnLabelProvider est obtenue au travers d'une classe anonyme où je précise la couleur de fond de la bulle d'aide et le contenu de la bulle d'aide. Bien entendu, c'est également dans ce LabelProvider que j'affiche le contenu de la cellule. La même démarche est appliquée à la seconde colonne. La dernière instruction du code ci-dessus est importante ColumnViewerToolTipSupport.enable(viewer,ToolTip.NO_RECREATE), elle permet d'activer la customisation des bulles d'aides.

static class MyColumnLabelProvider extends ColumnLabelProvider {
public int getToolTipDisplayDelayTime(Object object) {
return 500;
}

public int getToolTipTimeDisplayed(Object object) {
return 2000;
}

public Point getToolTipShift(Object object) {
return new Point(5, 5);
}

public boolean useNativeToolTip(Object object) {
return false;
}
}

Vous trouverez le code source de cet exemple ici.

mardi, septembre 18, 2007

EclEmma un assistant pour JUnit

EclEmma est un plugin pour Eclipse qui combiné à JUnit s'avère très utile. Une fois lancée les tests unitaires, l'outil va espionner le code appelé et va effectuer un marquage du code selon un code couleur. Par exemple, la couleur rouge est utilisée pour afficher le code que les tests unitaires ne couvrent pas. Il est donc possible de vérifier d'un coup d'œil les bouts de code qui sont pris en charge ou pas.

Le site du projet EclEmma

dimanche, septembre 16, 2007

De jolies demos en Swing ...

La première démo est une application qui simule l'ouverture de pages d'un magazine. Le composant JBookPanel a été défini. Ce genre d'application est généralement codé en flash et on peut les trouver dans les sites web.

La démo via JWS et les sources sont disponibles : jbookpanel_and_the_page_turn

La deuxième démonstration contient un ensemble des petites démonstrations assez sympathiques (un carrousel, un Dock à la MAC OS X, une version modifiée du JBookPanel et une animation de simulation de pluie).

Comme pour JBookPanel vous trouverez une démo via JWS et les sources : demonstrations

Les liens présentés ci-dessus ne sont pas nouveaux, ils avaient été listés sur le site de Java Desktop.

samedi, septembre 15, 2007

SWT Ribbon : sources disponibles en version ALPHA

Le composant SWT Ribbon essaye de s'inspirer de la barre d'outils d'Office 2007 comme montré sur l'image ci-dessous.

Tout ça pour dire qu'une première version ALPHA est disponible au téléchargement.
J'en profite pour faire un appel à témoin. Si vous connaissez des projets concernant des composants SWT faites moi un signe ...

Un mini cours sur l'API i18n

Un mini cours sur l'API i18n vient d'être publié sur le site de Developpez.com

Au menu vous trouverez des informations concernant les classes
  • Locale
  • ResourceBundle
  • MessageFormat
  • ChoiceFormat
Voilà le lien du cours : http://mbaron.developpez.com/javase/i18n/

Choses sérieuses, je retourne à la rédaction du cours sur JFace ...