A área de trabalho faculta um conjunto de classes e interfaces extensivo para construir interfaces de utilizador complexas. Felizmente não é preciso perceber todas elas para realizar algo simples. Começamos por ver alguns conceitos que são expostos na interface de utilizador da área de trabalho e correspondente estrutura abaixo da superfície.
Temos usado o termo área de trabalho livremente para designar "a janela que se abre quando se inicia a plataforma". Aprofundemos um pouco e vejamos alguns dos componentes visuais que constituem a área de trabalho.
No resto desta abordagem, quando empregarmos o termo área de trabalho, estaremos a designar a janela da área de trabalho (IWorkbenchWindow). A janela da área de trabalho é a janela de nível superior numa área de trabalho. É a moldura que contém barra de menus, barra de ferramentas, linha de estado, barra de atalhos e páginas. Regra geral, não é necessário realizar programação para a janela da área de trabalho. Basta sabermos o que lá está.
Nota: Podem abrir-se várias janelas de área de trabalho; porém, cada qual é um mundo autónomo de editores e vistas, de modo que focaremos somente uma janela de área de trabalho.
Do ponto de vista do utilizador, uma área de trabalho contém vistas e editores. Existem algumas outras classes usadas para implementar a janela da área de trabalho.
Dentro da janela de área de trabalho, poderá encontrar uma página (IWorkbenchPage) que por seu turno contém partes. As páginas são um mecanismo de implementação para agrupar partes. Geralmente não é preciso realizar programação para a página, mas vê-la-á no contexto da programação e da depuração.
As perspectivas facultam um nível adicional de organização dentro da página da área de trabalho. Uma perspectiva define uma recolha apropriada de vistas, respectivo esquema e acções aplicáveis para determinada tarefa de utilizador. Os utilizadores podem alternar entre perspectivas enquanto percorrem as tarefas. Do ponto de vista de uma implementação, a perspectiva activa do utilizador controla quais as vistas mostradas na página da área de trabalho e respectivas posições e tamanhos. Os editores não são afectados por alterações em perspectivas.
As vistas e editores são onde passamos além dos detalhes da implementação para programação de plug-ins mais comum. Quando se adiciona um componente visual à área de trabalho, é preciso decidir se queremos implementar uma vista ou um editor. Como decidir isto?
Em qualquer dos casos, estará a construir a sua vista ou o seu editor segundo um ciclo de vida comum.
Ao longo deste ciclo de vida, os eventos desencadeiam-se a partir da página de área de trabalho que os contém para notificar os interessados acerca da abertura, activação, desactivação e fecho de vistas e editores.
Parece simples? E pode ser. É o atractivo das vistas e dos editores de área de trabalho. São simplesmente marcadores de widgets, e podem ser tão simples ou complexos quanto precisar que sejam. Vimos a vista mais simples de todas anteriormente quando criámos a vista Hello World. Vejamos novamente, agora que já explicámos mais.
package org.eclipse.examples.helloworld; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; import org.eclipse.ui.part.ViewPart; public class HelloWorldView extends ViewPart { Label label; public HelloWorldView() { } public void createPartControl(Composite parent) { label = new Label(parent, SWT.WRAP); label.setText("Hello World"); } public void setFocus() { // set focus to my widget. For a label, this doesn't // make much sense, but for more complex sets of widgets // you would decide which one gets the focus. } }
Repare que não tivemos de implementar um método dispose() já que nada fizemos além de criar uma etiqueta no método createPartControl(parent). Se tivéssemos atribuído recursos de UI como, por exemplo, imagens ou tipos de letra, tê-los-íamos inutilizado aqui. Dado que estendemos a classe ViewPart, herdados a implementação "do nothing" (não fazer nada) do método dispose().