blockly > IFocusableTree

อินเทอร์เฟซ IFocusableTree

แสดงต้นไม้ของเอลิเมนต์ที่โฟกัสได้ซึ่งมีบริบทโฟกัสที่ใช้งานอยู่/ไม่ได้ใช้งานของตนเอง

โปรดทราบว่า FocusManager จะจัดการโฟกัส และการใช้งานต้นไม้จะโฟกัส IFocusableNode ได้สูงสุดครั้งละ 1 รายการ หากแผนภูมิเองมีโฟกัส ระบบจะถือว่าโหนดที่โฟกัสของแผนภูมิ "ทำงานอยู่" ("ไม่ได้ทำงานอยู่" หากแผนภูมิอื่นมีโฟกัส)

ระบบจะแชร์โฟกัสระหว่างต้นไม้อย่างน้อย 1 ต้น โดยที่แต่ละต้นจะมีโหนดที่ใช้งานอยู่หรือไม่ได้ใช้งานอยู่เพียง 1 โหนด (และจะมีโหนดที่ใช้งานอยู่ได้เพียง 1 โหนดในทั้งหน้าเว็บในช่วงเวลาหนึ่งๆ) แนวคิดของโหมดโฟกัสแบบพาสซีฟคือการให้บริบทแก่ผู้ใช้ว่าโฟกัสจะกลับมาอยู่ที่ใดเมื่อไปยังส่วนที่เป็นต้นไม้ซึ่งโฟกัสไว้ก่อนหน้านี้

โปรดทราบว่าหากต้องการโหนดที่โฟกัสอยู่ในปัจจุบันของต้นไม้ (แบบพาสซีฟหรือแอ็กทีฟ) คุณสามารถใช้ FocusableTreeTraverser.findFocusedNode ได้

โปรดทราบว่าหากต้องการดึงข้อมูลโหนดที่เฉพาะเจาะจงสำหรับต้นไม้นี้ ให้ใช้ lookUpFocusableNode หรือ FocusableTreeTraverser.findFocusableNodeFor

ลายเซ็น:

export interface IFocusableTree 

เมธอด

วิธีการ คำอธิบาย
getNestedTrees()

แสดงผลต้นไม้ที่ฝังอยู่โดยตรงทั้งหมดภายใต้ต้นไม้นี้

โปรดทราบว่ารายการต้นไม้ที่แสดงผลไม่จำเป็นต้องเป็นรายการที่สมบูรณ์ แต่ต้นไม้ทั้งหมดที่แสดงผลต้องได้รับการลงทะเบียนกับ FocusManager นอกจากนี้ การดำเนินการนี้ต้องแสดงผลต้นไม้ที่ฝังอยู่จริงเนื่องจากการละเว้นต้นไม้ที่ฝังอยู่จะส่งผลต่อวิธีที่การเปลี่ยนแปลงโฟกัสแมปกับโหนดและต้นไม้ที่เฉพาะเจาะจง ซึ่งอาจทำให้ผู้ใช้สับสน

getRestoredFocusableNode(previousNode)

แสดงผล IFocusableNode ของต้นไม้นี้ที่ควรได้รับโฟกัสที่ใช้งานอยู่เมื่อต้นไม้ได้รับโฟกัสกลับ

หมายเหตุสำคัญบางอย่างที่ควรพิจารณาเกี่ยวกับวงจรโฟกัสของต้นไม้เมื่อใช้เมธอดเวอร์ชันนี้ที่ไม่แสดงผลลัพธ์เป็น Null มีดังนี้ 1. previousNode ที่ Null ไม่ได้รับประกันสถานะโฟกัสครั้งแรกเนื่องจากสามารถลบโหนดได้ 2. เมธอดนี้จะใช้ก็ต่อเมื่อโฟกัสที่ต้นไม้เอง ไม่ว่าจะผ่านการไปยังส่วนต่างๆ ของแท็บหรือผ่าน FocusManager.focusTree() ในหลายกรณี ระบบจะโฟกัสที่โหนดที่โฟกัสไว้ก่อนหน้านี้โดยตรงแทน ซึ่งจะข้ามเมธอดนี้ 3. ลักษณะการทำงานเริ่มต้น (เช่น แสดงผลเป็นค่าว่างที่นี่) เกี่ยวข้องกับการคืนค่าโหนดก่อนหน้า (previousNode) หรือโฟกัสที่รูทของต้นไม้ 4. บางครั้งโหนดที่ระบุอาจใช้งานไม่ได้แล้ว เช่น ในกรณีที่พยายามโฟกัสโหนดที่เพิ่งถูกนำออกจากต้นไม้หลัก การติดตั้งใช้งานสามารถตรวจสอบความถูกต้องของโหนดเพื่อกำหนดให้โหนดใดเป็นโหนดที่โฟกัสควรเปลี่ยนไปใช้

วิธีการนี้มีจุดประสงค์หลักเพื่อให้การติดตั้งใช้งานต้นไม้มีวิธีระบุโหนดเริ่มต้นที่ดีกว่ารูท

getRootFocusableNode()

แสดงผลโหนดที่โฟกัสได้ระดับบนสุดของต้นไม้

คาดว่าโหนดที่แสดงผลจะได้รับการโฟกัสในกรณีที่ FocusManager ต้องการโฟกัสต้นไม้ในสถานการณ์ที่ไม่มีโหนดที่โฟกัสอยู่

lookUpFocusableNode(id)

แสดงผล IFocusableNode ที่สอดคล้องกับรหัสองค์ประกอบที่ระบุ หรือแสดงผลเป็น Null หากไม่มีโหนดที่ตรงกันภายในต้นไม้นี้ซึ่งมีรหัสดังกล่าว หรือหากรหัสนั้นตรงกับรูทของต้นไม้

รายการนี้จะไม่จับคู่กับต้นไม้ที่ฝังอยู่

onTreeBlur(nextTree)

เรียกใช้เมื่อโฮสต์ที่โฟกัสอยู่ก่อนหน้านี้ของต้นไม้นี้เปลี่ยนเป็นโฟกัสแบบพาสซีฟและไม่มีโฮสต์อื่นของต้นไม้นี้มาแทนที่

ซึ่งมีข้อจํากัดในการใช้งานและข้อควรพิจารณาเหมือนกับ onTreeFocus()

onTreeFocus(node, previousTree)

เรียกใช้เมื่อโหนดของต้นไม้นี้ได้รับโฟกัสที่ใช้งานอยู่

โปรดทราบว่า previousTree ที่ Null ไม่ได้หมายความว่านี่เป็นครั้งแรกที่ Blockly ได้รับโฟกัส อันที่จริงแล้ว เราไม่สามารถคาดเดาอะไรได้มากนักเกี่ยวกับสถานะโฟกัสก่อนหน้า เนื่องจากต้นไม้ Null ก่อนหน้าบ่งชี้เพียงว่า Blockly ไม่ได้โฟกัสอยู่ก่อนที่จะมีโฟกัสที่ต้นไม้นี้ (ซึ่งอาจเกิดขึ้นเนื่องจากโฟกัสออกจาก div การแทรก Blockly หรือในกรณีอื่นๆ เช่น โฟกัสชั่วคราว)

โปรดดู IFocusableNode.onNodeFocus() เนื่องจากการใช้งานมีข้อจํากัดเหมือนกับเมธอดดังกล่าว