blockly > IFocusableTree

IFocusableTree इंटरफ़ेस

यह फ़ोकस किए जा सकने वाले एलिमेंट के ट्री को दिखाता है. इसमें, एलिमेंट के ऐक्टिव/पैसिव फ़ोकस कॉन्टेक्स्ट की जानकारी भी होती है.

ध्यान दें कि फ़ोकस को FocusManager मैनेज करता है. साथ ही, ट्री लागू करने के दौरान एक बार में ज़्यादा से ज़्यादा एक IFocusableNode पर फ़ोकस किया जा सकता है. अगर ट्री पर फ़ोकस है, तो ट्री के फ़ोकस किए गए नोड को 'चालू' माना जाता है. अगर किसी दूसरे ट्री पर फ़ोकस है, तो उस नोड को 'बंद' माना जाता है.

फ़ोकस को एक या उससे ज़्यादा ट्री के बीच शेयर किया जाता है. हर ट्री में सिर्फ़ एक ऐक्टिव या पैसिव नोड हो सकता है. साथ ही, किसी भी समय पूरे पेज पर सिर्फ़ एक ऐक्टिव नोड मौजूद हो सकता है. पैसिव फ़ोकस का मकसद, उपयोगकर्ताओं को यह बताना है कि पहले फ़ोकस किए गए ट्री पर वापस जाने पर, उनका फ़ोकस कहां वापस आ जाएगा.

ध्यान दें कि अगर आपको ट्री के फ़ोकस किए गए मौजूदा नोड (पैसिव या ऐक्टिव) की ज़रूरत है, तो FocusableTreeTraverser.findFocusedNode का इस्तेमाल किया जा सकता है.

ध्यान दें कि अगर इस ट्री के लिए खास नोड वापस लाने की ज़रूरत है, तो lookUpFocusableNode या FocusableTreeTraverser.findFocusableNodeFor का इस्तेमाल करें.

हस्ताक्षर:

export interface IFocusableTree 

तरीके

तरीका ब्यौरा
getNestedTrees()

इस ट्री में सीधे नेस्ट किए गए सभी ट्री दिखाता है.

ध्यान दें कि पेड़ों की लिस्ट में मौजूद पेड़ों के स्टेबल होने की ज़रूरत नहीं है. हालांकि, लिस्ट में मौजूद सभी पेड़ों को FocusManager के साथ रजिस्टर करना ज़रूरी है. इसके अलावा, यह फ़ंक्शन नेस्ट किए गए ट्री दिखाना चाहिए. नेस्ट किए गए किसी ट्री को हटाने से, फ़ोकस के किसी खास नोड और उसके ट्री में बदलाव करने के तरीके पर असर पड़ेगा. इससे उपयोगकर्ता को भ्रम हो सकता है.

getRestoredFocusableNode(previousNode)

इस ट्री का वह IFocusableNode दिखाता है जिस पर ट्री के फ़ोकस पर वापस आने पर, फ़ोकस होना चाहिए.

इस तरीके का ऐसा वर्शन लागू करते समय, ट्री के फ़ोकस लाइफ़साइकल के बारे में कुछ अहम बातें ध्यान में रखनी चाहिए जो null नहीं दिखाता: 1. अगर previousNode की वैल्यू null है, तो यह गारंटी नहीं दी जा सकती कि फ़ोकस पहली बार लागू हुआ है. ऐसा इसलिए, क्योंकि नोड मिटाए जा सकते हैं. 2. इस तरीके का इस्तेमाल सिर्फ़ तब किया जाता है, जब ट्री पर फ़ोकस हो. यह फ़ोकस, Tab नेविगेशन या FocusManager.focusTree() के ज़रिए किया जा सकता है. कई मामलों में, पहले फ़ोकस किए गए नोड पर सीधे फ़ोकस किया जाएगा. इससे यह तरीका काम नहीं करेगा. 3. डिफ़ॉल्ट तरीके (यानी यहां शून्य दिखाना) में, पिछले नोड (previousNode) को वापस लाना या ट्री के रूट पर फ़ोकस करना शामिल है. 4. ऐसा हो सकता है कि दिया गया नोड अब मान्य न हो. जैसे, किसी ऐसे नोड पर फ़ोकस करने की कोशिश करना जिसे हाल ही में उसके पैरंट ट्री से हटाया गया हो. लागू करने की प्रोसेस में, नोड की पुष्टि की जा सकती है, ताकि उस नोड को खास बनाया जा सके जिस पर फ़ोकस वापस आना चाहिए.

इस तरीके का मकसद, ट्री लागू करने के लिए, रूट के बजाय बेहतर डिफ़ॉल्ट नोड तय करने का तरीका बताना है.

getRootFocusableNode()

ट्री का वह टॉप-लेवल नोड दिखाता है जिस पर फ़ोकस किया जा सकता है.

यह उम्मीद की जाती है कि जब FocusManager किसी ऐसे ट्री पर फ़ोकस करना चाहता है जिसमें फ़िलहाल कोई फ़ोकस किया गया नोड नहीं है, तो दिखाए गए नोड पर फ़ोकस किया जाएगा.

lookUpFocusableNode(id)

यह फ़ंक्शन, दिए गए एलिमेंट आईडी से जुड़ा IFocusableNode दिखाता है. अगर इस ट्री में उस आईडी वाला कोई नोड नहीं है या आईडी, ट्री के रूट से जुड़ा है, तो यह फ़ंक्शन null दिखाता है.

यह नेस्ट किए गए ट्री से कभी मैच नहीं होगा.

onTreeBlur(nextTree)

इस फ़ंक्शन को तब कॉल किया जाता है, जब इस ट्री के पहले फ़ोकस किए गए नोड पर अब फ़ोकस नहीं किया जा रहा है और इस ट्री का कोई दूसरा नोड उसकी जगह नहीं ले रहा है.

इसे लागू करने से जुड़ी पाबंदियां और बातें, onTreeFocus() जैसी ही हैं.

onTreeFocus(node, previousTree)

यह तब कॉल किया जाता है, जब इस ट्री के किसी नोड पर फ़ोकस किया जाता है.

ध्यान दें कि अगर previousTree की वैल्यू null है, तो इसका मतलब यह नहीं है कि Blockly को पहली बार फ़ोकस मिल रहा है. असल में, फ़ोकस की पिछली स्थिति के बारे में कुछ अनुमान लगाए जा सकते हैं, क्योंकि पिछला शून्य पेड़ सिर्फ़ यह दिखाता है कि इस पेड़ पर फ़ोकस होने से पहले, Blockly में फ़ोकस नहीं था. ऐसा, Blockly इंजेक्शन डिव से फ़ोकस बाहर निकलने या कुछ समय के लिए फ़ोकस होने जैसे अन्य मामलों की वजह से हो सकता है.

IFocusableNode.onNodeFocus() देखें, क्योंकि लागू करने पर उसी तरीके की पाबंदियां होती हैं.