Trình đơn ngữ cảnh

Khi người dùng nhấp chuột phải (hoặc nhấn và giữ) vào một khối hoặc không gian làm việc, một trình đơn theo bối cảnh cùng các thao tác khác sẽ xuất hiện. Bạn có thể định cấu hình trình đơn theo bối cảnh này để hiển thị các tuỳ chọn bổ sung hoặc để xoá các tuỳ chọn mặc định. Hướng dẫn này trình bày cách thêm tuỳ chọn tuỳ chỉnh vào tất cả các khối hoặc tất cả không gian làm việc. Nếu bạn chỉ muốn thay đổi trình đơn theo bối cảnh cho một loại quy tắc chặn, hãy xem thông tin trên trang chặn tuỳ chỉnh.

API trình đơn theo bối cảnh

Lớp ContextMenuRegistry chứa các phương thức để đăng ký, huỷ đăng ký và nhận tất cả tuỳ chọn trình đơn theo bối cảnh. Lớp này là một singleton, vì vậy, các phương thức phải được gọi trên đối tượng Blockly.ContextMenuRegistry.registry thay vì tự tạo thực thể mới. Lớp ContextMenu gọi phương thức getContextMenuItems bất cứ khi nào trình đơn theo bối cảnh hiển thị. Nếu khối hoặc không gian làm việc có hàm customContextMenu, hàm này sẽ được gọi tiếp để sửa đổi danh sách tuỳ chọn.

Thêm lựa chọn tuỳ chỉnh

Mỗi tuỳ chọn trình đơn trong sổ đăng ký có một số thuộc tính:

  • callback: Một hàm được gọi khi người dùng nhấp vào tuỳ chọn trong trình đơn.
  • scopeType: Một trong số Blockly.ContextMenuRegistry.ScopeType.BLOCK hoặc Blockly.ContextMenuRegistry.ScopeType.WORKSPACE để hiển thị tuỳ chọn này. Nếu một lựa chọn xuất hiện cho cả không gian làm việc và khối, thì bạn phải đăng ký lựa chọn đó một lần cho mỗi scopeType.
  • displayText: Một chuỗi hoặc HTML hoặc một hàm trả về một trong hai kiểu trước đó. Xác định văn bản hiển thị trong trình đơn.
  • preconditionFn: Hàm trả về một trong các giá trị enabled, disabled hoặc hidden để xác định xem có nên hiển thị tuỳ chọn trên trình đơn hay không và hiển thị như thế nào.
  • weight: Một số xác định thứ tự sắp xếp của tuỳ chọn. Các tuỳ chọn có trọng số cao hơn sẽ xuất hiện sau trong trình đơn theo bối cảnh.
  • id: Mã nhận dạng chuỗi duy nhất cho tuỳ chọn.

Mỗi hàm callback, displayText (nếu là hàm) và preconditionFn sẽ được gọi bằng một đối tượng Scope chứa thông tin về không gian làm việc hoặc khối chính xác đang được nhấp vào. Bằng cách này, tuỳ chọn trình đơn theo bối cảnh có thể tham chiếu các thuộc tính về không gian làm việc hoặc khối. Ví dụ: tuỳ chọn trình đơn theo bối cảnh cho phép người dùng xoá tất cả các khối sẽ hiển thị "Xoá 42 khối" nếu không gian làm việc chứa 42 khối. Với preconditionFn, tuỳ chọn trình đơn có thể là enabled nếu một số thuộc tính của khối là true hoặc disabled nếu không.

Để biết thêm ví dụ, bạn có thể xem việc đăng ký các tuỳ chọn trình đơn theo bối cảnh mặc định trong contextmenu_items.js.

Thay đổi hoặc xoá tuỳ chọn mặc định

Bạn có thể huỷ đăng ký bất kỳ tuỳ chọn nào với Blockly.ContextMenuRegistry.registry.unregister(id). Mã nhận dạng cho các tuỳ chọn mặc định nằm trong contextmenu_items.js.

Để thay đổi tuỳ chọn mặc định, hãy gọi getItem kèm theo mã nhận dạng và thay đổi nếu cần.