blockly > IFocusableTree

ממשק IFocusableTree

מייצג עץ של רכיבים שניתן להתמקד בהם עם הקשר פוקוס פעיל/פסיבי משלו.

חשוב לזכור שהטיפול בפוקוס מתבצע על ידי FocusManager, ובתרחישי הטמעה של עצים יכול להיות פוקוס על IFocusableNode אחד בלבד בכל פעם. אם העץ עצמו נמצא במוקד, הצומת שהמיקוד בו הוא בעץ נחשב ל'פעיל' ('פסיבי' אם עץ אחר נמצא במוקד).

המיקוד משותף בין עץ אחד או יותר, וכל עץ יכול לכלול צומת פעיל או פסיבי אחד בלבד (ויכול להיות רק צומת פעיל אחד בכל הדף בכל רגע נתון). הרעיון של מיקוד פסיבי הוא לספק למשתמשים הקשר לגבי המיקום שבו המיקוד שלהם ישוחזר כשהם מנווטים חזרה לעץ שהיה ממוקד בעבר.

הערה: אם אתם צריכים את הצומת הנוכחי של העץ שמקבל את המיקוד (פסיבי או פעיל), תוכלו להשתמש ב-FocusableTreeTraverser.findFocusedNode.

שימו לב: אם צריך לאחזר צמתים ספציפיים מהעץ הזה, צריך להשתמש ב-lookUpFocusableNode או ב-FocusableTreeTraverser.findFocusableNodeFor.

Signature:

export interface IFocusableTree 

Methods

שיטה תיאור
getNestedTrees()

הפונקציה מחזירה את כל העצים שמוטמעים ישירות מתחת לעץ הזה.

חשוב לזכור שרשימה של עצים שהוחזרה לא חייבת להיות יציבה, אבל כל העצים שהוחזרו *כן* צריכים להיות רשומים ב-FocusManager. בנוסף, הפונקציה הזו חייבת להחזיר עצים מוערמים בפועל, כי השמטה של עץ מוערם תשפיע על האופן שבו שינויים בריכוז ממפים לצומת ספציפי ולעץ שלו, ועשויה לבלבל את המשתמשים.

getRestoredFocusableNode(previousNode)

הפונקציה מחזירה את ה-IFocusableNode של העץ הזה, שצריך לקבל מיקוד פעיל כשהמיקוד חוזר לעץ עצמו.

יש כמה הערות חשובות מאוד לגבי מחזור החיים של המיקוד בעץ כשמטמיעים גרסה של השיטה הזו שלא מחזירה null: 1. אם הערך של previousNode הוא null, אין ערובה למצב המיקוד בפעם הראשונה כי ניתן למחוק צמתים. 2. המערכת משתמשת בשיטה הזו רק כשהעץ עצמו ממוקד, דרך ניווט באמצעות Tab או דרך FocusManager.focusTree(). במקרים רבים, במקום זאת, המערכת תתמקד ישירות בצומת שהיה ממוקד קודם, ותתעלם מהשיטה הזו. 3. התנהגות ברירת המחדל (כלומר, החזרת null כאן) כוללת שחזור של הצומת הקודם (previousNode) או התמקדות בשורש העץ. 4. לפעמים הצומת שצוין כבר לא תקף, למשל במקרה שמנסים להתמקד בצומת שהוסרה לאחרונה מעץ ההורה שלו. הטמעות יכולות לבדוק את התקינות של הצומת כדי להתאים אישית את הצומת שאליו צריך להעביר את המיקוד.

השיטה הזו מיועדת בעיקר לספק להטמעות של עצים את האמצעים לציין צומת ברירת מחדל טוב יותר מהשורש שלהם.

getRootFocusableNode()

הפונקציה מחזירה את הצומת ברמת העץ העליונה שאפשר להתמקד בו.

הצומת שהחזרה צפויה להתמקד בו במקרים שבהם FocusManager רוצה להתמקד בעץ במצב שבו אין לו כרגע צומת ממוקד.

lookUpFocusableNode(id)

הפונקציה מחזירה את IFocusableNode שתואם למזהה האלמנט שצוין, או ערך null אם אין צומת מדויק בתוך העץ הזה עם המזהה הזה, או אם המזהה תואם לשורש העץ.

הביטוי הזה אף פעם לא יתאים לעצים בתצוגת עץ.

onTreeBlur(nextTree)

הקריאה מתבצעת כשהצומת שהיה ממוקד באופן פעיל בעץ הזה ממוקד עכשיו באופן פסיבי, ואין צומת פעיל אחר בעץ הזה שמחליף אותו.

ל-onTreeFocus() יש את אותן מגבלות והנחיות להטמעה.

onTreeFocus(node, previousTree)

הקריאה מתבצעת כשצומת מסוים בעץ מקבל מיקוד פעיל.

שימו לב ש-previousTree null לא מעיד בהכרח שזו הפעם הראשונה ש-Blockly מקבל את המיקוד. למעשה, קשה להסיק מסקנות לגבי מצב המיקוד הקודם, כי עץ null קודם מציין פשוט ש-Blockly לא החזיק מיקוד פעיל לפני שהעץ הזה הפך לממוקד (מצב שיכול לקרות בגלל שהמיקוד יצא מה-div של הזרקת Blockly, או במקרים אחרים כמו מיקוד זמני).

אפשר לעיין ב-IFocusableNode.onNodeFocus(), כי להטמעות יש את אותן הגבלות כמו לשימוש בשיטה הזו.