Estendendo a Introdução Universal

Ao ativar as Boas-vindas universais configuradas conforme mostrado anteriormente, você notará que toda a página de segundo nível com ramificações na página raiz têm uma área de conteúdo vazia. Isso se deve ao fato de que as Boas-vindas compartilhadas não têm conteúdo próprio. Essas áreas são preenchidas utilizando as extensões de configuração de introdução.

A maneira tradicional de contribuir com extensões de configuração é especificar um caminho completo do elemento de âncora na página de destino. Esse método ainda é suportado, mas comprovou-se ser um tanto frágil. Conforme mencionado antes, a especificação de um local exato onde a extensão terminará no destino é prematura para os criadores de extensão. Eles podem não conhecer todos os produtos nos quais a extensão terminará e portanto não saber onde eles deverão aparecer, de acordo com o foco de cada produto. Nas Boas-vindas universais, essa decisão é deixada para os criadores de produto. Criadores de extensão agora têm a opção de especificar um caminho de destino incompleto, permitindo que o criador do produto preencha os espaços em branco

As extensões de configuração que desejam utilizar a última resolução de caminho de destino precisam atender a três condições:

  1. A extensão de configuração precisa especificar um identificador exclusivo utilizando o atributo 'id'. As extensões sem o id serão ignoradas. Isso é importante porque o id será utilizado para fazer referência à extensão pelo criador do produto.
  2. A extensão de configuração precisa especificar um nome fácil e simples utilizando o atributo 'name'. Isso será importante se a página de preferência de customização for utilizada porque as extensões serão mostradas na UI.
  3. O caminho de destino deverá ter a seguinte forma: "page_id/@" em que 'page_id' é o identificador da página de destino. Quando '/@' for detectado no caminho de destino, será feita uma tentativa de resolver dinamicamente o caminho na forma completa esperada.

A capacidade para resolver caminhos de destino de extensão é um novo recurso de suporte de introdução no Eclipse 3.2 incluído para tornar mais eficaz as Boas-vindas universais. O recurso em si é genérico no sentido de que pode ser utilizado em outras implementações de Boas-vindas, não apenas na universal. No Eclipse 3.2, CustomizableIntroPart pode aceitar uma classe de customizador de introdução opcional que pode afetar seu comportamento de diversas maneiras. Uma das funções do customizador é executar a última resolução de caminho de destino. Certamente que, até onde interessa aos criadores de produto, tudo isso é apenas detalhe de implementação porque, na implementação das Boas-vindas universais, a última resolução de caminho de destino é executada utilizando o arquivo de dados mencionado anteriormente. Esse arquivo é armazenado utilizando a preferência org.eclipse.ui.intro/INTRO_DATA.

O arquivo 'INTRO_DATA' utiliza o formato XML e permite aos criadores de produto controlar o conteúdo das páginas de boas-vindas principais. Os autores de contribuição de boas-vindas são solicitados a especificar apenas o Id da página em seus caminhos de destino. O restante é definido nesse arquivo. O arquivo contém uma seqüência de elementos 'page', cada um contendo vários elementos 'group'. Os elementos de grupo especificam o caminho relativo à página e têm contribuições de filhos. Os elementos de contribuição são utilizados para especificar dois aspectos:

   <extensions>
      <page id="overview">
         <group path="page-content/top-left">
            <extension id="foo1" importance="high"/>
            <extension id="bar"  importance="high"/>
            <extension id="foo2" importance="medium"/>
         </group>
         <group path="page-content/top-right">
            <extension id="foo3" importance="low"/>
            <extension id="foo4" importance="low"/>
            <extension id="foo5" importance="callout"/>
         </group>
         <hidden>
            <extension id="foo6"/>
            <extension id="foo7"/>
         </hidden>
      </page>
      <page id="whatsnew">
      ...
      </page>
   </extensions>

No exemplo anterior, as contribuições 'foo1', 'bar' e foo2' ficarão na esquerda; e 'foo3', 'foo4' e 'foo5', na coluna direita da página. A ordem relativa das contribuições também é extraída desse arquivo. Além disso, as contribuições são classificadas com base no atributo importance que pode ter quatro valores válidos: high, medium, low e callout, com low como o padrão. Cada valor tem apresentação correspondente que o torna destaque na página. Os três primeiros são simplesmente níveis diferentes de importância, de acordo com o criador do produto (observe que a mesma contribuição pode receber uma classificação de importância diferente em dois produtos separados). O último (callout) é utilizado para escolher as contribuições que são de natureza completamente diferente (por exemplo, uma contribuição que oferece links para vídeos ou animação).

As contribuições não listadas são anexadas após as listadas e designado um valor de baixa importância. Isso é importante para contribuições incluídas após o envio do produto - elas ainda precisam ser mostradas.

As contribuições não relevantes ao projeto podem ser ocultadas listando-as explicitamente como filhas do elemento 'hidden'.

Contribuindo em Extensões

Uma extensão contribuída em uma das páginas raiz pode ela mesma conter âncoras, sustentando outras para inclusão de conteúdo. Isso causa um problema, já que o caminho resolvido final do conteúdo na extensão não é conhecido antecipadamente. Por essa razão, os caminhos de destino para conteúdo em extensões que utilizam a última resolução de caminho devem ser resolvidos sozinhos:

<?xml version="1.0" encoding="utf-8" ?>
<introContent>
   <extensionContent id="extra" name="Extra" alt-style="css/swt.properties" style="css/overview.css" path="overview/@">
      <group id="extra-group" style-id="content-group">
         <link label="Link de Visão Geral Extra" url="http://org.eclipse.ui.intro/showPage?id=extraOverview"
					  id="extra-overview">
      	    <text>Mostrando a página extra de terceiro nível para visão geral</text>

         </link>
         <anchor id="additions"/>
      </group>
   </extensionContent>
</introContent>

Para contribuir nas adições ('additions') de âncora, na extensão anterior, será utilizado o seguinte caminho: "overview/@extra/extra-group/additions". O segmento '@extra' será substituído pelo caminho resolvido da extensão com o id 'extra' na página 'overview'. Por exemplo, se a extensão for colocada no segmento superior esquerdo da página, o caminho resolvido será: "overview/page-content/upper-left/extra-group/additions".