Quando um usuário clica com o botão direito do mouse (ou toca nele e o mantém pressionado) em um bloco ou espaço de trabalho, um menu de contexto com outras ações é mostrado. É possível configurar esse menu de contexto para mostrar mais opções ou remover as opções padrão. Neste guia, explicamos como adicionar uma opção personalizada a todos os blocos ou todos os espaços de trabalho. Se você quiser mudar o menu de contexto para apenas um tipo de bloco, consulte as informações na página de blocos personalizados.
API do menu de contexto
A classe ContextMenuRegistry
contém métodos para registrar, cancelar o registro
e receber todas as opções do menu de contexto. A classe é um singleton, então os métodos precisam ser chamados no objeto Blockly.ContextMenuRegistry.registry
em vez de criar uma nova instância por conta própria. A classe ContextMenu
chama o
método getContextMenuItems
sempre que um menu de contexto é mostrado. Se o
bloco ou espaço de trabalho tiver uma função customContextMenu
, ele será chamado posteriormente para
modificar a lista de opções.
Como adicionar opções personalizadas
Cada opção de menu no registro tem várias propriedades:
callback
: uma função chamada quando a opção do menu é clicada.scopeType
: um deBlockly.ContextMenuRegistry.ScopeType.BLOCK
ouBlockly.ContextMenuRegistry.ScopeType.WORKSPACE
para onde essa opção precisa ser exibida. Se uma opção precisar ser mostrada para espaços de trabalho e blocos, ela deverá ser registrada uma vez para cada scopeType.displayText
: uma string ou HTML ou uma função que retorna um dos primeiros. Determina o texto mostrado no menu.preconditionFn
: função que retornaenabled
,disabled
ouhidden
para determinar se e como a opção de menu será renderizada.weight
: um número que determina a ordem de classificação da opção. As opções com ponderações mais altas aparecem mais tarde no menu de contexto.id
: um ID de string exclusivo para a opção.
Cada uma das funções callback
, displayText
(se for uma função) e
preconditionFn
será chamada com um objeto Scope
que contém informações
sobre o espaço de trabalho ou bloco exato em que ele está sendo clicado. Dessa forma, a opção do menu de contexto
pode fazer referência a propriedades sobre o espaço de trabalho ou o bloco. Por exemplo, a
opção de menu de contexto que permite ao usuário excluir todos os blocos é "Excluir 42
blocos" se o espaço de trabalho tiver 42 blocos. Com o preconditionFn
, uma opção
de menu poderá ser enabled
se alguma propriedade do bloco for verdadeira ou disabled
caso contrário.
Para mais exemplos, consulte o registro das opções padrão do menu de contexto em contextmenu_items.js.
Alterar ou remover opções padrão
É possível cancelar o registro de qualquer opção em
Blockly.ContextMenuRegistry.registry.unregister(id)
. Os códigos das opções padrão estão em contextmenu_items.js.
Para mudar uma opção padrão, chame getItem
com o ID e mude conforme necessário.