cds.aladin
Class Blink
java.lang.Object
cds.aladin.Blink
public final class Blink
- extends java.lang.Object
Le blinking consiste à désigner une source pour la repérer aisément.
La méthode consiste à faire des XOR de carrés de plus en plus grands
puis de repasser dessus afin de les effacer.
L'intérêt de la méthode est qu'il est inutile de mémoriser ce qu'il
y a sous la source pour restituer la source après l'avoir montrée.
Sa difficulté consiste à faire un nombre pair de XOR, malgré les
affichages asynchrones.
1. La souris rentre dans une source dans la vue n
(ou respectivement en sort)
- appel à la fonction View.showSource(Source s) qui va transmettre
à toutes les vues que la nouvelle source à montrer est s (s null
si sort d'une source) => ViewSimple.changeBlinkSource(Source s)
- Lance le thread de blinking si ce n'est déjà fait, sinon
lui passe une interruption afin que la prise en compte
soi immédiate.
2. Thread de blinking (View.runC())
- incrémente le mode blink (View.modeBlink)
- demande le repaint (blinkRepaint()) pour toutes les vues
qui ont quelques choses à faire (au-moins une source
à montrer ou à restituer)
- si aucune, s'arrête sinon attend 0.3 secondes et boucle
3. La modification d'une source à montrer pour une vue
- cherche dans sa liste de Blinks, toutes les sources
qu'il faut restituer et en fait la demande
- si dans la liste de Blinks (ViewSimple.showSource) dont il dispose
il y a un Blink libre, il l'utilise pour insérer la nouvelle source
à montrer et demande son clignotement
- s'il n'y a plus de place dans la liste des Blinks, il
ajoute un nouveau Blink décrivant la nouvelle source
à montrer
3. Le repaint des vues en mode blink
- restitue ou montre les sources qui doivent l'être
(parcours du Vector showSource contenant des objets Blink
4. Le paint d'un blink
- Un Blink dispose de 4 états (UNBLINK,START,BLINK et STOP)
START et STOP peuvent être demandé par start() et stop()
UNBLINK correspond à un Blink libre
BLINK correspond à l'état de clignotement
- L'état d'un blink change de fait uniquement lors de l'appel
à paint(Graphics g) car il doit disposer du contexte graphique
pour opérer.
*
- Version:
- 1.0 : (11 mai 2004) création
- Author:
- Pierre Fernique [CDS]
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Copyright © 2009 UDS/CNRS