blockly > IFocusableTree

Interfaccia IFocusableTree

Rappresenta una struttura ad albero di elementi attivabili con il proprio contesto di attivazione attivo/passivo.

Tieni presente che lo stato attivo viene gestito da FocusManager e che le implementazioni dell'albero possono avere al massimo un IFocusableNode attivo alla volta. Se l'albero stesso è attivo, il nodo attivo dell'albero è considerato "attivo" ("passivo" se è attivo un altro albero).

Lo stato attivo è condiviso tra uno o più alberi, in cui ogni albero può avere esattamente un nodo attivo o passivo (e in un determinato momento può esistere un solo nodo attivo in tutta la pagina). L'idea dell'attenzione passiva è fornire agli utenti il contesto in cui verrà ripristinato il loro stato attivo quando torneranno a un albero precedentemente attivo.

Tieni presente che, se è necessario il nodo attualmente attivo (passivo o attivo) dell'albero, puoi utilizzare FocusableTreeTraverser.findFocusedNode.

Tieni presente che, se è necessario recuperare nodi specifici per questa struttura ad albero, utilizza lookUpFocusableNode o FocusableTreeTraverser.findFocusableNodeFor.

Firma:

export interface IFocusableTree 

Metodi

Metodo Descrizione
getNestedTrees()

Restituisce tutti gli alberi nidificati direttamente sotto questo albero.

Tieni presente che l'elenco di alberi restituito non deve essere stabile, ma tutti gli alberi restituiti *devono* essere registrati in FocusManager. Inoltre, deve restituire alberi nidificati effettivi, poiché l'omissione di un albero nidificato influisce sulla mappatura delle modifiche dell'attenzione a un nodo specifico e al relativo albero, con il rischio di creare confusione negli utenti.

getRestoredFocusableNode(previousNode)

Restituisce l'oggetto IFocusableNode di questo albero che deve ricevere l'attenzione attiva quando l'albero stesso viene attivato.

Esistono alcune note molto importanti da considerare sul ciclo di vita dell'attenzione di un albero quando si implementa una versione di questo metodo che non restituisce null: 1. Un previousNode null non garantisce lo stato di primo stato attivo perché i nodi possono essere eliminati. 2. Questo metodo viene utilizzato solo quando l'albero stesso è attivo, tramite la navigazione tra le schede o tramite FocusManager.focusTree(). In molti casi, verrà attivato direttamente il nodo attivo in precedenza, ignorando questo metodo. 3. Il comportamento predefinito (ovvero il ritorno di null qui) prevede il ripristino del nodo precedente (previousNode) o il posizionamento dell'elemento radice dell'albero. 4. A volte il nodo fornito potrebbe non essere più valido, ad esempio nel caso in cui venga tentato di mettere a fuoco un nodo che è stato rimosso di recente dall'albero principale. Le implementazioni possono verificare la validità del nodo per specializzarlo in base al nodo a cui deve essere applicato il focus.

Questo metodo è in gran parte destinato a fornire alle implementazioni dell'albero i mezzi per specificare un nodo predefinito migliore rispetto al nodo principale.

getRootFocusableNode()

Restituisce il nodo di primo livello dell'albero che può essere attivato.

È previsto che il nodo restituito venga attivato nei casi in cui FocusManager voglia attivare un albero in una situazione in cui non ha attualmente un nodo attivo.

lookUpFocusableNode(id)

Restituisce l'oggetto IFocusableNode corrispondente all'ID elemento specificato oppure null se non esiste un nodo esatto all'interno di questa struttura ad albero con questo ID o se l'ID corrisponde alla radice dell'albero.

Non corrisponderà mai agli alberi nidificati.

onTreeBlur(nextTree)

Viene chiamato quando il nodo precedentemente attivo di questo albero è ora attivo in modo passivo e non c'è nessun altro nodo attivo di questo albero che lo sostituisce.

Ha le stesse limitazioni e considerazioni di implementazione di onTreeFocus().

onTreeFocus(node, previousTree)

Viene chiamato quando un nodo di questa struttura ad albero ha ricevuto lo stato attivo.

Tieni presente che un previousTree null non indica necessariamente che è la prima volta che Blockly riceve lo stato attivo. In effetti, si possono fare poche supposizioni sullo stato di attivazione precedente, poiché un albero nullo precedente indica semplicemente che Blockly non aveva l'attenzione attiva prima che questo albero diventasse attivo (il che può accadere a causa dell'uscita dell'attenzione dal div di inserimento di Blockly o per altri casi come l'attenzione effimera).

Consulta IFocusableNode.onNodeFocus() perché le implementazioni hanno le stesse limitazioni di questo metodo.