org.eclipse.ui.menus

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.