O workbench fornece um conjunto abrangente de classes e interfaces para a construção de interfaces do usuário complexas. Felizmente, não é necessário entender todas para fazer algo simples. Começaremos olhando alguns conceitos que foram expostos na interface do usuário do workbench e a estrutura correspondente deles sob as coberturas.
Temos utilizado o termo workbench de modo impreciso para nos referirmos"à janela que abre quando você inicia a plataforma." Vamos nos aprofundar um pouco e ver alguns dos componentes visuais que formam o workbench.
No restante desta discussão, quando utilizarmos o termo workbench, estaremos nos referindo à janela workbench (IWorkbenchWindow). A janela workbench é a janela de nível superior em um workbench. É o quadro que armazena a barra de menus, a barra de ferramentas, a linha de status, a barra de atalhos e as páginas. Em geral, não é preciso programar a janela workbench. Basta saber que ela está lá.
Nota: É possível abrir várias janelas no workbench; no entanto, cada uma delas é um mundo independente de editores e visualizações, sendo assim, vamos nos focalizar em apenas uma delas.
Do ponto de vista do usuário, um workbench contém exibições e editores. Há algumas outras classes utilizadas para implementar a janela do workbench.
Na janela do workbench, você encontrará uma página (IWorkbenchPage) que, por sua vez, contém partes. As páginas são mecanismos de implementação para agrupamento de partes. Geralmente, não é preciso programar a página, mas você a verá no contexto da programação e depuração.
As perspectivas fornecem uma camada adicional de organização dentro da página do workbench. Uma perspectiva define uma coleção apropriada de exibições, seu layout e ações aplicáveis para uma determinada tarefa do usuário. Os usuários podem alternar entre as perspectivas conforme se movem pelas tarefas. Do ponto de vista de uma implementação, a perspectiva ativa do usuário controla quais exibições são mostradas na página do workbench, além de suas posições e tamanhos. Os editores não são afetados por uma alteração na perspectiva.
Exibições e editores são para onde movemos detalhes da implementação de alguma programação comum de plug-in. Quando você inclui um componente visual no workbench, deve decidir se deseja implementar uma visualização ou um editor. Como decidir isso?
Em ambos os casos, você estará construindo a visualização ou o editor de acordo com um ciclo de vida comum.
Em todo esse ciclo de vida, os eventos serão disparados da página que contém o workbench para notificar as partes interessadas sobre a abertura, ativação, desativação e o fechamento de exibições e editores.
Parece simples? Pode ser. Essa é a beleza das exibições e dos editores do workbench. Eles são apenas identificadores do widget e podem ser tão simples ou complexos quanto precisem ser. Vimos a mais simples das exibições anteriormente, quando construímos uma visualização hello world. Vamos examiná-la novamente agora que explicamos melhor o que está acontecendo.
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() { // focalizar meu widget. Para um rótulo, não // faz muito sentido, mas para conjuntos de widgets mais complexos // você decidirá qual será focalizado. } }
Observe que não implementamos um método dispose(), pois não fizemos nada além de criar um etiqueta no método createPartControl(parent). Se tivéssemos alocado qualquer recurso da UI, como imagens ou fontes, teríamos que tê-las descartado aqui. Como estendemos a classe ViewPart, herdamos a implementação "do nothing" de dispose().