Isenção de responsabilidade: o ponto de extensão org.eclipse.ui.menus
no eclipse 3.2 foi implementado parcialmente. No momento, ele não suporta definições ou
extensões de menu ou barra de ferramentas (as extensões de contribuição existentes devem
ser utilizadas para estes). Entretanto, ele é o único mecanismo pelo qual widgets 'trim'
podem ser contribuídos no ambiente de trabalho. Esta seção demonstrará como utilizá-lo
com essa finalidade.
Um widget 'trim' é um controle que se encontra em um local (chamado 'Área de Ajuste') no limite externo da Janela do Ambiente de Trabalho. O exemplo mais comum é a 'linha de status' genérica que quase todas as GUIs colocam ao longo da parte inferior da janela. O ponto de extensão org.eclipse.ui.menus permite que os plug-ins incluam visualizações no ambiente de trabalho. Plug-ins que contribuem com ajuste devem registrá-lo em seu arquivo plugin.xml e fornecer informações de configuração sobre o ajuste, como sua classe de implementação, o grupo de ajuste (barra de ajuste) no qual ele reside e as informações de layout, por exemplo, se o ajuste deseja utilizar espaço 'extra' disponível durante seu layout na área de ajuste.
A interface para ajuste contribuído é definida em IWorkbenchWidget, mas os plug-ins podem (são de fato encorajados) optar por estender a classe AbstractWorkbenchTrimWidget em vez de implementar a interface do zero.
No exemplo de ferramenta de leia-me, nós contribuímos com um widget de ajuste razoavelmente simples que somente exibe uma cadeia e uma indicação de que lado o ajuste está acoplado atualmente.
Vamos examinar a definição de ponto de extensão utilizada para contribuir com esta parte do ajuste:
A primeira seção da extensão (a definição 'grupo') simplesmente define o id do grupo e um 'local' para o grupo como sendo no início do grupo 'status' (por exemplo, no início da área de ajuste inferior). A segunda seção (a definição 'widget') especifica a 'classe' de implementação do widget e define o 'local' do widget como sendo o grupo definido previamente.
Observe que em ambos os casos o 'tipo' de barra é definido como ajuste (que é o único tipo suportado atualmente).
Depois de instalado o exemplo da ferramenta de leia-me
real, examine a
implementação do método ReadmeTrimWidget's fill
. Este é diferente dos
outros métodos fill
utilizados ao incluir widgets em barras de ferramentas
ou menus em que, como o ajuste pode ser arrastado de uma área para outra, ele também
transmite o 'lado' no qual o ajuste está sendo colocado, permitindo ao implementador
adaptar a exibição do widget com base em seu local, alterando a orientação etc. A
implementação atual somente altera o texto exibido para refletir o local atual. Observe
também como o ciclo de vida 'descarte'/'preenchimento' é tratado; haverá chamadas
repetidas para descarte
e preenchimento
geradas pelas
alterações no ambiente de trabalho (isto é, alterar perspectivas ou arrastar o ajuste
para um novo lado).
Uma coisa que não é refletida nesse código de amostra é a confiança do gerenciador de
layout de ajuste na implementação correta do ajuste do método computeSize
de
controle do widget. O widget deve ser capaz de calcular e retornar seu tamanho
'preferido', pois isso é utilizado em toda a implementação de gerenciamento de layout
para determinar, por exemplo, quanto espaço é necessário para uma determinada área de
ajuste. Consulte a documentação do SWT para obter notas sobre como implementar
corretamente o método 'computeSize
.