Perspectivas

Já vimos algumas maneiras em como a área de trabalho permite ao utilizador controlar a aparência das funcionalidades de plug-ins. As vistas podem ser ocultadas ou mostradas no menu Janela >Mostrar Vista. Os conjuntos de acções podem ser ocultados ou mostrados no menu Janela > Personalizar Perspectiva.... Estas funções ajudam o utilizador a organizar a área de trabalho.

As perspectivas facultam um nível adicional de organização dentro de uma janela de área de trabalho. Os utilizadores podem alternar entre perspectivas enquanto percorrem as tarefas. Uma perspectiva define uma recolha de vistas, um esquema para as vistas e os conjuntos de acções visíveis que devem ser usados quando o utilizador abre pela primeira vez a perspectiva.

As perspectivas são implementadas com  IPerspectiveFactoryEspera-se que os implementadores de IPerspectiveFactory configurem um IPageLayout com informações que descrevam a perspectiva e o respectivo esquema de páginas.

Esquema das partes da área de trabalho

Uma das principais missões do IPageLayout consiste em descrever a colocação do editor e das vistas na janela da área de trabalho. Repare que estas disposições são diferentes da classe Layout no SWT. Embora IPageLayout e Layout resolvam um problema semelhante (dimensionar e posicionar widgets numa área maior), não é preciso perceber de disposições de SWT para facultar um esquema de páginas de perspectiva.

Um esquema de páginas de perspectiva é inicializada com uma área para apresentar um editor. A fábrica de perspectivas é responsável por adicionar mais vistas relativamente ao editor. As vistas são adicionadas ao esquema em relação a outra parte (topo, fundo, esquerda, direita). Também podem ser adicionados marcadores de lugar (espaço vazio) para artigos que não sejam inicialmente mostrados.

Para organizar vistas relacionadas e reduzir volumes, poderá utilizar IFolderLayout para agrupar vistas em pastas com separadores. Por exemplo, a perspectiva Recurso coloca o navegador de recursos dentro de uma pasta no canto superior esquerdo da área de trabalho.  Os marcadores de lugar são geralmente usados com disposições de pastas. A perspectiva Recurso define um marcador de lugar para a vista de marcadores de livros na mesma pasta que o navegador de recursos. Se o utilizador mostrar a vista de marcadores de livros, esta aparece na mesma pasta que o navegador, comum separador para cada vista.

IPageLayout também permite definir as acções e os atalhos disponíveis dentro de uma perspectiva.  

Ligar vistas e editores com "show-in"

Outro serviço valioso facultado pelas perspectivas e IPageLayout consiste em ajudar à navegação entre um editor e as respectivas vistas relacionadas.  Costumamos pensar nas vistas como ajudando o utilizador a localizar os objectos com que trabalhar em editores.  Todavia, a operação inversa também é útil:  um utilizador a trabalhar com um objecto num editor poderá precisar de navegar até esse objecto dentro de uma vista.  Tal pode conseguir-se no menu Navegar > Mostrar Em da área de trabalho.  Este comando permite ao utilizador saltar para qualquer uma das vistas relacionadas no contexto do objecto actualmente editado (ou seleccionado).   Por exemplo, um utilizador a editar um ficheiro poderá optar por saltar para esse ficheiro no navegador de recursos.

A arquitectura de plug-ins da área de trabalho permite aos programadores contribuírem com vistas e editores em diferentes plug-ins que nem sequer sabem uns dos outros.   Ao implementar suporte para "show in", a vista ou o editor pode suportar navegação conveniente de e para vistas e editores contributos de outros plug-ins. 

Esta navegação permite aos utilizadores alternar rapidamente entre vistas e abrir facilmente uma vista que não seja habitualmente mostrada em dada perspectiva.   Por exemplo, um utilizador a trabalhar na perspectiva Java pode recorrer a Navegar > Mostrar Em para ver o ficheiro Java actualmente editado na vista Navegador.

Origem Mostrar Em

Se quiser permitir aos utilizadores recorrerem a Navegar > Mostrar Em a partir do editor ou da vista para saltar para outra vista, deverá implementar IShowInSource.  A sua parte poderá facultar o respectivo IShowInSource directamente com protocolo (getShowInSource()) ou na qualidade de adaptador.   IShowInSource permite à sua parte facultar um contexto (ShowInContext) o qual é utilizado pelo destino para decidir como mostrar a origem.  O contexto mostrar em de um editor geralmente é o respectivo elemento de entrada de dados.  No caso de uma vista, o contexto é geralmente a respectiva selecção.  Tanto uma selecção como um elemento de entrada de dados são facultados num ShowInContext para dar ao destino flexibilidade ao determinar como mostrar a origem.  

É facultado um contexto predefinido para editores, para que o seu editor possa participar em "show-in" sem programação especial.  No caso dos editores, o elemento de entrada de dados e a selecção são utilizados para criar um contexto apropriado.  

No caso das vistas, deve ser implementado IShowInSource pela vista para poder prestar a funcionalidade Navegar > Mostrar Em.

Destino Mostrar Em

É necessário implementar IShowInTarget se quiser que a sua vista seja um destino válido para uma operação "show in".  O destino é responsável por mostrar dado contexto de maneira apropriada à respectiva apresentação.  Por exemplo, a vista Navegador expande a sua árvore para seleccionar e revelar um recurso especificado no contexto.   

Um destino deve verificar a selecção em ShowInContext primeiro ao decidir o que mostrar, dado que estas são as informações mais específicas.  Só deverá mostrar o elemento de entrada de dados se não houver selecção indicada.

Apresentar destinos apropriados

Como se determina a lista de destinos disponíveis?  Poderá especificar os destinos disponíveis para a sua perspectiva no respectivo IPageLayout. Lembre-se que uma navegação "show in" poderá abrir uma vista que ainda não esteja presente na perspectiva.  Mediante IPageLayout.addShowInPart, pode especificar um destino "show in" válido pelo ID.  Desta forma, os destinos válidos podem ser estabelecidos sem criar desnecessariamente vistas algumas.