Le Mercredi 25 Septembre 2002 18:48, Cedric Beust a �crit :
>
> La position de l'ascenseur est determinee par un attribut du modele, non
> ? Par exemple, imagine que le modele soit un employe et que l'ascenseur
> depende de son salaire.
>
Je pensais plutot aux ascenceurs des traitements de texte, par exemple. Le
texte � visualiser est le mod�le, mais tu ne peux pas tout visualiser d'un
seul coup. La partie visualis�e d�pend juste de la vue. Je vois juste une
portion de mon document. Un ascenseur me permet d'aller de haut en bas dans
la lecture de mon document.
Si je consulte le milieu de mon document, l'ascenseur sera positionn� au
milieu de sa ligne. Cela ne d�pend que de ce que je vois, et ne modifie en
rien le document lui m�me.
A la construction de ma fen�tre, l'ascenseur est positionn� en haut, et la
fen�tre me pr�sente le d�but de mon document.
Je modifie le document -> le mod�le est aussi modifi�.
Je consulte le milieu du document -> l'ascenseur va au milieu, je ne vois pas
la m�me portion du document, mais le mod�le n'est pas modifi�.
A ce moment l�, je demande un clone de ma fen�tre. Selon ton mod�le,
j'appelle le constructeur de ma vue, et je lui transmets le mod�le.
Si j'applique ton mod�le � la lettre, j'aurai bien le document modifi�,
j'aurai bien les listeners du mod�le et de la vue, mais la fen�tre me
pr�sentera le d�but du document. Ce n'est pas ce que je veux voir : je veux
voir le milieu du document, puisque je suis un utilisateur b�te, et que comme
j'ai fait mon clone alors que je voyais le milieu du document, je m'attends �
ce que le clone me pr�sente aussi le milieu du document.
> public class Employee {
> public void setSalary(Integer n) {
> Integer old = getSalary();
>
> // store the salary
> ...
>
> // notify the world
> firePropertyChangeEvent(SALARY, old, n);
> }
> }
>
> Maintenant, ton composant :
>
> private Employee m_model;
>
> public void initUIWithModel() {
> m_model.addChangeListener(this);
>
> // ici tu bouges l'ascenseur en fonction de m_model.getSalary();
> setThumb();
> }
>
> public void propertyChange(PropertyChangeEvent pce) {
> if (SALARY.equals(pce.getPropertyName()) {
> setThumb();
> }
> }
>
> Qu'est-ce que tu en penses ?
L�, si j'ai bien compris, plus l'ascenseur est haut, plus le salaire est
�lev�. Donc il est normal que tu mettes le niveau de l'ascenseur dans le
mod�le : si tu changes sa position, le salaire change aussi. Mais je
m'inqui�te surtout des changements qui affectent la vue sans affecter le
mod�le. Ceux l�, tu ne les clones pas.
--
SARL diaam informatique - 04 50 77 12 60
Ingenierie, d�veloppements de syst�mes d'information
http://www.diaam-informatique.com