Cette page de travail regroupe les elements mis en oeuvre pendant le stage de BriceColucci (avril-juin 2008).

Suite à ce stage, une page de documentation regroupe l'ensemble des fonctionnalités qui ont été intégrées dans le module JMCS.

Liens utiles



Objectif : Réunir au sein d'un même module logiciel facilement réutilisable, un maximum de fonctionnalités
partagées par toutes les applications graphiques JAVA du JMMC

Les points du cahier des charges (CCH)

  • (1) Uniformiser les interfaces => factorisation du code
  • (2) Uniformiser l'utilisation des logiciels
  • (3) Maximiser l'intégration aux principaux SE
  • (4) Améliorer la finition graphique des interfaces
  • (5) Faciliter la maintenance => factorisation du code

Le framework SWING appFramework

Ce framework peut être décrit sous la forme de deux cercles concentriques.
  • Le noyau : C'est l'application avec les procédures suivantes : launch(), startup(), exit() et shutdown()
  • Le contexte : Les données disponibles hors application, celles de l'application, le gestionnaire d'actions, le gestionnaire de ressources et le service de tâches.

Comment on utilise appFramework?

Au minimum, on doit :
  • Dériver notre interface graphique (IG) de Application
  • Surcharger la méthode startup() et appeler setVisible()
  • Lancer launch() de la classe Application avec en paramètre le nom de notre IG

De ces points on conclue que :
  • Il y a une factorisation importante du code, ce qui répond au besoins (1), (2) et (5) du CCH

Le gestionnaire de ressources

Voici un exemple de contenu d'un fichier de ressources d'une interface graphique appFramework :

label.opaque = true
label.background = 0, 0, 0
label.foreground = 255, 255, 255
label.text = Hello World
label.font = Lucida-PLAIN-48
label.icon = earth.png

Et le code correspondant :

public class SingleFrameExample2 extends SingleFrameApplication {
public void startup(String[] args) {
JLabel label = new JLabel();
label.setName("label");
show(label);
}
public static void main(String[] args) {
launch(SingleFrameExample2.class, args);
}
}

Résultat :


Ce système de gestion des ressources répond au besoin (1) et (5)

Code that scan a class methods:

 
    import java.lang.reflect.Method;
     private void launchSetPropertiesMethods() {
               String className = "fr.jmmc.mcs.gui.AboutBoxView";
               String chSequence = "setResizable";
               try {
                       Class classToApply = Class.forName(className);
                       Method[] methods = classToApply.getMethods();
                       for(int i=0; i<methods.length; i++) {
                               Method method = methods[i];
                               String methodName = method.getName();
                               if(methodName.contains(chSequence)) {
                                       method.invoke(obj_, true);
                               }
    
                       }
               } catch(Exception ex) {
                       ex.getMessage();
               }
       }
Edit | Attach | Watch | Print version | History: r8 < r7 < r6 < r5 < r4 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r8 - 2008-11-06 - GuillaumeMella
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback