O workbench sob as coberturas

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.

Área de Trabalho

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.

Workbench com três exibições e um editor em uma página

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 exibições e, sendo assim, vamos nos concentrar em apenas uma delas.

Do ponto de vista do usuário, um workbench contém exibições e editores. Existem algumas outras classes utilizadas para implementar a janela do workbench. 

Página

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.

Exibições e Editores

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 exibição ou um editor. Como decidir isso?

Em ambos os casos, você estará construindo a exibiçã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, lançamento, 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 exibiçã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().

Copyright IBM Corp. e outros 2000,2002.