blockly > IFocusableTree

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.