blockly > IFocusableTree

IFocusableTree 인터페이스

자체 활성/수동 포커스 컨텍스트가 있는 포커스할 수 있는 요소의 트리를 나타냅니다.

포커스는 FocusManager에서 처리하며, 트리 구현은 한 번에 하나의 IFocusableNode에 포커스를 설정할 수 있습니다. 트리 자체에 포커스가 있는 경우 트리의 포커스가 있는 노드는 '활성'으로 간주됩니다(다른 트리에 포커스가 있는 경우 '수동').

포커스는 하나 이상의 트리 간에 공유되며, 각 트리에는 활성 노드 또는 패시브 노드가 정확히 하나씩 있을 수 있습니다. 또한 특정 시점에 전체 페이지에 활성 노드는 하나만 있을 수 있습니다. 수동 포커스의 개념은 이전에 포커스가 설정된 트리로 다시 이동할 때 포커스가 복원되는 위치에 관한 컨텍스트를 사용자에게 제공하는 것입니다.

트리의 현재 포커스가 있는 노드 (수동 또는 활성)가 필요한 경우 FocusableTreeTraverser.findFocusedNode를 사용할 수 있습니다.

이 트리에서 특정 노드를 검색해야 하는 경우 lookUpFocusableNode 또는 FocusableTreeTraverser.findFocusableNodeFor를 사용하세요.

서명:

export interface IFocusableTree 

메서드

메서드 설명
getNestedTrees()

이 트리 아래에 직접 중첩된 모든 트리를 반환합니다.

반환된 트리 목록은 안정적이지 않아도 되지만 반환된 모든 트리는 FocusManager에 등록해야 합니다. 또한 중첩된 트리를 생략하면 포커스가 특정 노드 및 트리에 매핑되는 방식에 영향을 미쳐 사용자에게 혼란을 줄 수 있으므로 실제 중첩된 트리를 반환해야 합니다.

getRestoredFocusableNode(previousNode)

트리 자체에 포커스가 반환될 때 활성 포커스를 받아야 하는 이 트리의 IFocusableNode를 반환합니다.

null을 반환하지 않는 이 메서드의 버전을 구현할 때 트리의 포커스 수명 주기에 관해 고려해야 할 몇 가지 매우 중요한 사항이 있습니다. 1. 노드를 삭제할 수 있으므로 null previousNode는 최초 포커스 상태를 보장하지 않습니다. 2. 이 메서드는 탭 탐색 또는 FocusManager.focusTree()를 통해 트리 자체에 포커스가 있는 경우에만 사용됩니다. 대부분의 경우 이전에 포커스가 설정된 노드가 직접 포커스를 받게 되어 이 메서드는 우회됩니다. 3. 기본 동작 (여기서는 null 반환)에는 이전 노드 (previousNode)를 복원하거나 트리의 루트에 포커스를 맞추는 작업이 포함됩니다. 4. 최근에 상위 트리에서 삭제된 노드에 포커스를 맞추려고 시도하는 경우와 같이 제공된 노드가 더 이상 유효하지 않은 경우가 있습니다. 구현은 포커스가 대체로 이동해야 하는 노드를 특성화하기 위해 노드의 유효성을 확인할 수 있습니다.

이 메서드는 주로 트리 구현에 루트보다 더 나은 기본 노드를 지정하는 수단을 제공하기 위한 것입니다.

getRootFocusableNode()

트리의 포커스를 받을 수 있는 최상위 노드를 반환합니다.

현재 포커스가 설정된 노드가 없는 상황에서 FocusManager가 트리에 포커스를 설정하려는 경우 반환된 노드가 포커스를 받게 됩니다.

lookUpFocusableNode(id)

지정된 요소 ID에 해당하는 IFocusableNode를 반환하거나, 이 트리 내에 해당 ID와 정확히 일치하는 노드가 없거나 ID가 트리의 루트에 해당하는 경우 null을 반환합니다.

중첩된 트리와는 일치하지 않습니다.

onTreeBlur(nextTree)

이전에 이 트리의 포커스가 활성 상태였던 노드가 이제 수동으로 포커스가 설정되고 이 트리의 다른 활성 노드가 이를 대체하지 않는 경우 호출됩니다.

onTreeFocus()와 동일한 구현 제한사항과 고려사항이 적용됩니다.

onTreeFocus(node, previousTree)

이 트리의 노드가 활성 포커스를 받았을 때 호출됩니다.

null previousTree가 반드시 Blockly가 포커스를 처음 받는 것은 아닙니다. 사실 이전 포커스 상태에 관해서는 거의 가정할 수 없습니다. 이전 null 트리는 이 트리에 포커스가 설정되기 전에 Blockly가 활성 포커스를 보유하지 않았음을 나타낼 뿐입니다. 이는 포커스가 Blockly 삽입 div를 종료했기 때문에 발생할 수 있으며, 일시적인 포커스와 같은 다른 경우에도 발생할 수 있습니다.

구현에는 이 메서드와 동일한 제한사항이 있으므로 IFocusableNode.onNodeFocus()를 참고하세요.