Cette page de travail regroupe actuellement les elements utiles au Stage de BriceColucci.

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();
               }
       }

-- GuillaumeMella - 07 Apr 2008

Edit | Attach | Watch | Print version | History: r8 < r7 < r6 < r5 < r4 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r6 - 2008-04-15 - BriceColucci
 
  • Edit
  • Attach
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