İçerik Menüleri

Kullanıcı bir bloğu veya çalışma alanını sağ tıkladığında (veya uzun bastığında) ek işlemler içeren bir içerik menüsü gösterilir. Bu içerik menüsünü ek seçenekleri gösterecek veya varsayılan seçenekleri kaldıracak şekilde yapılandırabilirsiniz. Bu kılavuz, tüm bloklara veya tüm çalışma alanlarına özel bir seçeneğin eklenmesi hakkındadır. İçerik menüsünü yalnızca bir engelleme türü için değiştirmek istiyorsanız özel engellemeler sayfasındaki bilgilere bakın.

Bağlam menüsü API'si

ContextMenuRegistry sınıfı kaydolma, kaydı iptal etme ve tüm içerik menüsü seçeneklerini alma yöntemlerini içerir. Sınıf bir singletondur. Bu nedenle, yeni bir örneği kendiniz örneklendirmek yerine yöntemler Blockly.ContextMenuRegistry.registry nesnesinde çağrılmalıdır. Bir içerik menüsünün gösterilmesi gerektiğinde ContextMenu sınıfı getContextMenuItems yöntemini çağırır. Blok veya çalışma alanında bir customContextMenu işlevi varsa seçenekler listesini değiştirmek için daha sonra çağrılır.

Özel seçenekler ekleme

Kayıt defterindeki her menü seçeneğinin çeşitli özellikleri vardır:

  • callback: Menü seçeneği tıklandığında çağrılan bir işlev.
  • scopeType: Bu seçeneğin gösterilmesi gereken yer için Blockly.ContextMenuRegistry.ScopeType.BLOCK veya Blockly.ContextMenuRegistry.ScopeType.WORKSPACE değerlerinden biri. Hem çalışma alanları hem de bloklar için bir seçeneğin gösterilmesi gerekiyorsa bu seçenek her scopeType için bir kez kaydedilmelidir.
  • displayText: Dize, HTML veya öncekisinden birini döndüren bir işlevdir. Menüde gösterilen metni belirler.
  • preconditionFn: Menü seçeneğinin oluşturulup oluşturulmayacağını ve nasıl görüntüleneceğini belirlemek için enabled, disabled veya hidden değerlerinden birini döndüren işlev.
  • weight: Seçeneğin sıralama düzenini belirleyen sayı. Daha yüksek ağırlıklı seçenekler, içerik menüsünde daha sonra görünür.
  • id: Seçeneğin benzersiz dize kimliği.

callback, displayText (işlev ise) ve preconditionFn işlevlerinin her biri, tam olarak tıklanan çalışma alanı veya blok hakkında bilgi içeren bir Scope nesnesiyle çağrılır. Bu şekilde, içerik menüsü seçeneğiniz çalışma alanı veya blokla ilgili özelliklere başvurabilir. Örneğin, çalışma alanı 42 blok içeriyorsa kullanıcının tüm blokları silmesine olanak tanıyan içerik menüsü seçeneğinde "42 bloku sil" yazar. preconditionFn ile engellemenin bir özelliği doğruysa enabled menü seçeneği, aksi takdirde disabled olabilir.

Daha fazla örnek için contextmenu_items.js içinde varsayılan içerik menüsü seçeneklerinin kaydını görebilirsiniz.

Varsayılan seçenekleri değiştirme veya kaldırma

Blockly.ContextMenuRegistry.registry.unregister(id) ile dilediğiniz seçeneğin kaydını iptal edebilirsiniz. Varsayılan seçeneklerin kimlikleri, contextmenu_items.js içindedir.

Varsayılan seçeneği değiştirmek için kimlikle birlikte getItem işlevini çağırın ve kimliği gerektiği gibi değiştirin.