כשמשתמש לוחץ לחיצה ימנית (או לוחץ לחיצה) על בלוק או על סביבת עבודה, מוצג תפריט הקשר עם פעולות נוספות. תוכל להגדיר את תפריט ההקשר הזה כדי להציג אפשרויות נוספות או להסיר את אפשרויות ברירת המחדל. המדריך הזה עוסק בהוספת אפשרות בהתאמה אישית לכל הבלוקים או לכל סביבות העבודה. אם רוצים לשנות את תפריט ההקשר רק בסוג אחד של בלוקים, אפשר לקרוא את המידע בדף custom_blocks.
ממשק API של תפריט הקשר
המחלקה ContextMenuRegistry
כוללת שיטות לרישום, לביטול רישום ולקבלת כל האפשרויות של תפריט ההקשר. המחלקה היא singleton, ולכן צריך להפעיל שיטות באובייקט Blockly.ContextMenuRegistry.registry
במקום ליצור מכונה חדשה בעצמכם. המחלקה ContextMenu
מפעילה את השיטה getContextMenuItems
בכל פעם שצריך להציג תפריט הקשר. אם לבלוק או ל-Workspace יש פונקציה customContextMenu
, היא נקראת לאחר מכן כדי לשנות את רשימת האפשרויות.
הוספת אפשרויות מותאמות אישית
לכל אפשרות תפריט במרשם יש מספר מאפיינים:
callback
: פונקציה שנקראת כשלוחצים על אפשרות התפריט.scopeType
: אחת מהאפשרויותBlockly.ContextMenuRegistry.ScopeType.BLOCK
אוBlockly.ContextMenuRegistry.ScopeType.WORKSPACE
שבהן האפשרות הזו צריכה להופיע. אם אמורה להיות אפשרות להציג גם סביבת עבודה וגם בלוקים, יש לרשום אותה פעם אחת לכל scopeType.displayText
: מחרוזת, או HTML, או פונקציה שמחזירה אחד מהשניים. ההגדרה הזו קובעת את הטקסט שיוצג בתפריט.preconditionFn
: פונקציה שמחזירה אחד מהערכיםenabled
,disabled
אוhidden
כדי לקבוע אם ואיך להציג את האפשרות בתפריט.weight
: מספר שקובע את סדר המיון של האפשרות. אפשרויות עם משקלים גבוהים יותר יופיעו מאוחר יותר בתפריט ההקשר.id
: מזהה מחרוזת ייחודי לאפשרות.
תתבצע קריאה לכל אחת מהפונקציות callback
, displayText
(אם פונקציה) ו-preconditionFn
באמצעות אובייקט Scope
שמכיל מידע על סביבת העבודה או הבלוק המדויקים שעליהם לוחצים. כך, אפשרות תפריט ההקשר יכולה להפנות למאפיינים של סביבת העבודה או הבלוק. לדוגמה, באפשרות התפריט 'הקשר' שמאפשרת למשתמש למחוק את כל הבלוקים, מופיעה ההודעה 'Delete 42blocks' (מחיקת 42 בלוקים) אם סביבת העבודה מכילה 42 בלוקים. עם preconditionFn
, האפשרות בתפריט יכולה להיות enabled
אם מאפיין מסוים של הבלוק הוא True, או disabled
אם לא.
לדוגמאות נוספות, ניתן לראות רישום של אפשרויות ברירת המחדל לתפריט ההקשר ב-contextmenu_items.js.
שינוי או הסרה של אפשרויות ברירת מחדל
אפשר לבטל רישום של כל אפשרות באמצעות Blockly.ContextMenuRegistry.registry.unregister(id)
. המזהים של אפשרויות ברירת המחדל נמצאים ב-contextmenu_items.js.
כדי לשנות אפשרות ברירת מחדל, צריך להתקשר למספר getItem
עם המזהה ולשנות אותו לפי הצורך.