Um escopo é utilizado para definir o contexto apropriado da ligação de teclas. O workbench define dois escopos de ligação de teclas:
O escopo dita quando uma ligação de teclas (na configuração de teclas ativa) é considerada ativa. O escopo é declarado na marcação da ligação de teclas:
... <keyBinding string="Ctrl+S" scope="org.eclipse.ui.globalScope" command="org.eclipse.ui.file.save" configuration="org.eclipse.ui.defaultAcceleratorConfiguration"> </keyBinding> ... <keyBinding string="Ctrl+X Ctrl+S" scope="org.eclipse.ui.globalScope" command="org.eclipse.ui.file.save" configuration="org.eclipse.ui.emacsAcceleratorConfiguration"> </keyBinding>
Como o escopo atual é determinado? Por padrão, o workbench opera em um escopo global. Quando um editor de texto se torna ativo, ele é responsável pela reinicialização do escopo para o escopo do editor de texto. Tudo isso é tratado pelo código do workbench e do editor de texto. A maioria dos plug-ins precisa apenas determinar o escopo apropriado para suas ligações de teclas ao defini-las.
Quando um plug-in define uma ligação de teclas, normalmente a atribui a um escopo existente. No entanto, se seu plug-in definir um novo estilo de editor, é possível que você também queira introduzir um novo escopo para ligações de teclas. Por exemplo, um editor com várias páginas pode ter escopos diferentes para cada página no editor.
Ao definir o novo escopo, cabe ao plug-in assegurar que os escopos adequados sejam definidos no IKeyBindingService conforme apropriado para seu editor. Uma discussão completa de como isso funciona está além do escopo desta documentação. Consulte IKeyBindingService e seus implementadores para obter detalhes adicionais.
Os plug-ins definem seus escopos dentro do ponto de extensão org.eclipse.ui.commands. A marcação do workbench para os escopos global e de editor de texto está localizada na parte inferior da definição da extensão:
<extension point="org.eclipse.ui.commands"> ... <scope name="%scope.global.name" description="%scope.global.description" id="org.eclipse.ui.globalScope"> </scope> <scope name="%scope.text.name" parent="org.eclipse.ui.globalScope" description="%scope.text.description" id="org.eclipse.ui.textEditorScope"> </scope> </extension>