IFocusableTree arayüzü
Kendi etkin/pasif odak bağlamına sahip odaklanabilir öğe ağacını temsil eder.
Odak, FocusManager tarafından yönetilir ve ağaç uygulamalarında aynı anda en fazla bir IFocusableNode odaklanabilir. Ağacın kendisi odaktaysa ağacın odaklı düğümü "etkin" (başka bir ağaç odaktaysa "etkin değil") olarak kabul edilir.
Odak, bir veya daha fazla ağaç arasında paylaşılır. Her ağaçta tam olarak bir etkin veya pasif düğüm olabilir (ve herhangi bir zamanda sayfanın tamamında yalnızca bir etkin düğüm bulunabilir). Pasif odak fikri, kullanıcılara daha önce odaklanılan bir ağaca geri döndüklerinde odaklarının nereye geri yükleneceği konusunda bağlam bilgisi sağlamaktır.
Ağacın mevcut odaklı düğümüne (pasif veya etkin) ihtiyaç duyuluyorsa FocusableTreeTraverser.findFocusedNode işlevinin kullanılabileceğini unutmayın.
Bu ağaç için belirli düğümlerin alınması gerekiyorsa lookUpFocusableNode veya FocusableTreeTraverser.findFocusableNodeFor işlevini kullanmanız gerektiğini unutmayın.
İmza:
export interface IFocusableTree
Yöntemler
Yöntem | Açıklama |
---|---|
getNestedTrees() | Bu ağacın altındaki doğrudan iç içe yerleştirilmiş tüm ağaçları döndürür. Döndürülen ağaç listesinin kararlı olması gerekmez ancak döndürülen tüm ağaçların FocusManager'a kaydedilmesi gerekir. Ayrıca, iç içe yerleştirilmiş bir ağacın atlanması, odak değişikliklerinin belirli bir düğümle ve ağacıyla nasıl eşleneceğini etkileyeceğinden, bu işlev gerçek iç içe yerleştirilmiş ağaçları döndürmelidir. Bu da kullanıcıların kafasını karıştırabilir. |
getRestoredFocusableNode(previousNode) | Ağaca odaklanıldığında etkin odak alması gereken bu ağacın IFocusableNode öğesini döndürür. Bu yöntemin null döndürmeyen bir sürümünü uygularken ağacın odak yaşam döngüsü hakkında dikkate alınması gereken bazı çok önemli notlar vardır: 1. Düğümler silinebileceğinden, önceki düğüm null olduğunda ilk kez odaklanma durumu garanti edilmez. 2. Bu yöntem yalnızca sekme gezinme veya FocusManager.focusTree() aracılığıyla ağacın kendisi odaklandığında kullanılır. Çoğu durumda, daha önce odaklanan düğüm doğrudan odaklanır ve bu yöntem atlanır. 3. Varsayılan davranış (yani burada null döndürülmesi), önceki düğümü (previousNode) geri yüklemeyi veya ağacın köküne odaklanmayı içerir. 4. Sağlanan düğüm bazen geçerli olmayabilir. Örneğin, kısa süre önce üst ağacından kaldırılmış bir düğüme odaklanmaya çalışıldığında bu durumla karşılaşılabilir. Uygulamalar, odağın geri dönmesi gereken düğümü özelleştirmek için düğümün geçerliliğini kontrol edebilir. Bu yöntemin amacı, ağaç uygulamalarında kökten daha iyi bir varsayılan düğüm belirtme olanağı sağlamaktır. |
getRootFocusableNode() | Ağacın üst düzey odaklanılabilir düğümünü döndürür. FocusManager'ın şu anda odaklanmış bir düğümü olmadığı bir durumda bir ağaca odaklanmak istediği durumlarda, döndürülen düğümün odaklanacağı beklenir. |
lookUpFocusableNode(id) | Belirtilen öğe kimliğine karşılık gelen IFocusableNode öğesini döndürür. Bu ağaçta bu kimliğe sahip tam bir düğüm yoksa veya kimlik ağacın köküne karşılık geliyorsa null döndürülür. Bu, iç içe yerleştirilmiş ağaçlarla hiçbir zaman eşleşmez. |
onTreeBlur(nextTree) | Bu ağacın daha önce etkin olarak odaklanan düğümü artık pasif olarak odaklandığında ve bu ağacın yerini alan başka bir etkin düğüm olmadığında çağrılır. Bu işlevin uygulama kısıtlamaları ve dikkat edilmesi gereken noktalar, onTreeFocus() işleviyle aynıdır. |
onTreeFocus(node, previousTree) | Bu ağacın bir düğümü etkin odağa alındığında çağrılır. previousTree değerinin null olması, Blockly'nin ilk kez odaklanmakta olduğunu göstermeyebilir. Aslında, önceki bir null ağacı yalnızca Blockly'nin bu ağaç odaklanmadan önce etkin odağa sahip olmadığını belirttiği için önceki odak durumu hakkında çok az varsayım yapılabilir (odak, Blockly enjeksiyon div'inden çıktığında veya geçici odak gibi diğer durumlarda ortaya çıkabilir). Uygulamalar bu yöntemle aynı kısıtlamalara sahip olduğundan IFocusableNode.onNodeFocus() yöntemine bakın. |