ZeServeur

La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information…

Affichage des articles dans Eclipse

Une nouvelle version (0.2.7) du connecteur Mylyn pour Quality Center est disponible en téléchargement.

Cette dernière corrige essentiellement des bugs/évolutions autour des liens et des pièces jointes.

Update Site : http://qcmylyn.sourceforge.net/update/

Homepage: http://qcmylyn.sourceforge.net/

cleanupC’est un fait: sur une grosse application développée puis maintenue par plusieurs personnes, on finit pas avoir pas mal de code mort…

Une première solution est d’utiliser le clean up d’Eclipse ; on arrive ainsi à supprimer certains attributs non utilisés… mais ça ne va guère plus loin.

L’idée serait donc beaucoup plus radicale: passer un outil sur tout le code.

Heureusement (encore), Eclipse vient nous sauver la vie :)

  1. Commençons tout d’abord par télécharger Eclipse Core Tools: http://www.eclipse.org/eclipse/platform-core/updates/
  2. Sélectionner le projet/package/classe sur lequel passer l’outil
  3. Via le menu contextuel, cliquer sur Find Unreferenced Members. Le résultat de la recherche s’affiche dans la Search View
  4. Sortez la hâche…

Par contre, attention: il est possible que certaines classes apparaissent comme non utilisées alors qu’elles sont appelées par un point d’extension!

Le problème avec les Table SWT, c’est qu’il y a toujours une colonne bien moche à droite de la table…

Pour se passer de cette foutue colonne vide, il suffit d’utiliser le TableColumnLayout pour avoir un rendu de ce genre:

Voilà un petit bout de code qui peut aider:

  1. // Création d'un composite qui contiendra la table
  2. Composite lComp = new Composite(shell, SWT.NONE);
  3. Table lTable = new Table(lComp , SWT.BORDER SWT.V_SCROLL);
  4. lTable .setHeaderVisible(true);
  5. lTable .setLinesVisible(true);
  6. // Création des colonnes
  7. TableColumn lCol1 = new TableColumn(lTable, SWT.NONE);
  8. lCol1 .setText("Colonne 1");
  9. TableColumn lCol2= new TableColumn(lTable, SWT.NONE);
  10. lCol2.setText("Colonne 2");
  11.  
  12. // Création du layout
  13. TableColumnLayout lLayout = new TableColumnLayout();
  14. lComp.setLayout( lLayout );
  15. // Définition du poids des colonnes
  16. lLayout .setColumnData( lCol1, new ColumnWeightData( 40 ) );
  17. lLayout .setColumnData( lCol2, new ColumnWeightData( 100 ) );

Voilà un petit problème qui arrive de temps en temps avec Eclipse et ses classloaders:

Supposons que un plugin A ait déclaré une dépendance vers un plugin B.

Question: comment on fait pour que B ait quand même visibilité sur A?

La, vous allez me dire: c’est un peu tordu quand même… c’est que ton découpage de plugins est mal foutu! Et bien non, ça peut arriver lorsque par exemple on utilise des fichiers de configuration qui sont déclarés dans A, mais qui sont utilisés par B.

Solution:

Il suffit de déclarer ce mécanisme dans les fichiers MANIFEST.MF :

  • dans le plugin partagé qui a besoin d’accéder aux classes externes (B) :
    Eclipse-BuddyPolicy: registered
  • dans le (ou les)  plugin(s) qui utilise(nt) B (A dans notre cas):
    Eclipse-RegisterBuddy: <nom du plugin partagé>

C’est une manière implicite (qui s’appelle du « Buddy Class Loading« ) de déclarer la relation dans l’autre sens.

De manière à faciliter la gestion des bugs dans Quality Center et pour palier au manque d’un connecteur Mylyn, j’ai écrit mon propre plugin pour accéder à QC depuis Eclipse (au travers de Mylyn).

L’update site Eclipse (3.4.2 / 3.5) est disponible ici: http://qcmylyn.sourceforge.net/update/

Le site officiel est disponible ici: http://qcmylyn.sourceforge.net/

Note: C’est une version alpha ; il convient donc de ne pas l’utiliser dans un environnement de production!

Voilà quelques semaines que les fameuses newsgroups d’Eclipse ont fait leur apparition sous la forme d’un forum (qui, soit dit en passant, est carrément plus agréable à lire!).

On y retrouve les divers projets Eclipse, les IDE pour les différents langages…

Pour le moment, ce n’est qu’en beta (par exemple, à l’heure où j’écris ses lignes, la fonction de recherche ne fonctionne pas)

Ca se passe là: http://www.eclipse.org/forums/

Habitué au XML pour gérer le stockage de mes modèles de données, je me suis dit « Tiens, pour une fois, regarde ce que donne l’EMF »…
Et je ne suis pas du tout deçu!!! Ca m’a fait gagné pas mal de temps :)

EMF, kesako?

D’après le site officiel, « The EMF project is a modeling framework and code generation facility for building tools and other applications based on a structured data model. From a model specification described in XMI, EMF provides tools and runtime support to produce a set of Java classes for the model, along with a set of adapter classes that enable viewing and command-based editing of the model, and a basic editor. »

poursuivre la lecture…

Question du jour: Comment lancer des tests unitaires JUnit quand on a une architecture basée sur des plugins??

Réponse: avec un Headless mode monsieur!

Dans une appli architecturée en couches (UI/Business/IO), il arrive très souvent qu’on souhaite tester les couches basses (Business/IO) de manière unitaire.

Oui mais voilà, si on fait du RCP et donc qu’on travaille avec des plugins, c’est un peu la galère de faire des TU car il faut charger les plugins pour lancer le test correctement…
poursuivre la lecture…

Petit problème: De manière à améliorer les perfs d’un rendu cartographique, j’ai besoin de créer des layers… En Swing, pas de problème: on a les JLayeredPane… mais en SWT, que neni!

Alors voici une petite astuce pour créer des images transparentes (les fonds de carte n’ont généralement besoin que d’être calculés qu’une seule fois!)

poursuivre la lecture…

Un workspace Eclipse est le répertoire où toutes les métadonnées des fichiers de préférences sont stockées (sous la forme de fichiers spécifiques Eclipse). Dans une application RCP, il se situe à la racine de l’application, dans le répertoire workspace.

Le problème en RCP, c’est que la plupart du temps, on a pas « réellement » besoin de ce répertoire (face à un client, « plugins », « feature » et « configuration », ça se justife… mais là ?!).

L’idée est donc de court-circuiter la création de ce répertoire pour le définir « à la main » lors du runtime.

poursuivre la lecture…