O ponto de extensão org.eclipse.ui.bindings
é utilizado para declarar ligações e esquemas. Esquemas são conjuntos de uma ou mais ligações. Uma ligação é um mapeamento entre um determinado grupo de condições, alguma entrada do usuário e um comando acionado.
Todas as ligações requerem um acionador de algum tipo, um contexto no qual elas estão ativas e um esquema no qual existem. Se você não tiver certeza sobre qual contexto fechar, deixe-o em branco. Ele será padronizado para o contexto "org.eclipse.ui.contexts.window"
. Esse contexto indica que a ligação se aplicará em qualquer janela principal do Eclipse. Quando o contexto se torna ativo, a ligação se torna ativa também. Ligações de contextos filhos substituirão ligações de contextos pai. Para obter informações adicionais sobre contextos, consulte o ponto de extensão org.eclipse.ui.contexts
.
Se uma ligação não definir um identificador de comando, ele será um marcador de exclusão. Isso significa que, se todas as condições forem atendidas, ele cancelará qualquer ligação com o mesmo acionador no mesmo contexto. Esse mecanismo pode ser utilizado, por exemplo, para alterar uma ligação em uma plataforma específica.
Um tipo de ligação é uma ligação key
(isto é, um atalho do teclado). Por exemplo, a ligação de Ctrl+C
com Copy
é considerada uma ligação key
. O acionador para uma ligação key é uma seqüência de pressionamentos de teclas.
Um esquema é um grupo dessas ligações em um conjunto que o usuário final pode selecionar. Por exemplo, um usuário pode desejar utilizar o esquema padrão, mas pode também desejar um esquema no estilho Emacs ou um esquema no estilo Brief.
<!ELEMENT extension (scheme , key)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT scheme EMPTY>
<!ATTLIST scheme
id CDATA #REQUIRED
name CDATA #REQUIRED
description CDATA #IMPLIED
parentId CDATA #IMPLIED>
Um esquema é um agrupamento de ligações que um usuário final pode optar por utilizar.
Esquemas podem herdar ligações de um esquema pai. Isso tem o objetivo de facilitar a criação de conjuntos de ligações customizadas por desenvolvedores de plug-ins. Uma ligação ativa definida em um esquema filho sempre substituirá uma ligação ativa em um esquema pai, se eles tiverem o mesmo acionador. Essa técnica é utilizada para fornecer o esquema Emacs no workbench.
<!ATTLIST key
sequence CDATA #REQUIRED
schemeId CDATA #REQUIRED
contextId CDATA "org.eclipse.ui.contexts.window"
commandId CDATA #IMPLIED
platform CDATA #IMPLIED
locale CDATA #IMPLIED>
Uma ligação entre alguma entrada do teclado e a ativação de um comando.
A seqüência de teclas dessa ligação. Essa seqüência de teclas deve consistir em um ou mais pressionamentos de teclas. Pressionamentos de teclas são separados por espaços. Pressionamentos de teclas consistem em um ou mais pressionamentos ao mesmo tempo. A seqüência deve ser de zero ou mais teclas modificadoras e uma outra tecla. As teclas são separadas pelo caractere +
.
As teclas modificadoras reconhecidas são M1
, M2
, M3
, M4
, ALT
, COMMAND
, CTRL
e SHIFT
. As teclas modificadoras "M" são uma maneira independente de plataforma de representar teclas e essas são geralmente preferenciais. M1
é a tecla COMMAND
no MacOS X e a tecla CTRL
na maioria das outras plataformas. M2
é a tecla SHIFT
. M3
é a tecla Option
no MacOS X e a tecla ALT
na maioria das outras plataformas. M4
é a tecla CTRL
no MacOS X e é indefinida em outras plataformas.
A tecla real geralmente é especificada simplesmente como o caractere ASCII, em letra maiúscula. Portanto, por exemplo, F
ou ,
são exemplos dessas teclas. No entanto, existem algumas teclas especiais. As teclas que não têm uma representação ASCII que pode ser impressa. O seguinte é uma lista de teclas especiais atuais: ARROW_DOWN
, ARROW_LEFT
, ARROW_RIGHT
, ARROW_UP
, BREAK
, BS
, CAPS_LOCK
, CR
, DEL
, END
, ESC
, F1
, F2
, F3
, F4
, F5
, F6
, F7
, F8
, F9
, F10
, F11
, F12
, F13
, F14
, F15
, FF
, HOME
, INSERT
, LF
, NUL
, NUM_LOCK
, NUMPAD_0
, NUMPAD_1
, NUMPAD_2
, NUMPAD_3
, NUMPAD_4
, NUMPAD_5
, NUMPAD_6
, NUMPAD_7
, NUMPAD_8
, NUMPAD_9
, NUMPAD_ADD
, NUMPAD_DECIMAL
, NUMPAD_DIVIDE
, NUMPAD_ENTER
, NUMPAD_EQUAL
, NUMPAD_MULTIPLY
, NUMPAD_SUBTRACT
, PAGE_UP
, PAGE_DOWN
, PAUSE
, PRINT_SCREEN
, SCROLL_LOCK
, SPACE
, TAB
e VT
.
Também entendemos alguns nomes alternativos para algumas teclas especiais. Por exemplo, aceitamos que ESC
e ESCAPE
, e CR
, ENTER
e RETURN
são todas a mesma tecla.
Também é altamente recomendável manter a seqüência de teclas curtas. Uma ou duas são o máximo que você deve precisar. Utilize contextos para fornecer significados diferentes a seqüências de teclas em diferentes partes de seu aplicativo. Você não deve utilizar qualquer seqüência de teclas que contenha mais de quatro pressionamentos de teclas, no máximo.
org.eclipse.ui.contexts
. Se ele não for especificado, o padrão será org.eclipse.ui.contexts.window
.O identificador do comando que deve ser executado quando essa ligação é acionada.
Se nenhum identificador de comando for especificado, esse será um marcador de exclusão. Isso significa que qualquer ligação no mesmo contexto com a mesma seqüência, plataforma e código de idioma se tornará inativa quando essa ligação se tornar ativa. Se a plataforma ou código de idioma em uma exclusão não for especificado, ele corresponderá a qualquer plataforma ou código de idioma.
SWT.getPlatform()
. Por exemplo, as seguintes cadeias são consideradas válidas: win32
, gtk
, motif
, carbon
e photon
.Locale.toString()
. Por exemplo, "en"
ou "en_CA"
são entendidos.<!ELEMENT parameter EMPTY>
<!ATTLIST parameter
id CDATA #IMPLIED
value CDATA #IMPLIED>
Um nome e valor de parâmetro que devem ser transmitidos para o comando quando ele é executado. Isso permite que o comando seja qualificado de alguma maneira. Por exemplo, um comando "Show View" deve aceitar o id da visualização como um parâmetro.
<extension point=
"org.eclipse.ui.bindings"
>
<key sequence=
"M2+F5"
commandId=
"commandId"
schemeId=
"default"
contextId=
"windows"
/>
<scheme name=
"Padrão"
description=
"Atalhos padrão para Eclipse"
id=
"default"
/>
</extension>
Não existe nenhuma API pública para definir ligações. Para tentar obter estabilidade para o usuário, as ligações são definidas apenas por meio de pontos de extensão. Se você for um aplicativo RCP, deverá poder substituir esse comportamento no WorkbenchAdvisor
.
Para que as ligações funcionem, você deve ter definido um comando. Para que a ligação funcione, o comando deve ter uma rotina de tratamento ativa. As rotinas de tratamento podem ser registradas de maneira programática. Consulte o ponto de extensão org.eclipse.ui.handlers.
Direitos Autorais (c) 2005 IBM Corporation e outros.
Todos os direitos reservados.
Este programa e os materiais que o acompanham são disponibilizados
sob os termos da Eclipse Public License v1.0 que acompanha esta
distribuição e estão disponíveis no endereço http://www.eclipse.org/legal/epl-v10.html