Estrutura do Componente

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.

Imagem da Visualização NameViewNew

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.