IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[Listener] Ordre des fireUpdates


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut [Listener] Ordre des fireUpdates
    Bonjour, je suis en train d'essayer d'implémenter du MVC dans une appli et j'aurais deux petites questions concernant les listener:

    Tout d'abord, je veux pour l'instant juste implémenter un listener pour une liste ( de type ArrayList), afin que lorsque des ajouts se font dans cette liste, les composants qui se chargent de l'afficher se mette automatiquement à jour. Je n'ai rien trouvé de pré existant pour effectuer ceci, c'est normal ou j'ai mal cherché ?

    Ne trouvant rien, je suis partie pour implémenté ca moi même. Vu que je risque d'avoir pas mal de ces lists, je pensais partir sur un un Listener Generique. J'ai donc le code suivant :

    Pour mon interface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public interface ListListener<T> extends EventListener{
     
        public void dagChanged(ListEvent<T> event); 
     
        public void dagAdded(ListEvent<T> event);
     
        public void dagSuppressed(ListEvent<T> event);
     
        public void dataChanged(Object source);
     
     
    }
    Pour l'Event :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public class ListEvent<T> {
        private T data;
        private Object source;
     
        public ListEvent(Object source, T cData) {
            data = cData;
            this.source = source;
        }
     
        public T getDag() {
            return data;
        }
     
    }

    Puis j'ai fais la classe ListListenable (faut vraiment que je trouve un meilleur nom) suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
     
    public class ListListenable<T> extends ArrayList {
     
         private EventListenerList listeners;
     
        @Override
        public boolean add(Object e) {
            fireDataAdded((T)e);
            return super.add(e);
        }
     
     
     
       public void fireDataAdded(T data) {
            ListListener[] listenerList = (ListListener[]) listeners.getListeners(ListListener.class);
            for (ListListener listener : listenerList) {
                listener.dagChanged(new ListEvent<T>(this, data));
            }
        }
     
     public void fireListChanged() {
            ListListener[] listenerList = (ListListener[]) listeners.getListeners(ListListener.class);
            for (ListListener listener : listenerList) {
                listener.dataChanged(this);
            }
        }
     
     
     
    }
    Je ne met que la fonction add toute simple, le reste suit la même logique.

    Je voudrais donc savoir, d'une part si la façon de faire tout ca est juste ?
    De plus, j'ai une fonction d'écoute de l'ajout, la suppression, la modification, ainsi qu'une fonction qui écoute n'importe quel changement sur la list. Et je me demandais si le fireListChanged() devait être appellé avant ou après un fire plus précis ?

    En vous remerciant ^^

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Ca me parait pas mal du tout ce que tu as fait.
    En tout cas, dans le principe c'est ce qu'il faut faire.

    Pour répondre à ta question, pourquoi voudrais-tu faire un fireListChangerd apres un fire plus precis ?
    Car il te faudra juste abonner seulement les composants à mettre à jour si la donnée a changé.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Je ne suis pas sur d'avoir bien compris ta remarque. En fait, je veux juste permettre d'avoir un certain niveau de précision possible, tout en laissant la possibilité d'avoir un comportement globale.

    Je veux dire, si pour une vue, je vais effectuer le même traitement quelque que soit le type de changement, je n'aurais qu'à implémenter dataChanged() au lieu de devoir implémenter les 3 autres cas.

  4. #4
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    ben oui en implémentant dataChanged dans ta vue, les modifications seront prises en compte.
    Tu pourras effectuer un refraichissement de ta donnée dans ce cas.

    Il faut juste que ta vue soit abonnée à ton objet ListListenable.

Discussions similaires

  1. Modifier l'ordre des Fields d'un dataset
    Par teska dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/03/2004, 16h38
  2. Modifier l'ordre des cartes son
    Par YéTeeh dans le forum Matériel
    Réponses: 3
    Dernier message: 19/08/2003, 01h13
  3. Ordre des champs dans une table
    Par patapetz dans le forum Outils
    Réponses: 5
    Dernier message: 30/07/2003, 06h53
  4. Question : ordre des bits ?
    Par Choupi dans le forum C
    Réponses: 3
    Dernier message: 11/02/2003, 06h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo