1. Mode Graphique
    1. 1- Principes fondamentaux
      1. Processus de conception
      2. Caractéristiques d'un grand logiciel
        1. Haute performance
        2. Facilité d'utilisation
        3. Aspect attractif
        4. Fiabilité
        5. Adaptabilité
        6. Interoperabilité
        7. Mobilité
      3. Principes de conception
        1. Principes (1)
        2. Principes (2)
        3. Principes (3)
      4. Pensez aux utilisateurs
        1. Compatibilité internationale
        2. Accessibilité aux handicapés
        3. Etendre l'interface
      5. Priorités
    2. 2- L'expérience du Mac
      1. L'environnement
        1. L'environnement (1)
        2. L'environnement (2)
      2. Les technologies
        1. Les technologies (1)
        2. Les technologies (2)
        3. Les technologies (3)
        4. Les technologies (4)
      3. Installation et mises à jour
        1. Packaging, installation
        2. Les assistants
    3. 3- L'interface Aqua
      1. Entrées utilisateur
        1. La souris
        2. le clavier
          1. Fonction des touches
          2. Raccourcis-clavier
          3. Navigation au clavier
        3. Sélection
        4. Edition de texte
      2. Glisser-déposer
        1. Glisser-Déposer (1)
        2. Glisser-Déposer (2)
      3. Le texte
        1. Les fontes
        2. Le style
      4. Les icônes
        1. Genres et familles d'icônes
        2. Création des icônes
        3. Icônes des barres d'outils
        4. Images propres au système
      5. Les pointeurs
      6. Les menus
        1. Comportement des menus
        2. Conception des menus
        3. La barre de menus
          1. Les menus (1)
          2. Les menus (2)
          3. Les menus (3)
        4. Menus contextuels et du Dock
      7. Les fenêtres
        1. Type et apparence
        2. Eléments
          1. Barre de titre
          2. Barre d'outils
          3. Barre de recherche
          4. Barre latérale
          5. Barre inférieure
          6. Les Tiroirs
        3. Comportement des fenêtres
          1. Comportement (1)
          2. Comportement (2)
          3. Superposition
          4. Défilement
        4. Les panneaux
          1. Les panneaux
          2. Panneaux transparents
          3. Autres panneaux
      8. Les dialogues
        1. Types de dialogues
        2. Aspect et comportement
      9. Fenêtres de dialogues
        1. Recherche, Préférences, Ouverture
        2. Enregistrement
        3. Choix, Impression
      10. Les contrôles
        1. Contrôles du cadre
          1. Contrôles en capsule
          2. Contrôles hérités
        2. Les boutons
          1. Boutons poussoirs
          2. Boutons en icônes
          3. Boutons de recherche
          4. Boutons de gradient, et d'aide
          5. Boutons à champfrein
          6. Boutons ronds
        3. Contrôles de sélection
          1. Boutons radio
          2. Cases à cocher
          3. Contrôles segmentés
          4. Boutons et menus pop-Up
          5. Menus Action
          6. Boîtes de combinaison
          7. Contrôles de chemin
          8. Puits, sélection de date
          9. Menus pop-down
          10. Glissières
          11. Contrôles pas-à-pas et placards
        4. Indicateurs
          1. Indicateurs de progression
          2. De niveau, de capacité
          3. D'estimation, de pertinence
        5. Contrôles de texte
          1. Champs d'entrée
          2. Champs à jeton
          3. Champs de recherche
          4. Listes de défilement
        6. Contrôles de visualisation
          1. Triangles d'affichage
          2. Boutons d'affichage
          3. Vues en liste
          4. Vues en colonnes
          5. Vues éclatées
          6. Vues à onglets
        7. Contrôles de groupage
          1. Séparateurs
          2. Boîtes de groupage
        8. Règles de disposition
          1. Dans le corps de la fenêtre
            1. Fenêtre de préférences
            2. Fenêtre à onglets
            3. Alerte, Dialogue
          2. Contrôles réduits et mini
            1. Contrôles réduits
            2. Mini contrôles
          3. Groupement des contrôles
          4. Positionnement dans la barre inférieure
      11. Glossaire
        1. Entrées en anglais
          1. 1- A à C
          2. 2- D à H
          3. 3- I à R
          4. 4- S à Z
        2. Entrées en français
          1. 1- A à C
          2. 2- C à G
          3. 3- I à P
          4. 4- P à Z
        3. `
    4. 4- Les leçons de Lion
      1. L'environnement de Mac OS X
      2. Principes fondamentaux
      3. L'expérience utilisateur
        1. Règles de conduite (1)
        2. Règles de conduite (2)
        3. Règles de conduite (3)
        4. Règles de conduite (4)
        5. Règles de conduite (5)
        6. Règles de conduite (6)
      4. Les technologies d'Apple
        1. Les technologies (1)
      5. -->
  2. Mode Commande

Glisser-Déposer (2)




Ce que dit Apple :




5- Rétroaction de la destination :

Si un utilisateur glisse un item vers une destination, dans votre application, elle doit fournir une rétroaction qui indique si l'item sera accepté. La rétroaction de la destination ne doit pas simplement intervenir parce que l'application sait gérer le glissement ; elle doit plutôt dépendre de l'aptitude de la destination à accepter le type de données contenu dans l'item glissé. Par exemple, un champ d'entrée de texte, qui n'accepte que du texte, ne doit pas s'éclairer quand il reçoit un item graphique.

Utilisez des pointeurs pour indiquer quel résultat aura le relâchement de la souris. Par exemple, si vous glissez une icône à l'extérieur d'une barre d'outils affichez le pointeur en nuage (poof pointer) quand l'icône déplacée passe en dehors de la barre d'outils pour indiquer que si l'utilisateur relâche la souris, l'item va disparaître. Il y a d'autres pointeurs capables de fournir une rétroaction utile pendant une opération de glissement : alias, copie, pas autorisé (voir les pointeurs).

Avec Carbon, l'apparence réelle de la rétroaction de destination dépend du type de destination. Le Drag Manager fournit quelques outils pour un éclairage simple ; si votre application nécessite un éclairage plus complexe, vous devez utiliser vos propres outils d'éclairage.

a- Les fenêtres

Une région de destination valide, dans la fenêtre d'un document, est en général le contenu de la fenêtre, moins la barre de titre, moins les zones de contrôle (barres de défilement, case de redimensionnement, palettes d'outils, règles et placards). S'il y a de multiples régions de destination possibles dans une fenêtre, une seule région de destination est éclairée à la fois.

Quand un utilisateur glisse un item acceptable dans une région de destination, l'application doit éclairer la région dès que le pointeur entre dedans, et supprimer l'éclairage s'il en sort.

Si une opération Glisser-Déposer se tient entièrement à l'intérieur d'une seule région de destination (par exemple, le déplacement d'une icône de document à l'intérieur du même dossier), n'éclairez pas la région de destination, pour éviter de distraire l'utilisateur. Mais si l'utilisateur glisse un item entièrement hors de la région de destination, et le ramène dans cette même région, celle-ci doit être éclairée.

Vous pouvez fournir une rétroaction plus spécifique dans des régions de destination étendues. Par exemple, si un utilisateur glisse du texte de la fenêtre d'un document à une autre, la fenêtre de destination doit afficher un point d'insertion à l'endroit où le texte sera déposé quand l'utilisateur va relâcher la souris.

Dans de nombreuses situations, éclairer une zone limitée dans une fenêtre est plus approprié que d'éclairer toute la région. C'est le cas pour les tableurs, les boîtes de texte, les formulaires. Dans ces cas, la région de destination doit être adaptée pour indiquer précisément la destination spécifique.

b- Le texte

Quant un utilisateur glisse un item dans une zone de texte, un pointeur d'insertion (barre verticale) doit apparaître dans le texte à l'endroit où l'item sera inséré quand la souris sera relâchée.

c- Les listes

Un pointeur d'insertion doit apparaître dans une liste où un item se trouve glissé, pour indiquer où il sera déposé. par exemple, si un utilisateur glisse un item dans la barre latérale du Finder, un indicateur d'insertion apparaît.

d- Items multiples

Si l'utilisateur glisse des items multiples, la rétroaction de destination ne soit intervenir que si celle-ci peut accepter les items ; si elle ne peut pas les accepter tous, la tentative s'inscrit dans la rétroaction d'un dépôt invalide.

Quand la destination peut accepter tous les items, elle doit le faire dans l'ordre défini par la source. L'application source doit organiser les items dans l'ordre où ils ont été sélectionnés, sauf dans deux cas :
- si les items glissés proviennent de vues ordonnées (comme une vue par Date, ou une liste alphabétique), cet arrangement prévaut sur l'ordre de sélection
- si la source et la destination permettent toutes deux un ordonnancement spatial (comme dans des applications graphiques), l'ordre spatial prévaut sur l'ordre de sélection.

e- Le défilement automatique

Quand un item est glissé, votre application doit déterminer s'il faut faire défiler le contenu ou permettre à l'item d'échapper à la fenêtre. Si votre application autorise les items à être glissés à l'extérieur de la fenêtre, vous devez définir une région de défilement automatique. Ne faites défiler une fenêtre destination que si c'est aussi la fenêtre source, et qu'elle est active. Ne faites pas défiler automatiquement des fenêtres inactives.

f- La corbeille comme destination

Glisser des items dans la corbeille revient à les déplacer de la source vers la corbeille. Par exemple, glisser une sélection de texte depuis un traitement de texte et la déposer dans la corbeille efface le texte de l'application, et une coupure qui contient ce texte est créée dans la corbeille. Notez que l'item est déplacé, bien qu'il soit glissé entre deux conteneurs. Cette exception aux règles décrites précédemment se justifie parce que l'utilisateur peut défaire l'opération en sortant la coupure de la corbeille, pour la remettre dans sa source initiale ; c'est cohérent avec le principe de la prévention d'une perte accidentelle de données.

Il est important de conserver cette propriété de la corbeille ; n'effacez pas simplement des données d'une source sans créer une coupure, ou un autre item dans la corbeille.


6- Rétroaction du dépôt :

Quand un utilisateur relâche le bouton de la souris après un glissement, la rétroaction doit l'informer que l'opération Glisser-Déposer a réussi. Cette rétroaction peut être visuelle, mais elle est par nature comportementale. Le comportement tient à l'opération sémantique indiquée par la séquence Glisser-Déposer.

a- Les icônes du Finder

Quand l'utilisateur déplace un item en déposant son icône dans un dossier, l'icône déposé disparaît et l'éclairage de l'icône dans le dossier destination est annulé.

Si une icône représente une tâche (comme une impression), vous pouvez fournir une rétroaction de progression pour indiquer que la tâche est en cours.

b- Les graphiques

Quand on dépose des graphiques, la rétroaction de dépôt est normalement le mouvement de l'item jusqu'à la position de l'évènement mouse-up.

c- Le texte

Après qu'un texte a été déposé, il est éclairé dans sa destination.

Si du texte est déposé dans une destination qui accepte un texte enrichi, le texte déposé doit conserver sa police, sa graisse, et ses attributs de taille. Si la destination ne supporte pas du texte enrichi, le texte déposé doit adopter la police, la graisse et la taille du point d'insertion.

Les opérations Glisser-Déposer sur du texte doivent supporter les règles du Couper-Copier intelligent.

d- Transfert d'une sélection

Après une séquence Glisser-Déposer réussie dans une fenêtre unique, la rétroaction de sélection est maintenue à sa nouvelle position. Ce comportement fournit à l'utilisateur un signal important, et lui permet de changer la position sans refaire une sélection.

Si l'utilisateur glisse un item d'une fenêtre active vers une fenêtre inactive, l'item glissé devient une sélection en arrière plan ; la sélection dans la fenêtre active reste sélectionnée. Cette règle s'applique aussi à la situation inverse, quand un item est glissé d'une fenêtre inactive à une fenêtre active.

Quand un contenu est déposé dans une fenêtre où quelque chose est sélectionné, votre application doit tout dé-sélectionner dans la destination avant le dépôt, plutôt que de remplacer la sélection par l'item déposé.

e- Rétroaction d'un dépôt invalide

Si un utilisateur tente de déposer un item dans une destination qui ne l'accepte pas, l'item doit revenir en arrière, de la position mouse-up à sa position initiale dans la source (c'est un zoomback). Le Zoomback doit aussi intervenir quand un dépôt dans une destination valide ne réussit pas.

Si un utilisateur tente un glissement multiple dans une destination qui ne l'accepte pas, aucun des items ne doit être accepté. Dans un tel cas, vous pouvez afficher un dialogue pour informer l'utilisateur du type de données que la destination accepte, et quels items dans l'ensemble qui a été déposé ne peuvent pas être acceptés.


7- Les coupures (clippings) :

Quand un item est glissé d'une application vers le bureau, une coupure est créée, qui contient les données contenues dans l'item glissé. Si des sélections discontinues sont glissées depuis une source vers le Finder, des coupures séparées sont créées pour chaque item sélectionné.

Votre application doit fournir des représentations (formats, comme TEXT, PICT, des formats natifs) différentes pour assurer la flexibilité avec des destinations différentes. Quelles que soient les représentations qui sont stockées, l'intégrité des données doit être conservée : une coupure, ramenée à sa source, doit être identique à l'item original.


Mes commentaires :

Cette section est (logiquement) dans la même veine que la précédente consacrée à l'édition de texte. Un luxe de détails très précis sur le comportement du Glisser-Déposer dans toutes les circonstances possibles. Bien que ces considérations soient d'abord destinées aux programmeurs, je crois qu'un utilisateur lambda y apprendra beaucoup de choses : en fait, cela l'aidera à prendre conscience d'opérations qu'il a toujours faites machinalement sans se poser de questions, et à comprendre pourquoi cela se passe (et doit se passer) ainsi.

Du grand art, digne d'Apple.