API JTREE

edouard333 Messages postés 62 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 18 décembre 2011 - 26 sept. 2010 à 14:01
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014 - 29 sept. 2010 à 21:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52315-api-jtree

cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
29 sept. 2010 à 21:12
lol, j'ai pas ce genre de problême ... je suis rarement levé a midi :)
merci a+
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
29 sept. 2010 à 19:39
Désolé mais ce matin je ne devais pas être en forme, j'ai à nouveau regardé ton code et il respecte parfaitement l'architecture MVC et rien n'est mélangé...

En plus je t'ai mis 4 !!! Je trouve que le code est bon pourtant ! Ca mérite au moins 8 !

Bon alors reprenons :
- architecture MVC bien respectée (décomposition en packages et noms plus explicites peuvent améliorer)
- le code est propre et les objets bien utilisés
- il manque un peu de javadoc au moins sur les paramètres des constructeurs

Oui ca vaut bien 8 ou 9, je vais arreter de mettre des commentaires vers midi, je dois avoir faim et je suis un peu grogon :) délsolé
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
29 sept. 2010 à 18:39
Pour le nom de package, c'est vrai que treeX c'est pas top. Je poste pas juste pour ca, d'autant que dans un ide, en 2 seconde c'est fait.
Par contre je comprend pas que tu dises que j'ai tout mélangé... J'ai essayé de faire gaffe à respecter le modèle MVC, si tas un exemple , je veux bien..
bye
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
29 sept. 2010 à 11:26
même remarque que edouard333 au niveau des commentaires.

Apparament, tu as essayé de respecter l'architecture MVC ce qui est une bonne idée. Cependant, tu mélanges un peu tout dans ton code, il ne suffit pas de donner des noms aux classes pour respecter l'architecture. Tu devrais te faire 3 packages avec modele, vue et controleur et là, tu sépares, tes noms de packages treeX n'apportent rien.

Ce code peut tout de même etre utile.
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
28 sept. 2010 à 17:04
Merci Kimjoa,

ça fonctionne bien maintenant, il n'y a plus d'exception! Le répertoire est déplacé et l'explorateur est actualisé (avec la première version, le répertoire était également déplacé, mais l'explorateur n'était pas actualisé à cause de l'exception).

Salutations,
André
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
27 sept. 2010 à 15:22
salut uhrand!!
Et bien c'est bizarre j'arrive pas à avoir cette erreur de mon coté, j'ai fait toutes les manips possible sans résultat. Ca peux venir des droits d'écriture du dossier , en efet j'ai oublié d'intercepter une exception a ce niveaux... J'ai reposte en éspérant que tu n'auras plus ce problème, et j'ai corrigé un petit bug (l'expansion de dossier destination lors d'une copie ne se fessait po :()
bye
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
27 sept. 2010 à 12:25
J'ai quand même reçu une exception lors du déplacement d'un répertoire:
c:\Intel\Label
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at tree5.TreeSystemModel.refreshFilesDirectories(TreeSystemModel.java:66)
at tree5.TreeSystemController$OnPaste.doPaste(TreeSystemController.java:245)
at tree5.TreeSystemController$OnPaste.actionPerformed(TreeSystemController.java:216)

L'exception vise l'instruction suivante:
parent.removeAllChildren();
(dans la méthode refreshFilesDirectories du TreeSystemModel)
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
27 sept. 2010 à 11:16
A première vue, cela fonctionne très bien chez mois. Il y a peut-être un soucis pour le "Voisinage réseau" qui ne montre que le raccourci vers la destination et non pas la destination elle-même. Mais ça c'est un détail, à mon avis. Bon travail! Au niveau code je ne peux rien dire (je ne l'ai pas regardé).
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
27 sept. 2010 à 03:01
hmm en faite me suis gouré. Les interface et le polymorphisme , ca n'a rien a voire. Le polymorphisme c'est juste l'exécution d'une méthode définit à l'exécution, car le compilo ne connait pas le type réelle de l'objet à la compilation. Alors que les interfaces permettent d'éviter les ambiguïté des appels de méthodes lors d'héritage multiple, mais permettent un typage "multiple" ... vais me coucher ca vaux mieux :)
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
27 sept. 2010 à 02:04
salut edouard333, dsl pour les commentaire, c'est pas mon fort, vais essayer de t'aider ...

