blockly > IFocusableTree

Interface IFocusableTree

Représente une arborescence d'éléments sélectionnables avec son propre contexte de sélection actif/passif.

Notez que la sélection est gérée par FocusManager, et que les implémentations d'arborescences ne peuvent avoir qu'une seule IFocusableNode sélectionnée à la fois. Si l'arbre lui-même est sélectionné, le nœud sélectionné de l'arbre est considéré comme "actif" ("passif" si un autre arbre est sélectionné).

Le focus est partagé entre une ou plusieurs arborescences, où chaque arborescence peut avoir exactement un seul nœud actif ou passif (et un seul nœud actif peut exister sur l'ensemble de la page à un moment donné). L'idée de la sélection passive est de fournir aux utilisateurs un contexte sur l'endroit où leur sélection sera restaurée lorsqu'ils reviendront à un arbre précédemment sélectionné.

Notez que si le nœud actuellement sélectionné (passif ou actif) de l'arborescence est nécessaire, vous pouvez utiliser FocusableTreeTraverser.findFocusedNode.

Notez que si des nœuds spécifiques doivent être récupérés pour cet arbre, utilisez lookUpFocusableNode ou FocusableTreeTraverser.findFocusableNodeFor.

Signature :

export interface IFocusableTree 

Méthodes

Method Description
getNestedTrees()

Renvoie tous les arbres directement imbriqués sous cet arbre.

Notez que la liste d'arbres renvoyée n'a pas besoin d'être stable, mais que tous les arbres renvoyés doivent être enregistrés auprès de FocusManager. De plus, cette méthode doit renvoyer des arbres imbriqués réels, car l'omission d'un arbre imbriqué affectera la façon dont les changements de focus sont mappés sur un nœud spécifique et son arbre, ce qui peut prêter à confusion pour l'utilisateur.

getRestoredFocusableNode(previousNode)

Renvoie l'élément IFocusableNode de cet arbre qui doit recevoir la sélection active lorsque l'arbre lui-même est sélectionné.

Vous devez prendre en compte certaines remarques très importantes concernant le cycle de vie de la sélection d'un arbre lorsque vous implémentez une version de cette méthode qui ne renvoie pas la valeur null: 1. Un previousNode nul ne garantit pas l'état de focus initial, car les nœuds peuvent être supprimés. 2. Cette méthode n'est utilisée que lorsque l'arbre lui-même est sélectionné, soit via la navigation par onglet, soit via FocusManager.focusTree(). Dans de nombreux cas, le nœud précédemment sélectionné est directement sélectionné, ce qui contourne cette méthode. 3. Le comportement par défaut (c'est-à-dire renvoyer la valeur nulle ici) implique de restaurer le nœud précédent (previousNode) ou de mettre en surbrillance la racine de l'arborescence. 4. Le nœud fourni peut parfois ne plus être valide, par exemple lorsqu'une tentative est faite pour mettre en surbrillance un nœud qui a été récemment supprimé de son arbre parent. Les implémentations peuvent vérifier la validité du nœud afin de spécialiser le nœud auquel le focus doit revenir.

Cette méthode vise principalement à fournir aux implémentations d'arbres les moyens de spécifier un meilleur nœud par défaut que leur racine.

getRootFocusableNode()

Renvoie le nœud de niveau supérieur pouvant être sélectionné de l'arborescence.

Le nœud renvoyé doit être sélectionné lorsque FocusManager souhaite sélectionner un arbre dans une situation où il n'a pas actuellement de nœud sélectionné.

lookUpFocusableNode(id)

Renvoie l'élément IFocusableNode correspondant à l'ID d'élément spécifié, ou "null" s'il n'existe pas de nœud exact dans cet arbre avec cet ID ou si l'ID correspond à la racine de l'arbre.

Cette recherche ne correspondra jamais aux arbres imbriqués.

onTreeBlur(nextTree)

Appelé lorsque le nœud de cet arbre qui était précédemment actif est maintenant passif et qu'aucun autre nœud actif de cet arbre ne le remplace.

Cette méthode présente les mêmes restrictions et considérations d'implémentation que onTreeFocus().

onTreeFocus(node, previousTree)

Appelée lorsqu'un nœud de cet arbre a reçu le focus actif.

Notez qu'une valeur nulle pour "previousTree" n'indique pas nécessairement que Blockly est sélectionné pour la première fois. En fait, peu d'hypothèses peuvent être faites sur l'état de focus précédent, car un arbre nul précédent indique simplement que Blockly ne tenait pas la sélection active avant que cet arbre ne soit sélectionné (ce qui peut se produire lorsque la sélection quitte la div d'injection Blockly ou dans d'autres cas, comme la sélection éphémère).

Consultez IFocusableNode.onNodeFocus(), car les implémentations sont soumises aux mêmes restrictions que cette méthode.