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çinBlockly.ContextMenuRegistry.ScopeType.BLOCK
veyaBlockly.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çinenabled
,disabled
veyahidden
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.