Ampliar la introducción universal

Al lanzar la bienvenida universal configurada tal como se ha mostrado anteriormente, observará que todas las páginas de segundo nivel que se ramifican a partir de la página raíz tiene un área de contenido vacía. Esto se debe a que la bienvenida compartida no tiene contenido en sí misma. Estas áreas se llenan utilizando extensiones de configuración de introducción.

El procedimiento tradicional para añadir extensiones de configuración consiste en especificar una vía de acceso completa del elemento de ancla (anchor) en la página destino. Este método sigue estando soportado, pero se ha mostrado bastante frágil. Como se ha indicado anteriormente, la especificación de un lugar exacto en el que se ubicarán finalmente las extensiones en el destino es prematuro para los autores de las extensiones. Es posible que no conozcan todos los productos en los que se colocará su extensión y, por tanto, no saben dónde debe aparecer de acuerdo con el interés de cada producto. En la bienvenida universal, esta decisión se deja a los autores de los productos. Los autores de las extensiones tienen ahora la opción de especificar una vía de acceso destino incompleta, dejando que el autor del producto rellene los huecos.

Las extensiones de configuración que deseen utilizar la resolución diferida de vía de acceso destino deben cumplir tres condiciones:

  1. La extensión de configuración debe especificar un identificador exclusivo mediante el atributo 'id'. Las extensiones sin el id se pasarán por alto. Esto es importante, ya que el autor del producto utilizará el id para hacer referencia a la extensión.
  2. La extensión de configuración debe especificar un nombre intuitivo mediante el atributo 'name'. Esto es importante si va a utilizarse la página de preferencias de personalización, ya que las extensiones se mostrarán en la UI.
  3. La vía de acceso destino debe tener el formato siguiente: "id_página/@", donde 'id_página' es el identificador de la página destino. Cuando se detecte '/@' en la vía de acceso destino, se intentará resolver dinámicamente la vía de acceso en el formulario completo esperado.

La capacidad para resolver vías de acceso destino de extensión es una nueva característica de soporte de Eclipse 3.2, añadida para suministrar potencia a la bienvenida universal. La característica en sí es genérica en el sentido de que puede utilizarse en otras implementaciones de la bienvenida, no sólo en la universal. En Eclipse 3.2, CustomizableIntroPart puede aceptar una clase de personalizador de introducción opcional que puede afectar a su comportamiento de varias formas. Uno de los roles del personalizador es realizar la resolución diferida de vías de acceso destino. Evidentemente, por lo que respecta a los autores de los productos, esto son sólo detalles de la implementación, ya que, en la implementación de la bienvenida universal, la resolución diferida de vías de acceso destino se realiza mediante el archivo de datos indicado anteriormente. Este archivo se almacena mediante la preferencia org.eclipse.ui.intro/INTRO_DATA.

El archivo 'INTRO_DATA' utiliza el formato XML y permite a los autores de los productos controlar el contenido de las páginas de bienvenida principales. Los autores de contribuciones a la bienvenida deben especificar sólo el ID de página en sus vías de acceso destino. El resto se define en este archivo. El archivo contiene una secuencia de elementos 'page', cada uno de los cuales contiene diversos elementos 'group'. Los elementos de grupo especifican una vía de acceso relativa a la página y contienen contribuciones para los hijos. Los elementos de contribución se utilizan para especificar dos 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>

En el ejemplo anterior, las contribuciones 'foo1', 'bar' y foo2' estarán en la columna izquierda, y 'foo3', 'foo4' y 'foo5' en la columna derecha de la página. El orden relativo de las contribuciones también se extrae de este archivo. Además, las contribuciones se clasifican en función del atributo importance, que puede tener cuatro valores: high, medium, low y callout, siendo low el valor predeterminado. Cada valor tiene una presentación correspondiente que lo hace destacar en la página. Los tres primeros son simplemente niveles diferentes de importancia, de acuerdo con el autor del producto (tenga en cuenta que la misma contribución puede recibir una clasificación de importancia diferente en dos productos independientes). El último (callout) se utiliza para singularizar las contribuciones que son de una naturaleza completamente diferente (por ejemplo, una contribución que ofrece enlaces con vídeos o animaciones).

Las contribuciones que no aparecen en la lista se añaden a continuación de las contribuciones listadas y se les asigna un valor de importancia bajo (low). Esto es importante para las contribuciones añadidas después de suministrar el producto, ya que sigue siendo necesario que aparezcan.

Las contribuciones no relevantes para el proyecto pueden ocultarse listándolas explícitamente como hijas del elemento 'hidden'.

Contribuir a extensiones

Una extensión añadida a una de las páginas raíz puede contener anclas para que otros puedan añadir contenido. Esto provoca un problema, ya que la vía de acceso resuelta final del contenido de la extensión no se conoce por adelantado. Por esa razón, deben resolverse las vías de acceso destino para el contenido de extensiones que utilizan resolución de vías de acceso diferida:

<?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="Extra Overview link" url="http://org.eclipse.ui.intro/showPage?id=extraOverview" 
					  id="extra-overview">
            <text>Mostrar la página adicional de tercer nivel para la visión general</text>

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

Para contribuir a las adiciones ('additions') de ancla de la extensión anterior, debe utilizarse la siguiente vía de acceso: "overview/@extra/extra-group/additions". El segmento '@extra' se sustituirá por la vía de acceso resuelta de la extensión con el id 'extra' de la página 'overview'. Por ejemplo, si la extensión se coloca en el segmento superior izquierdo de la página, la vía de acceso resuelta será: "overview/page-content/upper-left/extra-group/additions".