Renúncia de responsabilidade: O ponto de extensão
org.eclipse.ui.menus
no eclipse 3.2 é apenas implementado parcialmente.
Actualmente, não suporta as definições ou extensões do menu ou da barra de
ferramentas (as extensões de contribuição existentes deverão ser utilizadas
para isto). Contudo, é o único mecanismo através do qual os widgets de "trim"
podem ser contribuídos para a área de trabalho. Esta secção irá demonstrar o modo de o utilizar para este fim.
Um widget "trim" é um controlo que é colocado numa localização (denominada "Trim Area") na fronteira exterior da Janela da Área de Trabalho. O exemplo mais comum é o "status line" da linha que é colocada por quase todas as GUI ao longo da parte inferior da janela. O ponto de extensão org.eclipse.ui.menus permite que os plug-ins adicionem vistas à área de trabalho. Os plug-ins que contribuem com ajustes têm de registar o ajuste no respectivo ficheiro plugin.xml e facultar informações de contribuição sobre o ajuste, tais como a classe de implementação, o grupo de ajuste (barra de ajuste) na qual reside e as informações sobre o esquema, tais como se o ajuste pretende utilizar o espaço "extra" disponível durante a esquematização na área de ajuste.
A interface para ajustes contribuídos está definida em IWorkbenchWidget, mas os plug-ins podem optar por expandir a classe (e são encorajados a fazê-lo) AbstractWorkbenchTrimWidget, em vez de implementar a interface de raiz.
Para o exemplo da readmetool, foi contribuído um widget de ajuste bastante fácil que simplesmente apresenta uma cadeia e uma indicação do lado ao qual o ajuste está actualmente acoplado.
Consideremos a definição do ponto de extensão utilizada para contribuir com este ajuste:
A primeira secção da extensão (a definição "group") define simplesmente o id do grupo e define uma "location" para o grupo como sendo o início do grupo "status" (ou seja, no início da área inferior do ajuste). A segunda secção (a definição "widget") especifica a implementação "class" do widget e define a "location" do widget como estando colocado num grupo pré-definido.
Repare que em ambos os casos, o "type" de barra é definido como ajuste (que é o único tipo actualmente suportado).
Quando o exemplo readmetool
estiver instalado, verifique a
implementação do método ReadmeTrimWidget"s fill
. Este método é
diferente do outro método fill
utilizado ao adicionar widgets à
barra de ferramentas ou aos menus porque, uma vez que o ajuste pode ser
arrastado de uma área para a outra, transfere também o "side" no qual o ajuste
está a ser colocado, permitindo que o implementador personalize a apresentação
do widget com base na localização ao alterar a orientação, etc. A implementação
actual altera simplesmente o texto apresentado de modo a reflectir a localização actual.
Repare também como o ciclo de vida "dispose"/"fill" é +processado. Haverão
chamadas repetidas para dispose
e fill
geradas pelas
alterações da área de trabalho (ou seja, alterar perspectivas ou arrastar o
ajuste para um novo lado).
Um aspecto que não é reflectido neste código exemplo é o facto de o gestor de
esquema do ajuste se basear na implementação adequada do ajuste do método
computeSize
de controlo do widget. O widget deverá ter a
capacidade de calcular e devolver o tamanho "preferred", uma vez que é
utilizado ao longo da implementação de gestão de esquema para determinar,
por exemplo, o espaço necessário para uma determinada área de ajuste. Consulte
a documentação sobre o SWT para obter notas sobre a forma de
implementar o "computeSize
correctamente.