Index: topia/doc/UI.rst diff -u topia/doc/UI.rst:1.1 topia/doc/UI.rst:1.2 --- topia/doc/UI.rst:1.1 Fri Oct 8 13:07:56 2004 +++ topia/doc/UI.rst Fri Dec 24 16:57:45 2004 @@ -2,12 +2,18 @@ Implantation des interfaces graphiques ====================================== -:author: Benjamin Poussin :date: 20041007 +:author: Benjamin Poussin + +.. sectnum:: + +.. contents:: + Concept ======= + L'utilisateur écrit ces interfaces en XML très simple, l'extension des fichiers sont .suix (Simple User Interface Xml). @@ -35,6 +41,7 @@ l'interface graphique. De cette façon on n'a plus à caster les Object qui nous sont retourné. + Les fichiers .suix ================== @@ -49,6 +56,7 @@ est portable d'une librairie à une autre (HTML, Swing/Java, AWT/Java, SWT/Java, .NET, ...) + Les widgets prédéfinis ---------------------- @@ -83,7 +91,7 @@ pour le choix d'un élement dans une liste déroulante. Elle contient un modèle qui permet de définir les objets à afficher dans la liste. On peut aussi indiquer que la combo est éditable - + table une table permet d'afficher un ensemble de cellule contenant des informations. Un modèle permet d'indiquer les objets à afficher dans la @@ -130,6 +138,7 @@ Aucun widget de placement existe car tout le placement des composants se fait grâce au CSS. + Les éléments XML ---------------- @@ -145,6 +154,7 @@ include permet d'inclure un autre fichier XML dans le fichier. + Exemple de fichier .suix ------------------------ @@ -152,7 +162,7 @@ personne:: - + @@ -179,6 +189,7 @@ + La gestion des styles ===================== @@ -197,6 +208,7 @@ ...) de conserver les mêmes fichiers pour plusieurs librairies (Swing/Java, AWT/Java) + Pseudo élément -------------- @@ -206,6 +218,7 @@ Un autre pseudo element est aussi cree pour l'objet racine de l'arbre des widgets. Ce pseudo element est nomé root. + Exemple de CSS -------------- @@ -220,20 +233,21 @@ background-color: cyan; font: arial; } - + /* Tous les titres dans des groupes de classe data seront rose */ .data > #title { foreground-color: pink; position: left; } - + /* On modifie spécifiquement le titre de firstname */ #firstname #title { - position: top; + position: top; font-style: bold; color: red; } + Gestion en Java des CSS ----------------------- @@ -243,6 +257,7 @@ les styles, et permet de modifier l'apparence de l'interface sans recompilation. + Exemple d'utilisation de la classe Style ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -256,12 +271,13 @@ sera sans doute possible d'avoir des choses du style:: style.addStyle("#name #title", Style.COLOR, Color.yellow); - + Le problème est pour widget *unknown*, il ne sera pas forcement possible de passer par autre chose que des chaines pour le type du style à modifier. La valeur elle peut très bien être un Object plutôt qu'une chaine, cela est même sans doute obligatoire. + Liste non exhautive des possibilités par widget ----------------------------------------------- @@ -274,6 +290,7 @@ radioButton, checkBox: permet de définir la position du texte et de l'image par rapport au widget (au dessus, à droite, ...) + La gestion callbacks ==================== @@ -284,6 +301,7 @@ lancement de l'application, soit cela arrête l'application soit seulement un message est loggé. + Struture du nom de la méthode ----------------------------- @@ -292,11 +310,12 @@ Par exemple pour prendre en compte le clique sur un bouton:: on_monButton_mouseClick - + + Argument de la méthode de callback ---------------------------------- -La méthode de callback peut prendre entre zéro et deux arguments. +La méthode de callback peut prendre entre zéro et deux arguments. Le premier argument peut être l'interface généré par topia ou bien la classe du moteur de rendu. Dans ce cas si on détecte ce type d'argument lors de @@ -308,6 +327,7 @@ cet argument fait que la méthode de callback n'est plus portable d'une librairie à une autre. + Bonne pratique de développement ------------------------------- @@ -325,7 +345,7 @@ Par exemple pour la gestion de la souris on pourrait avoir:: class Dependante { - protected Independante indep; + protected Independante indep; public Dependante(Independante indep){ this.indep = indep; } @@ -335,13 +355,14 @@ indep.monBoutonPressed(x, y); } } - + class Independante { public void monBoutonPressed(int x, int y){ // ... traitement ... } } + Le moteur de rendu graphique ============================ @@ -356,6 +377,7 @@ les méthodes swing *add* sur les containers, car les styles ne leur seront sans doute pas appliqués. + Implantation ------------ @@ -369,6 +391,7 @@ ne seront pas dans la Map. On a alors un arbre de widget qui commence toujours par un panel. + Le Proxy de simplification ========================== Index: topia/doc/besoin.rst diff -u topia/doc/besoin.rst:1.3 topia/doc/besoin.rst:1.4 --- topia/doc/besoin.rst:1.3 Thu Sep 30 12:25:50 2004 +++ topia/doc/besoin.rst Fri Dec 24 16:57:45 2004 @@ -2,12 +2,13 @@ ====== :Author: Benjamin Poussin -:Revision: $Revision: 1.3 $ -:Date: $Date: 2004/09/30 12:25:50 $ +:Revision: $Revision: 1.4 $ +:Date: $Date: 2004/12/24 16:57:45 $ .. sectnum:: -.. contents:: Sommaire +.. contents:: + Internationnalisation des labels -------------------------------- @@ -42,6 +43,7 @@ Dans ce cas on reprend la valeur qui se trouve dans le fichier i18n-nereide.properties pour le label. + Internationnalisation des attributs ----------------------------------- @@ -56,11 +58,13 @@ s'il existe une traduction specifique pour une attribut donné, si ce n'est pas le cas, on prend la traduction par defaut. + Génération de valeur d'attribut ------------------------------- tag-value auto avec un pattern + Typage des attributs -------------------- @@ -75,6 +79,7 @@ Ce pattern peu varier suivant l'utilisateur (langue de l'utilisateur). Peut-être mettre ca dans la table de traduction. + Attributs des Entities ---------------------- @@ -88,6 +93,7 @@ entity.attoptionnel = ... + Attributs de type enumeration ----------------------------- @@ -103,6 +109,7 @@ projectStatus=a faire, fait, fini + Attribut chaine de caractères ----------------------------- @@ -112,6 +119,7 @@ i18n=true + Attribut historisable --------------------- @@ -119,6 +127,7 @@ modifié on conserve (user, date, oldValue, newValue). Il faut aussi une méthode supplémentaire getHistory[Attribut]():list + Classe d'association daté ------------------------- @@ -131,12 +140,14 @@ d'association. Et sur l'entité une methode get[Attribute](date) qui ne retourne les valeurs valide pour une date donnée. + Attribut a ajouter a toutes les entitees ---------------------------------------- dernier utilisateur ayant modifie l'entity, date de modif, date de creation, numero de version + Hook sur les services --------------------- @@ -168,6 +179,7 @@ :remarque: ne serait-il pas possible de faire de l'AOP pour ca ? + Interaction avec OfBiz ====================== @@ -186,6 +198,7 @@ fichier de propriete sont les memes que pour le context existant dans neogia, c le meme context qui est retourne. + Schema XMI ========== @@ -208,17 +221,16 @@ Reprendre la génération pour gérer les classes d'association comme dans l'exemple suivant : -ex : -:: +ex :: + A ____________ B * | * | | C -doit générer +doit générer:: -:: import java.util.Collection; import java.util.Hashtable; @@ -318,8 +330,15 @@ Lien fort entre attribut d'entité et valeur de champ GUI ======================================================== -Ce serait un gros gain de temps de pouvoir lier la valeur d'un élément graphique (champ texte, combo, ...) à un attribut d'entité. Ca permettrait de ne pas avoir à recoder le mapping à chaque nouvelle action. On effectuerait ce mapping à partir de buix. Dès lors, l'entité serait en écoute sur l'élément graphique et chaque modification entraînerait la modification de la valeur de l'attribut. Ainsi, si je veux implanter la méthode save, je n'ai plus qu'à écrire :: +Ce serait un gros gain de temps de pouvoir lier la valeur d'un élément +graphique (champ texte, combo, ...) à un attribut d'entité. Ca permettrait +de ne pas avoir à recoder le mapping à chaque nouvelle action. On effectuerait +ce mapping à partir de buix. Dès lors, l'entité serait en écoute sur l'élément +graphique et chaque modification entraînerait la modification de la valeur de +l'attribut. Ainsi, si je veux implanter la méthode save, je n'ai plus qu'à +écrire :: + monEntitéPersistenceService.update(); -Dans le cas des EntityPanel, celà serait fait de manière automatique. \ No newline at end of file +Dans le cas des EntityPanel, celà serait fait de manière automatique. Index: topia/doc/manuelUtilisateur.rst diff -u topia/doc/manuelUtilisateur.rst:1.1 topia/doc/manuelUtilisateur.rst:1.2 --- topia/doc/manuelUtilisateur.rst:1.1 Fri Sep 24 15:47:12 2004 +++ topia/doc/manuelUtilisateur.rst Fri Dec 24 16:57:45 2004 @@ -9,33 +9,41 @@ Prérequis ========= -- Avoir maven installé avec le plugin maven-topia-plugin. Voir sur Labs_ pour la récupération des projets. +- Avoir maven installé avec le plugin maven-topia-plugin. Voir sur Labs_ pour la + récupération des projets. + +.. _Labs: http://labs.libre-entreprise.org Création du modèle ================== -On peut utiliser n'importe quel outil UML permettant la génération de fichiers d'export au format XMI. +On peut utiliser n'importe quel outil UML permettant la génération de fichiers +d'export au format XMI. Quelques conseils : - Seul le diagramme de classes sera pris en compte - Les classes devant être persistées doivent avoir le stéréotype *entity* -- La documentation des objets UML se retrouve dans la javadoc. On a donc tout intérêt à enrichir celle-ci au maximum. - +- La documentation des objets UML se retrouve dans la javadoc. On a donc tout + intérêt à enrichir celle-ci au maximum. + Etape préliminaire : génération du squelette du projet ====================================================== -- Créer un répertoire racine du projet qu'on souhaite générer. On l'appellera *PROJECT_ROOT*. - +- Créer un répertoire racine du projet qu'on souhaite générer. On l'appellera + *PROJECT_ROOT*. - Se placer dans *PROJECT_ROOT* et lancer la commande:: - maven topia:genskel - + maven topia:genskel + Et répondre aux questions posées par l'utilitaire (nom du projet ...) -Cette opération va générer l'ensemble de l'arborescence du projet ainsi que le fichier ''project.xml'' contenant une bonne partie de la description du projet. On pourra éditer ce fichier pour renseigner le tag '''' du projet par exemple. +Cette opération va générer l'ensemble de l'arborescence du projet ainsi que le +fichier ''project.xml'' contenant une bonne partie de la description du projet. +On pourra éditer ce fichier pour renseigner le tag '''' du +projet par exemple. Paramétrages préliminaires @@ -43,12 +51,13 @@ Les modifications s'effectue dans le fichier project.xml. + Base de données --------------- Adaptez la rubrique de dépendance suivante à votre base de données. -:: +:: postgresql postgresql @@ -56,60 +65,60 @@ - - Génération ========== *Points dus à des anomalies non corrigées de topia:genskel* + - Ouvrir maven .xml et ajouter les lignes suivantes : :: - - - + + + note : modif commitée dans maven-topia-plugin -*fin Points dus à des anomalies non corrigées de topia:genskel* + +*fin Points dus à des anomalies non corrigées de topia:genskel* - Se placer dans *PROJECT_ROOT* et lancer la commande:: - maven - -Tout ce qui est généré par ToPIA se trouve dans le répertoire *PROJECT_ROOT*/target. On y trouvera l'arboresscence suivante : + + maven + +Tout ce qui est généré par ToPIA se trouve dans le répertoire +*PROJECT_ROOT*/target. On y trouvera l'arboresscence suivante : :: - +--classes - +--gen - | +--java - | +--objectmodel - | +--uimodel - | +--xmi - +--src-build - | +--conception - | +--java - | +--objectmodel - | +--test - | +--uimodel - | +--xmi - +--test-classes - +--test-reports + +--classes + +--gen + | +--java + | +--objectmodel + | +--uimodel + | +--xmi + +--src-build + | +--conception + | +--java + | +--objectmodel + | +--test + | +--uimodel + | +--xmi + +--test-classes + +--test-reports avec principalement : - à la racine un jar issu de la compilation des classes générées, +- *classes* : compilation des classes générées + quelques fichiers de ressources + (*.jdo par exemple) +- gen/java : classes générées -- *classes* : compilation des classes générées + quelques fichiers de ressources (*.jdo par exemple) -- gen/java : classes générées - - Paramétrages -============= +============ Paramétrage de la base de données --------------------------------- +TODO - -.. _Labs: http://labs.libre-entreprise.org \ No newline at end of file