En faite c'est due au fait que la classe FileEditor et une implémentation de l'interface TreeCellEditor, et donc je suis obligé de définir les méthodes qu'elle déclare. C'est le rôle d'une interface, c'est comme si c'était une classe abstraite sans attribut, et dont les méthodes serait toutes abstraites. Les interfaces sont très présente en java, car le langage ne permet pas l'héritage multiple....
Par exemple un objet est déclaré (typé) par une classe. Mais ce type dois faire partie de la chaine des classes que se classe de base hérite. (par exemple un objet JFrame peux être typé en JFrame ou en Component ou en Object).
A partir de ce type, le compilateur sait qu'elle méthodes ou attribut l'objet dispose, et sait ou les trouver ... c'est ce qui définit un langage à typage statique.

Les interfaces permettent de typer un objet dans autre choses que ses types de classes dérivé, car la classe implémentant l'interface n'hérites pas de l'interface, mais juste de son type et de la signature de ses méthodes.
Les interfaces sont très lié au polymorphisme, qui est la faculté aux runtime d'invoquer une méthode non pas par rapport aux type déclarer de l'objet , mais par rapport à son type réelle.
Si le java à préférer avoir un typage multiple via les interfaces, mais limites la dérivation à une seule classe, c'est notamment due aux problèmes d'invocations des méthodes polymorphique. Car dans un langage à héritage multiple, un ensemble de méthode peux être invoqué, dans le cas ou la classe dérivé ne sur-définirait pas la méthodes en question....
Voilà voilà, perso, je comprend pas trops la logique java, rien n'empêche au programmeur de définir précieusement la méthode à invoquer lors d'un tel appelle de méthode mais, bon j'ai ptète zapper un truc ^^
a++
edouard333 Messages postés 62 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 18 décembre 2011 1
26 sept. 2010 à 18:05
J'ai un peu regarder ton code source, et il manque des commantaires, je n'arrive à rien déchiffrer.

Je ne vois pas l'intérêt de faire:

public boolean shouldSelectCell(EventObject anEvent) {
return true; <-- Autant dire directement true, que faire un méthode, non?
}

public boolean stopCellEditing() {
return true;
}

public void cancelCellEditing() {
} <-- Ici, la méthode est vide, quelle est l'intérêt, sauf si c'était un class abstraite mais se n'en n'est pas une.

public void addCellEditorListener(CellEditorListener l) {
}

public void removeCellEditorListener(CellEditorListener l) {
}

Des commantaires expliqueraient bien tout ça. Je ne dis pas ça méchament, mais à titre d'information, ici c'est pour s'entraider.

:)
cs_Kimjoa Messages postés 262 Date d'inscription vendredi 6 mai 2005 Statut Membre Dernière intervention 19 septembre 2014
26 sept. 2010 à 14:52
merci pour ton commentaire edouard333 ;).
Je me suis rendue compte que bien des choses pouvait être amélioré, surtout au niveau de l'organisation du code , pour le rendre plus génériques,via un package de base JTreeMutable, définissant des écouteurs et classes listener, du genre addTreeRenameListener ou TreeTriggerMenuListener .. Puis ensuite étendre les classe qui faux pour un système de fichier ...
J'aurais bien aimé avoir le temps de revoir le code, mais ca va être chaud pour le moment, mais il n'empêche qui peux permetre aux débutant de comprendre un peux le mécanisme, et même peux être implémenté dans des petits projet, comme le mien pour moi :)
a++
edouard333 Messages postés 62 Date d'inscription samedi 23 décembre 2000 Statut Membre Dernière intervention 18 décembre 2011 1
26 sept. 2010 à 14:01
Je n'ai pas encore regarder ton code, mais dans l'ensemble l'utilisation de ce code est bien, facile à utiliser.