cds.aladin
Class View

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by cds.aladin.View
All Implemented Interfaces:
java.awt.event.AdjustmentListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.lang.Runnable, java.util.EventListener, javax.accessibility.Accessible

public final class View
extends javax.swing.JPanel
implements java.lang.Runnable, java.awt.event.AdjustmentListener

Gestionnaire des vues. Il s'agit d'afficher les plans actifs (voir ToolBox) dans l'ordre de visibilite selon l'echelle indiquee par le zoom (voir ZoomView) et ceci pour toutes les vues

La souris a differentes fonctions suivant l'outil (Tool bar) active. Ce peut etre la simple selection d'une source, le dessin d'objet graphique, le zoom pointe... INFO DE PROGRAMMATION SUR LA GESTION DU MULTIVIEW. A partir de la version 3, Aladin gère le multiview. Pour ce faire, l'ancienne classe View a été scindée en deux : . View : gère tout ce qui concerne l'ensemble des vues . ViewSimple : gère l'affichage d'une vue particulière Et plusieurs classes ont été ajoutées: . ViewMemo et ViewMemoItem : mémorisent les infos sur toutes les vues actives . ViewControl : gère le sélecteur définissant le nombre de vues simultanées. D'autre part, certaines infos qui se trouvaient dans ZoomView ont été rapatriées dans ViewSimple car propre à chaque vue (notamment la valeur courante du zoom, son centre). Ainsi bon nombre de méthodes qui devaient connaître la valeur du zoom courant et pour lesquelles il fallait passer l'objet ZoomView, ont désormais comme paramètre directement ViewSimple à la place de ZoomView. Quelques détails qui peuvent servir: 1) View compare les vues en cours d'affichage avec celles qui devraient être affichées (en fonction du scrollbar ou d'un changement du nombre de vues). S'il y a eu modif, View va sauvegarder les vues et regénérer les nouvelles via ViewMemo. Puis il va appeler en séquence le repaint de chacune de ces vues. Lors du réaffichage d'une vue, l'update de la vue ajuste automatiquement le zoom afin que la zone visible reste la même (zoomAdjust). (principales variables viewSimple[], modeView et currentView) 2) Les overlays graphiques (sources ou objets graphiques) ont désormais des tableaux dimensionnés en fct du nombre de vues pour mémoriser les x,y pour chaque image de chaque vue, ainsi que pour les x,y de la portion zoomée. D'autre part, comme les plans objets ne se désactivent plus automatiquement, il faut désormais mémoriser le fait qu'un plan catalogue n'est pas projetable pour une vue particulière. Pour ce faire, on utilise un tableau d'état se trouvant dans plan.pcat.drawnInViewSimple[] et consultable par plan.pcat.isDrawnInViewSimple(int n). Cette méthode sera appelé pour filtrer les plans objets non concernés (détection des objets sous la souris...) 3) L'affectation d'un plan dans une vue peut se faire désormais par glisser déposer depuis la pile dans une vue. Idem pour le déplacement d'une vue ou sa copie (Ctrl). La gestion de cette fonction se fait par les méthodes megaDrag... Il est a noter que la vue cible est déterminée par la méthode getTargetViewForEvent() en fonction de la configuration des panels graphiques d'Aladin. 4) Pour conserver de bonnes performances, l'indice de chaque vue dans le tableau viewSimple[] est mémorisé dans chaque ViewSimple (variable n). En effet, pour tracer n'importe quel objet graphique, la procédure de drawing doit connaître le numéro de la vue concernée (indice dans les différents caches (x,y)) en plus du facteur de zoom. Il serait trop long de parcourir le tableau View.viewSimple[] à chaque fois. Il faut donc remettre à jour ces variables "n" à chaque regénération d'une vue récupérée de ViewMemo. (voir View.recharge()) 5) Le blinking (d'une source ou d'une image blink) est désormais géré par un thread particulier (voir startBlinking() et runC())

Version:
2.0 : (nov 04) gestion du multiview, 1.2 : (1 dec 00) Meilleure gestion de la source montree + gestion du plan Add, 1.1 : (28 mars 00) Modif debug -> trace + label pour les plans, 1.0 : (11 mai 99) Toilettage du code, 0.91 - 3 dec 1998 Nettoyage du code, 0.9 - 31 mars 1998
Author:
P. Fernique CDS
See Also:
Aladin.ToolBox, Aladin.Zoomview, Aladin.ViewSimple, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Field Summary
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Method Summary
 void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
           
 boolean isOpaque()
           
 boolean isRecalibrating()
          Il y a une recalibration par Quadruplet en cours
 void paintBordure()
          Affichage rapide des bordures des vues
 void quickRepaintAll()
           
 void repaintAll()
          Cette méthode d'affichage du multiview me semble un peu casse-gueule dans le sens où je surcharge repaint() sans appelé super.repaint() et c'est moi-même qui me charge d'appeler individuellement les repaint() de chaque vue.
 void run()
          Aiguillage pour les 2 differents types de resolution simbad et un éventuel blinking
 boolean runB()
          Resolution Sesame par Thread independant pour un objet particulier
 void setMouseView(ViewSimple v)
          Spécifie la vue sous la souris (afin d'être affiché avec une bordure verte et le plan de la pile qui correspond.
 void updateAll()
           
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Method Detail

setMouseView

public void setMouseView(ViewSimple v)
Spécifie la vue sous la souris (afin d'être affiché avec une bordure verte et le plan de la pile qui correspond.

Parameters:
v - la vue sous la souris, ou null si aucune

isOpaque

public boolean isOpaque()
Overrides:
isOpaque in class javax.swing.JComponent

isRecalibrating

public boolean isRecalibrating()
Il y a une recalibration par Quadruplet en cours


run

public void run()
Aiguillage pour les 2 differents types de resolution simbad et un éventuel blinking

Specified by:
run in interface java.lang.Runnable

runB

public boolean runB()
Resolution Sesame par Thread independant pour un objet particulier


paintBordure

public void paintBordure()
Affichage rapide des bordures des vues


repaintAll

public void repaintAll()
Cette méthode d'affichage du multiview me semble un peu casse-gueule dans le sens où je surcharge repaint() sans appelé super.repaint() et c'est moi-même qui me charge d'appeler individuellement les repaint() de chaque vue. Cela dit, c'est le seul moyen que j'ai trouvé qui semble fonctionner correctement.


updateAll

public void updateAll()

quickRepaintAll

public void quickRepaintAll()

adjustmentValueChanged

public void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
Specified by:
adjustmentValueChanged in interface java.awt.event.AdjustmentListener


Copyright © 2009 UDS/CNRS