Table Of Content12019_Swing 16/11/06 9:10 Page 1
Programmez intelligent les Cahiers
avec les Cahiers t
e
r du Programmeur
a
du Programmeur b
y
u
P
.
E
g
Emmanuel Puybaret est
ingénieur en informatique et aéro-
nautique et a plus de douze ans
d’expérience en programmation
Ce cahier montre aux développeurs Java comment exploiter la très riche
objet multi-plate-forme dans
bibliothèque standard Swing à travers la création d’une application n
des domaines aussi variés que
graphique 3D ergonomique et fiable.
l’industrie, les télécoms et la
banque. Consultant indépendant
Cet ouvrage décrit la création d’un logiciel libre d’aménagement d’intérieur
partagé entre développements et Java SE 5 • AWT/Swing • Java 3D • Java Web Start
développé avec Java 5 et Swing, de sa conception UML jusqu’à sa distribution,
formations, il a créé en 1998 le
en passant par l’utilisation d’Eclipse, dont les astuces de productivité sont
site eteks.com entièrement i SWT/JFace • JUnit • Abbot • Eclipse • CVS • UML • MVC • XP
dévoilées. Le développeur y découvrira comment exploiter efficacement les
consacré à Java.
nombreuses fonctionnalités de Swing : création d’arbres, de tableaux et de
w
boîtes de dialogue, dessin dans un composant graphique, glisser-déposer,
Emmanuel Puybaret
gestion d’opérations annulables, intégration d’un composant 3D...
@ L’étude de cas de cet ouvrage a été testée sous Windows, Linux et Mac OS X!
Téléchargez l’intégralité de son code source et retrouvez-la en ligne !
www.editions-eyrolles.com • sweethome3d.sourceforge.net
S
Sommaire
Présentation de l’étude de cas• Sweet Home 3D, une application d’agencement des meubles
dans un logement • Méthodologie eXtreme Programming • Mise en place de l’environne-
ment de développement•Java SE 5 •Eclipse •CVS •SourceForge.net •Choix techniques:
Swing ou SWT ? • Architecture d’AWT, Swing et SWT • Composants, layouts et listeners •
JFace •Maquettes Swing et SWT de l’étude de cas avec Visual Editor • Arbre du catalogue
des meubles • Scénario de test • Architecture à trois couches • Test JUnit • Classe JTree 9-6 a
921 6
•tGT•fiitceeMhMassrtttoee iioodgnannèruda l s eddp• eeuhdT t i’aql aatbruab baesblrer éleerAalee aub•c u bdtLd oi’ooaoetnu cvs• eat •icmllisSs A eoaM•cuutitVsboRio-lCnceen lfsa•as• sc RdsaAtueoenr nrrncli donhuJeggilCtare eeobamcrmlvte eeu•spcnroC et•nl ah•eMG anrreCoétgs ldfaetl•èeismolxsDenieoe/nenn saVJt si u•TrdieenaeC /ebsdorlC e’ iommo ap•nvpaéetoMgrrcsaôe oatlsJeidno auaèntvrv lsa eeg • cra2da nDeuDpn en huts •aielqiagbxGubnléeeel ecas pusudta ti uoe•t•t nuepA rMrld canmetonsi odu lna••il-- e éditeur: G1201N: 2-212-12019-3: 978-2-212-120 221212019 av
souris et du clavier •Diagramme d’états-transitions •Vue 3D du logement•Java 3D •Arbre CodISBBN 1 78 J
d’une scène 3D • Transformations 3D • Chargement de modèles • Éclairage • Interaction IS 9
avec la souris • Enregistrement et lecture d’un logement • Sérialisation • Choix d’un fichier 39€
• Boîtes de dialogue standards • Fenêtre principale • Intégration dans Mac OS X • Glisser-
déposer et copier-coller•Mise en œuvre de la classe TransferHandler •Gestion du focus •
Édition des préférences utilisateur • Disposition des composants • GridBagLayout • Classe
Preferences • Déploiement et installation avec Java Web Start.
Avant-propos
Cet ouvrage va vous permettre d’apprendre Swing, Java3D, Eclipse,
CVS et la méthode eXtreme Programming à travers le développement
d’une étude de cas concrète architecturée avec soin et distribuée en mode
Open Source sur Internet.
Ce que cet ouvrage est et ce qu’il n’est pas
Ce livre met en pratique les fonctionnalités proposées par Swing en
montrant comment a été développée une application réelle, sélectionnée
ici pour son recours quasi exhaustif aux possibilités de cette bibliothèque.
Les concepts de Swing y sont expliqués de façon détaillée afin de mieux
comprendre leur mise en œuvre concrète et pour justifier les choix effec-
tués dans l’implémentation de cette application.
Comme la programmation d’un logiciel ne repose pas uniquement sur
une bibliothèque, cet ouvrage aborde aussi les sujets suivants:
(cid:129) les nouvelles fonctionnalités de Java5 et particulièrement les amélio-
rations que cette version a apporté aux classes de collection;
(cid:129) la bibliothèque Java3D qui permet de créer en quelques lignes des
scènes en 3 dimensions;
(cid:129) la présentation des fonctionnalités de SWT/JFace, la bibliothèque
concurrente de Swing sur laquelle est basé Eclipse;
(cid:129) la conception objet et les diagrammes de classes UML;
(cid:129) les designpatterns, exploités ici pour concevoir certaines classes de
l’application et la façon dont ils sont mis en œuvre dans certaines par-
ties de la bibliothèque Java;
© Groupe Eyrolles, 2005
g
n
wi
S
ur
me (cid:129) la méthode eXtremeProgramming appliquée pour programmer des
m
a tests unitaires avec JUnit et Abbot, répartir le travail parmi les mem-
gr
Pro bres de l’équipe virtuelle et structurer les différentes étapes du déve-
u
d loppement de l’étude de cas;
hiers (cid:129) la description de l’environnement de développement Eclipse, accom-
a
C
es pagnée de nombreuses astuces qui, nous l’espérons, vous rendront
L
plus productif en tant que programmeur;
(cid:129) le recours à un référentiel comme CVS, choisi ici pour archiver les
sources de l’application développée en mode Open Source sur
Pour vous permettre de compléter votre informa-
tion sur les sujets abordés dans cet ouvrage, de SourceForge.net (http://sf.net/).
nombreuses références à des sites web franco-
À l’opposé, comme il est impossible de tout aborder dans un livre trai-
phones et anglophones vous sont proposées.
Veuillez nous excuser d’avance si certains de ces tant un sujet aussi vaste que Swing, voilà ce que vous n’y trouverez pas:
liens n’existent plus au moment où vous lirez ces (cid:129) Une introduction au langage Java: si vous ne connaissez rien à Java,
lignes.
formez-vous d’abord à ce langage et programmez quelques cas
d’école. Nous espérons vous retrouver ensuite...
(cid:129) Une étude de cas basée sur des technologies Java Enterprise Edition:
aucune des fonctionnalités que propose Java EE en complément de la
version standard de Java n’est abordée ici.
(cid:129) Une description détaillée de toutes les classes de Swing: il y en a tout
simplement trop et la documentation javadoc de Java nous semble
plus pratique! Néanmoins, nous avons pris soin d’éviter toute zone
d’ombre sur les classes utilisées dans l’étude de cas de cet ouvrage, en
décrivant leurs fonctionnalités avant de les mettre en œuvre.
À qui s’adresse cet ouvrage ?
Pour débuter en Java
Écrit par un développeur passionné par la conception d’interfaces utili-
Du même auteur et dans la même collection, Le sateur, ce livre est la synthèse d’une dizaine d’années d’expérience en
Cahier du Programmeur Java est dédié à programmation et en formation Java. En tant que tel, il s’adresse avant
l’apprentissage de la programmation Java. En
tout aux développeurs Java qui désirent s’initier ou se perfectionner à
quelque sorte, Le Cahier du Programmeur
Swing, notamment:
Java Swing en est la suite dans le sens où de
nombreux sujets abordés dans Le Cahier du Pro- (cid:129) les étudiants en fin de cycle qui désirent approfondir leur apprentis-
grammeur Java y sont développés plus en détail
sage de Java et maîtriser la création d’interfaces utilisateur
ici...
graphiques;
RLe Cahier du Programmeur Java,
Emmanuel Puybaret, Eyrolles 2006 (cid:129) les programmeurs qui connaissent Swing et qui sont à la recherche
d’une méthode de développement d’applications basée sur une étude
de cas réelle ayant recours à cette technologie;
(cid:129) les programmeurs Java dotés d’une expérience significative de ce lan-
gage mais qui ne connaissent pas Swing ou AWT.
VI © Groupe Eyrolles, 2005
os
p
o
pr
Par la méthodologie de développement qui y est appliquée et sa présen- ant-
v
A
tation qui met en valeur l’information essentielle en reléguant les com-
pléments d’informations sous forme d’apartés, ce livre s’adresse aussi:
(cid:129) aux chefs de projets à la recherche d’une étude de cas réaliste mettant
en œuvre la méthode XP, surtout du point de vue de la
programmation;
(cid:129) aux architectes qui désirent approfondir leurs connaissances en con-
ception objet grâce à des exemples concrets d’implémentation des
designpatterns les plus utilisés;
(cid:129) aux développeurs Java intéressés par la programmation OpenSource
désirant créer un nouveau projet ou s’intégrer à un projet existant.
Organisation de l’ouvrage
Après une présentation de l’étude de cas et des outils nécessaires à sa
mise en œuvre, cet ouvrage montre comment utiliser la bibliothèque
Swing:
(cid:129) Le chapitre1 présente l’étude de cas développée dans cet ouvrage,
son cahier des charges, ses spécifications générales ainsi que le rôle de
chacun des membres de l’équipe chargée de la développer.
(cid:129) Le chapitre2 présente les outils nécessaires à l’étude de cas et leur
installation, comme le JDK et Eclipse, puis la création d’un référen-
tiel sur SourceForge.net et son intégration dans Eclipse.
(cid:129) Le chapitre3 compare les fondements des bibliothèques Swing et
SWT par le biais de la réalisation de la maquette de l’étude de cas. Si
vous ne connaissez pas ou peu ces deux bibliothèques, ce sera l’occa-
sion de mettre le pied à l’étrier grâce à quelques exemples simples.
(cid:129) À partir du chapitre4 sont développées les classes réelles de l’étude
de cas. Après la présentation de l’architecture en trois couches
retenue pour l’étude de cas, ce chapitre expose comment créer un
arbre avec Swing en utilisant un modèle. Si vous préférez rentrer dans
le vif du sujet, vous pouvez lire le chapitre1 puis passer directement
au chapitre4.
(cid:129) Le chapitre5 aborde la mise en œuvre des tableaux Swing, en ayant
recours à un modèle de données et des classes de rendu des cellules.
(cid:129) Après une revue des principes de l’architecture modèle vue contrô-
leur, le chapitre6 détaille comment appliquer cette architecture dans
l’étude de cas.
(cid:129) Le chapitre7 expose comment intégrer dans une application le ges-
tionnaire d’opérations annulables proposé dans Swing, et comment
© Groupe Eyrolles, 2005 VII
g
n
wi
S
ur
me organiser les actions d’une application mises à disposition dans les
m
a menus et les boutons d’une barre d’outils.
gr
o
Pr (cid:129) Le chapitre8 est consacré à la création d’un nouveau composant gra-
u
hiers d psihniéq uavee Sc wJaivnag 2bDas ée ts puer ult’a êrctrhei tmecotduirfei éM grVâCce, àd olan sto luer ciso nett eanuu c elasvt iedre.s-
a
C
es (cid:129) Le chapitre9 montre comment mettre en œuvre la bibliothèque
L
Java3D et intégrer une vue3D dans une application Swing.
(cid:129) Le chapitre10 présente comment utiliser la sérialisation pour enre-
gistrer et relire le document créé par l’utilisateur dans des fichiers.
Ces fonctionnalités sont ensuite rendues accessibles dans l’étude de
cas par l’intermédiaire de menus et de boîtes de dialogue appropriées.
(cid:129) Le chapitre11 est consacré à l’intégration des fonctionnalités de
copier-coller et glisser-déposer dans l’étude de cas.
(cid:129) Finalement, le chapitre12 aborde la création d’une boîte de dialogue
personnalisée qui permettra de modifier les préférences utilisateur,
puis se termine par le déploiement de l’étude de cas avec
JavaWebStart.
Code source de l’étude de cas
Le code source de l’étude de cas peut être téléchargé sur SourceForge.net ou sur le site
d’accompagnement, aux adresses:
Les lignes de code réparties sur plusieurs lignes en
Bhttp://sf.net/projects/sweethome3d/
raison de contraintes de mise en pages sont signa-
lées par la flèche X. Bhttp://www.editions-eyrolles.com
Les portions de texte écrites avec une police de Si vous avez des remarques à faire ou si vous recherchez des informations complémen-
caractères à chasse fixe et en italique, comme taires sur les sujets abordés dans cet ouvrage, n’hésitez pas à utiliser le forum prévu à cet
VERSION, signalent des informations à remplacer effet à l’adresse:
par un autre texte. Bhttp://www.eteks.com
Organisation des chapitres 4 à 12
Les appellations suivantes sont des marques com-
merciales ou déposées des sociétés ou organisa- Les chapitres4 à 12 présentent le développement d’une fonctionnalité
tions qui les produisent: particulière de l’étude de cas, sous la forme d’un ou de plusieurs scéna-
(cid:129) Java, Java 3D, JVM, JDK, J2SE, J2EE, JavaBeans, rios qui s’inspirent de la méthodologie eXtreme Programming. Chacun
Solaris de Sun Microsystems, Inc.
de ces scénarios est découpé de la façon suivante:
(cid:129) Windows de Microsoft Corporation
(cid:129) MacOSX de Apple Computer Inc. (cid:129) un énoncé littéraire du scénario et des fonctionnalités qui y sont
(cid:129) OpenGL de SGI développées;
(cid:129) SourceForge.net de OSTG
(cid:129) une analyse de l’architecture des classes à créer pour le scénario;
(cid:129) la programmation d’un test équivalent au scénario;
(cid:129) l’implémentation des classes nécessaires au scénario;
(cid:129) l’amélioration de l’architecture (ou refactoring) et l’optimisation éven-
tuelles des classes développées.
VIII © Groupe Eyrolles, 2005
os
p
o
pr
Suivant votre penchant personnel pour l’analyse ou la programmation, ant-
v
A
cette structure devrait vous aider à orienter vos recherches dans cet
ouvrage, voire votre façon de l’aborder. Par exemple, les lecteurs à la
recherche d’informations sur l’architecture objet d’un logiciel, s’intéres-
seront probablement plus aux parties «analyse de l’architecture» et
«refactoring», tandis que les lecteurs à la recherche d’astuces techniques
passeront plus de temps sur les parties «implémentation» et
«refactoring et optimisation».
Remerciements
Merci tout d’abord à Diem My pour sa patience infinie et ses capacités
d’analyste objet. Tous mes remerciements aussi à l’équipe des éditions
Eyrolles pour avoir cru en ce projet, et en particulier à Muriel.
Merci à Vincent Brabant et Farid Salah pour leur relecture technique
attentive et leur soutien au cours de la rédaction de cet ouvrage.
Merci finalement à Matthieu, Margaux, Thomas et Sophie pour avoir
prêté leur nom aux protagonistes de l’étude de cas décrite dans cet
ouvrage.
© Groupe Eyrolles, 2005 IX
Table des matières
Intégration du référentiel dans Eclipse(cid:129)28
1. L’ÉTUDE DE CAS: SWEETHOME3D........................1 Génération des clés SSH(cid:129)28
Les circonstances•2 Validation du référentiel CVS dans Eclipse(cid:129)29
SweetHome3D(cid:129)2 Enregistrement initial du projet dans le référentiel(cid:129)30
Cahier des charges•3 Téléchargement des fichiers du référentiel(cid:129)31
Spécifications générales(cid:129)3 Mise à jour du référentiel(cid:129)32
Maquette papier du logiciel(cid:129)4 Enregistrement des modifications(cid:129)32
Principaux menus de l’application(cid:129)5 Mise à jour des modifications(cid:129)33
Intégration du logiciel dans le système d’exploitation(cid:129)6 En résumé…(cid:129)33
Choix du langage(cid:129)6
3. CHOIX TECHNIQUES: SWING OU SWT?................35
Distribution(cid:129)6
Une interface utilisateur graphique pour quoi faire?(cid:129)36
Méthodologie XP(cid:129)6
Client riche vs client web(cid:129)36
Répartition des rôles de l’équipe(cid:129)7
Architecture d’AWT, Swing et SWT(cid:129)37
Planification des scénarios(cid:129)8
Architecture d’AWT(cid:129)38
En résumé…(cid:129)9
Architecture de Swing(cid:129)39
2. MISE EN PLACE DE L’ENVIRONNEMENT DE Architecture de SWT(cid:129)40
DÉVELOPPEMENT..................................................11 La base d’une interface graphique: composants, layouts et
Choix des outils de développement(cid:129)12 listeners(cid:129)41
Installation des outils(cid:129)12 Exemple comparatif Swing/SWT: quelle heure est-il?(cid:129)41
Installation du JDK(cid:129)12 Différences entre Swing et SWT(cid:129)43
Installation d’Eclipse(cid:129)13 Hiérarchie des classes de composants Swing et SWT(cid:129)45
Lancement d’Eclipse(cid:129)13 Composants AWT, Swing et SWT(cid:129)46
Installation des plug-ins(cid:129)14 JFace, le complément indispensable de SWT(cid:129)48
Création du projet(cid:129)15 Quelle heure est-il avec JFace?(cid:129)49
Configuration du projet(cid:129)17 Layouts(cid:129)50
Validation de l’installation(cid:129)19 Listeners(cid:129)52
Choix du référentiel(cid:129)22 Création des maquettes Swing et SWT avec Visual Editor(cid:129)52
SourceForge.net ou java.net(cid:129)23 Maquette Swing(cid:129)53
Création du référentiel(cid:129)24 Création de la fenêtre(cid:129)53
Inscription sur SourceForge.net(cid:129)24 Ajout des composants(cid:129)54
Création du référentiel sur SourceForge.net(cid:129)24 Ajout des menus(cid:129)56
© Groupe Eyrolles, 2005 XI
g
n
wi
S
ur
me Configuration des composants(cid:129)56 Comparateur de chaînes ignorant la casse(cid:129)94
m
a Images des labels(cid:129)57 Comparateur de chaînes ignorant la casse
gr
o Icônes des boutons de la barre d’outils(cid:129)59 et l’accentuation des lettres(cid:129)95
Pr
u Arbre des meubles(cid:129)59 Tri des meubles(cid:129)96
d
ers Tableau des meubles(cid:129)60 Comparaison de meubles(cid:129)96
hi
a Boîte de dialogue About(cid:129)60 Tri des meubles dans l’ordre alphabétique(cid:129)98
C
es Fenêtre(cid:129)61 Gestion des catégories dans la classe du catalogue(cid:129)99
L
Maquette SWT(cid:129)63 Lecture du catalogue par défaut(cid:129)100
Création de la fenêtre(cid:129)63 Format des propriétés des meubles par défaut(cid:129)100
Ajout des composants(cid:129)63 Lecture des propriétés(cid:129)102
Ajout des menus(cid:129)65 Vérification de la première partie du test(cid:129)106
Configuration des composants(cid:129)66 Conception de la classe d’arbre(cid:129)106
Images des labels(cid:129)66 Création de la hiérarchie des nœuds affichée par l’arbre(cid:129)106
Images des boutons de la barre d’outils(cid:129)67 Modification de l’apparence des nœuds de l’arbre(cid:129)108
Arbre des meubles(cid:129)68 Création du composant de rendu(cid:129)108
Tableau des meubles(cid:129)68 Vérification de l’ordre d’affichage des nœuds de
Boîte de dialogue About(cid:129)69 l’arbre(cid:129)112
Fenêtre(cid:129)70 Refactoring et optimisation(cid:129)114
Choix de la bibliothèque de composants graphiques(cid:129)71 Utilisation d’un modèle optimal pour l’arbre(cid:129)114
En résumé…(cid:129)73 Classe de modèle de l’arbre(cid:129)114
Utilisation de la classe de modèle d’arbre(cid:129)118
4. ARBRE DU CATALOGUE DES MEUBLES.....................75
Gestion du cache des icônes(cid:129)119
Scénario n°1(cid:129)76
Singleton du cache des icônes(cid:129)119
Spécifications de l’arbre du catalogue(cid:129)76
Utilisation de la classe de chargement des icônes(cid:129)123
Scénario de test(cid:129)76
Gestion de l’attente du chargement avec un proxy
Architecture des classes du scénario(cid:129)77
virtuel(cid:129)123
Concepts du logiciel(cid:129)77 Diagramme UML final des classes de l’arbre(cid:129)127
Classes associées aux concepts(cid:129)77 En résumé…(cid:129)128
Architecture à trois couches(cid:129)79
Diagramme UML des classes du scénario n°1(cid:129)80 5. TABLEAU DES MEUBLES DU LOGEMENT.................131
Programme de test de l’arbre du catalogue(cid:129)82 Scénario n°2(cid:129)132
JUnit(cid:129)82 Spécifications du tableau des meubles(cid:129)132
Test JUnit du scénario n°1(cid:129)82 Scénario de test(cid:129)132
Création des classes avec Eclipse(cid:129)86 Identification des nouvelles classes(cid:129)133
Création de la classe de meuble(cid:129)86 Réutilisation du concept de meuble(cid:129)133
Création des classes de catégorie et du catalogue(cid:129)87 Problème de conception objet(cid:129)133
Création des classes de lecture du catalogue Solution proposée(cid:129)134
et de l’arbre(cid:129)88 Diagramme UML des classes du scénario(cid:129)135
Exécution du programme de test(cid:129)89 Programme de test du tableau des meubles(cid:129)136
Implémentation des classes de la couche métier(cid:129)90 Création des classes manquantes du scénario(cid:129)138
Attributs des classes associées au catalogue des meubles(cid:129)90 Gestion de la liste des meubles du logement(cid:129)139
Type des attributs(cid:129)90 Interface commune aux classes de meubles(cid:129)140
Création de l’interface de contenu(cid:129)92 Classe de meuble du logement(cid:129)140
Ajout des champs à la classe de meuble(cid:129)92 Classe du logement(cid:129)141
Gestion des meubles dans la classe de catégorie(cid:129)92 Préférences utilisateur par défaut(cid:129)142
Comparateur de chaînes localisé(cid:129)94 Conception de la classe du tableau(cid:129)144
Comparateur de chaînes par défaut(cid:129)94 Lecture du nom des colonnes du tableau(cid:129)146
XII © Groupe Eyrolles, 2005
es
èr
ati
m
Création du modèle du tableau(cid:129)147 Gestion du déplacement des ascenseurs(cid:129)198 es
d
Test du modèle(cid:129)148 Modification du modèle du tableau(cid:129)199 e
bl
Modification de l’apparence des cellules du tableau(cid:129)148 Test de l’ajout de meubles(cid:129)200 Ta
Attribution des renderers des colonnes(cid:129)149 Refactoring des classes de contrôleur(cid:129)200
Renderer du nom d’un meuble(cid:129)150 En résumé...(cid:129)202
Renderer des dimensions d’un meuble(cid:129)151
7. GESTION DES ACTIONS ANNULABLES....................205
Renderer de la couleur d’un meuble(cid:129)152
Scénario n°4(cid:129)206
Test des renderers(cid:129)153
Spécifications des actions annulables(cid:129)206
Vérification des textes affichés dans le tableau(cid:129)154
Scénario de test(cid:129)206
Exécution des tests JUnit(cid:129)155
Refactoring de la classe du tableau(cid:129)155 Opérations Annuler/Refaire dans Swing(cid:129)207
Utilisation d’un modèle de tableau adapté aux meubles(cid:129)155 Opération annulable(cid:129)208
Intégration de meubles supplémentaires(cid:129)158 Gestionnaire de l’historique des annulations(cid:129)209
En résumé…(cid:129)158 Test unitaire du gestionnaire d’annulation(cid:129)210
Diagramme de séquence de l’annulation d’une
6. MODIFICATION DU TABLEAU DES MEUBLES AVEC MVC..161 opération(cid:129)211
Scénario n°3(cid:129)162 Gestion des notifications d’opérations annulables(cid:129)212
Scénario de test(cid:129)162 Test unitaire du gestionnaire de notification(cid:129)212
Gestion des modifications dans la couche métier(cid:129)162 Gestion des opérations annulables dans le projet(cid:129)213
Architecture Modèle Vue Contrôleur(cid:129)164 Activation et désactivation des actions(cid:129)214
Principe du MVC(cid:129)164 Notion d’action(cid:129)215
Architecture MVC(cid:129)165 Utilisation des actions dans la vue(cid:129)216
Architecture MVC idéale(cid:129)166 Programme de test des actions annulables(cid:129)217
Lancement d’une application MVC(cid:129)170 Gestion de l’annulation et des actions actives dans les
Les design patterns au service des changements contrôleurs(cid:129)221
d’implémentation(cid:129)172 Listeners implémentés par le contrôleur(cid:129)222
Architecture MVC retenue(cid:129)173 Opérations Annuler et Refaire(cid:129)223
Diagramme UML des classes du scénario(cid:129)175 Ajout et suppression de meubles dans le contrôleur du
Programme de test de la modification de la liste des meubles (cid:129)177 tableau(cid:129)224
Ajout et suppression des meubles dans les contrôleurs(cid:129)178 Indice d’insertion des meubles dans le logement(cid:129)227
Contrôleur de la vue principale(cid:129)179 Création des actions dans la vue du logement(cid:129)228
Contrôleur de la vue de l’arbre(cid:129)180 Intégration des actions dans la classe de la vue du
Contrôleur de la vue du tableau(cid:129)181 logement(cid:129)228
Notifications des modifications dans la couche métier(cid:129)182 Lecture des propriétés d’une action(cid:129)231
Sélection des meubles du catalogue(cid:129)182 Test du scénario(cid:129)234
Interface du listener de sélection et classe d’événement Refactoring des actions(cid:129)235
associée(cid:129)184 Actions paramétrables avec la réflexion(cid:129)235
Sélection et modification des meubles du logement(cid:129)185 Implémentation de l’action paramétrable(cid:129)236
Interface du listener des meubles(cid:129)188 Création des actions paramétrables(cid:129)237
Classes de la vue du logement et de la vue de test(cid:129)190 En résumé…(cid:129)239
Intégration de l’arbre et du tableau dans la vue du
8. COMPOSANT GRAPHIQUE DU PLAN......................241
logement(cid:129)190
Scénario n°5(cid:129)242
Implémentation de la vue du test(cid:129)191
Synchronisation de la sélection dans l’arbre(cid:129)193 Spécifications du composant du plan du logement(cid:129)242
Suivi des modifications de la couche métier dans le tableau(cid:129)195 Création des murs(cid:129)242
Synchronisation de la sélection dans le tableau et le Sélection des murs(cid:129)244
logement(cid:129)197 Scénario de test(cid:129)245
© Groupe Eyrolles, 2005 XIII