Interface IFocusableTree
Representa uma árvore de elementos focalizáveis com o próprio contexto de foco ativo/passivo.
O foco é gerenciado pelo FocusManager, e as implementações de árvore podem ter no máximo um IFocusableNode focado por vez. Se a árvore tiver foco, o nó em foco dela será considerado "ativo" (ou "passivo", se outra árvore tiver foco).
O foco é compartilhado entre uma ou mais árvores, em que cada árvore pode ter exatamente um nó ativo ou passivo (e apenas um nó ativo pode existir em toda a página a qualquer momento). A ideia do foco passivo é fornecer contexto aos usuários sobre onde o foco será restaurado ao navegar de volta para uma árvore em foco anteriormente.
Se o nó de foco atual da árvore (passivo ou ativo) for necessário, o método FocusableTreeTraverser.findFocusedNode poderá ser usado.
Se for necessário recuperar nós específicos para essa árvore, use lookUpFocusableNode ou FocusableTreeTraverser.findFocusableNodeFor.
Signature:
export interface IFocusableTree
Métodos
Método | Descrição |
---|---|
getNestedTrees() | Retorna todas as árvores diretamente aninhadas abaixo desta árvore. A lista de árvores retornada não precisa ser estável, mas todas as árvores retornadas *precisam* ser registradas no FocusManager. Além disso, ele precisa retornar árvores aninhadas reais, porque omitir uma árvore aninhada afeta como as mudanças de foco são mapeadas para um nó específico e a árvore dele, o que pode confundir o usuário. |
getRestoredFocusableNode(previousNode) | Retorna o IFocusableNode dessa árvore que vai receber o foco ativo quando o foco for retornado para ela. Há algumas observações muito importantes sobre o ciclo de vida de foco de uma árvore ao implementar uma versão desse método que não retorna null: 1. Um previousNode nulo não garante o estado de foco pela primeira vez, porque os nós podem ser excluídos. 2. Esse método só é usado quando a árvore está em foco, seja pela navegação de guias ou pelo método FocusManager.focusTree(). Em muitos casos, o nó focado anteriormente é focado diretamente, o que ignora esse método. 3. O comportamento padrão (ou seja, retornar nulo aqui) envolve restaurar o nó anterior (previousNode) ou focar a raiz da árvore. 4. Às vezes, o nó fornecido pode não ser mais válido, como no caso de uma tentativa de focar um nó que foi removido recentemente da árvore pai. As implementações podem verificar a validade do nó para especializar o nó para o qual o foco deve ser redirecionado. Esse método tem como objetivo principal fornecer às implementações de árvore um meio de especificar um nó padrão melhor do que a raiz. |
getRootFocusableNode() | Retorna o nó de nível superior com foco da árvore. O nó retornado será focado nos casos em que o FocusManager quiser focar uma árvore em uma situação em que ele não tem um nó focado. |
lookUpFocusableNode(id) | Retorna o IFocusableNode correspondente ao ID do elemento especificado ou null se não houver um nó exato nessa árvore com esse ID ou se o ID corresponder à raiz da árvore. Isso nunca vai corresponder a árvores aninhadas. |
onTreeBlur(nextTree) | É chamado quando o nó anteriormente focado ativamente dessa árvore agora está focado passivamente e não há outro nó ativo dessa árvore ocupando o lugar dele. Ele tem as mesmas considerações e restrições de implementação que onTreeFocus(). |
onTreeFocus(node, previousTree) | Chamado quando um nó dessa árvore recebe o foco ativo. Uma previousTree nula não indica necessariamente que esta é a primeira vez que o Blockly está recebendo foco. Na verdade, poucas suposições podem ser feitas sobre o estado de foco anterior, já que uma árvore nula anterior simplesmente indica que o Blockly não manteve o foco ativo antes que essa árvore fosse focalizada. Isso pode acontecer devido ao foco sair do div de injeção do Blockly ou em outros casos, como o foco temporário. Consulte IFocusableNode.onNodeFocus() porque as implementações têm as mesmas restrições que esse método. |