Fornecendo API simples para visualizações e editores, também conhecidos como partes, a Estrutura do Componente permite que partes existentes sejam aninhadas e compostas. A API da Estrutura do Componente permite que clientes instanciem partes dentro de compostos SWT arbitrários, aprimorem a robustez e prova de vazamento fazendo com que uma parte se comunique com interfaces locais em seu site, em vez de alcançar objetos globais, permite que clientes estendam o conjunto de interfaces disponíveis de um site e fornece uma estrutura aos clientes para criarem seus próprios componentes reutilizáveis, utilizando a mesma API disponível para visualizações e editores. A Estrutura do Componente também permite a construção e destruição de uma parte com operações atômicas e permite que partes existentes utilizem novas interfaces do site.
Este exemplo simples fornece uma visualização que configura seu nome, título, dicas de ferramenta e imagem e demonstra como gravar um editor ou visualização utilizando a estrutura do componente. Ela mostra a origem utilizando a API do componente. As novas partes podem utilizar argumentos em seu construtor e não precisam implementar nenhuma interface específica ou herdar de qualquer classe de base específica.
/**
* Visualização de amostra que configura seu nome, dicas de ferramenta, imagem e descrição do conteúdo.
A visualização
* utiliza uma imagem customizada fornecida por seu plug-in.
*
* @since 3.1
*/
public class NameViewNew {
/**
* Construtor do componente. Não chamar diretamente.
*/
public NameViewNew(Composite parent, INameable name, IPluginImages
images) {
name.setName("Name View (New)");
name.setContentDescription("content description");
name.setTooltip("This is a tooltip");
name.setImage(images.getImage("icons/sample.gif"));
// Criar algum conteúdo de visualização falsa
Label content = new Label(parent, SWT.NONE);
content.setText("View contents go here");
}
}
Observe que os argumentos fornecidos para o construtor de visualização já conhecem seu contexto. Por exemplo, a interface IPluginImages não precisa ser informada sobre a qual plug-in a visualização pertence. De maneira semelhante, as interfaces são resistentes a vazamentos. Neste exemplo, a imagem da visualização é alocada e desalocada automaticamente pela implementação INameable, portanto, a própria visualização não precisa implementar um método de descarte.
É interessante observar que a API de visualizações e editores é exatamente a
mesma. Em outras palavras, se tivéssemos optado por registrar a classe NameViewNew com
o ponto de extensão org.eclipse.ui.editors, ela poderia ser utilizada também como um
editor sem modificações adicionais.