De universele inleiding uitbreiden

Wanneer u de universele welkomstpagina start volgens de eerder weergegeven configuratie, zult u zien dat de pagina's op het tweede niveau die een subpagina zijn van de hoofdpagina een leeg contentgebied hebben. Dit is omdat een gemeenschappelijke welkomstpagina geen eigen content heeft. Deze gebieden worden gevuld door gebruik te maken van configuratie-extensies.

De traditionele manier om config-extensies bij te dragen is het opgeven van een volledig pad van het ankerelement in de doelpagina. Deze methode wordt nog steeds ondersteund maar is gebleken geen solide methode te zijn. Zoals eerder vermeld, is het opgeven van een exacte plaats waar de extensie terechtkomt in het doel prematuur voor extensieauteurs. Ze zijn mogelijk niet op de hoogte van alle producten waarin hun extensies terecht zullen komen en weten dus niet waar ze moeten verschijnen volgens de focus van de betreffende producten. In de universele welkomstpagina wordt deze beslissing overgelaten aan de productauteurs. Extensieauteurs hebben nu de mogelijkheid om een onvolledig doelpad op te geven, zodat de productauteur de lege plekken kan opvullen.

Config-extensies die gebruik willen maken van late doelpadomzetting moeten aan drie voorwaarden voldoen:

  1. Config-extensies moeten een uniek ID opgeven met behulp van het kenmerk 'id'. Extensies zonder dit id worden genegeerd. Dit is belangrijk omdat het id door de productauteur wordt gebruikt om naar de extensie te verwijzen.
  2. Config-extensies moeten een gebruikersvriendelijke naam opgeven met behulp van het kenmerk 'name'. Dit is belangrijk als de voorkeurenpagina voor aanpassing wordt gebruikt omdat de extensies in de gebruikersinterface zichtbaar zijn.
  3. Het doelpad moet er als volgt uitzien: "page_id/@" waarin 'page_id' de naam van de doelpagina is. Wanneer '/@' wordt gevonden in het doelpad wordt geprobeerd het pad dynamisch om te zetten in de verwachte volledige vorm.

Het vermogen om extensiedoelpaden om te zetten is een nieuwe functie van Eclipse 3.2 die is toegevoegd om de universele welkomstpagina krachtiger te maken. De voorziening zelf is generiek zodat hij niet alleen in de universele welkomstimplementatie, maar ook in andere welkomstimplementaties kan worden gebruikt. In Eclipse 3.2 kan CustomizableIntroPart een optionele klasse voor een intro-customizer accepteren die het gedrag op verschillende manieren kan beïnvloeden. Een van de rollen van de customizer is het uitvoeren van een late doelpadomzetting. Waar het de productauteurs betreft, zijn dit allemaal implementatiedetails omdat in de universele welkomstimplementatie het uitvoeren van een late doelpadomzetting wordt uitgevoerd met behulp van het eerder genoemde gegevensbestand. Dit bestand is opgeslagen met behulp van de voorkeur org.eclipse.ui.intro/INTRO_DATA.

Het bestand 'INTRO_DATA' gebruikt de XML-indeling en geeft productauteurs de mogelijkheid om inhoud van de hoofdpagina's van de welkomstimplementatie te bepalen. Auteurs die aan deze implementatie bijdragen hoeven alleen het pagina-ID in hun doelpaden op te geven. De rest is in dit bestand gedefinieerd. Het bestand bevat een reeks 'page'-elementen die elk een aantal 'group'-elementen bevatten. Groepelementen geven een pagina-relatief pad op en dragen bij aan onderliggende items. Er worden bijdrage-elementen gebruikt voor het opgeven van twee aspecten:

   <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>

In het bovenstaande voorbeeld komen de bijdragen 'foo1', 'bar' en foo2' in de linkerkolom van de pagina te staan en 'foo3', 'foo4' en 'foo5' in de rechterkolom. De relatieve volgorde van de bijdragen wordt ook uit dit bestand geëxtraheerd. Daarnaast worden bijdragen ingedeeld op basis van het kenmerk importance (prioriteit) dat vier waarden kan hebben: high, medium, low en callout, waarbij low de standaardwaarde is. Bij elke waarde hoort een bepaalde manier van weergeven op de pagina. De eerste drie waarden bepalen de prioriteit die de productauteur aan de bijdrage toekent (dezelfde bijdrage kan in twee verschillende producten een andere classificatie krijgen). De laatste waarde (callout) wordt gebruikt voor de weergave van bijdragen die van een geheel andere aard zijn (bijvoorbeeld een bijdrage die koppelingen naar videobeelden bevat).

Bijdragen die niet gekwalificeerd zijn, worden na de gekwalificeerde bijdragen toegevoegd en krijgen automatisch de laagste prioriteit ('low'). Dit is van belang om ervoor te zorgen dat bijdragen die worden toegevoegd nadat het product is geleverd toch worden weergegeven.

Bijdragen die niet relevant zijn voor het project kunnen worden verborgen door ze te kwalificeren als onderliggende items van het verborgen ('hidden') element.

Bijdragen in extensies

Een extensie die aan een van de hoofdpagina's wordt bijgedragen, kan zelf ankers bevatten zodat anderen content kunnen toevoegen. Dit veroorzaakt een probleem omdat het uiteindelijke omgezette pad van de content in de extensie niet van te voren bekend is. Om deze reden moeten doelpaden voor content in extensies die gebruikmaken van late padomzetting zelf worden omgezet.

<?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>Showing the third-level extra page for overview</text>

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

Om iets te kunnen bijdragen in het anker 'additions' in de bovenstaande extensie moet u gebruikmaken van het volgende pad: "overview/@extra/extra-group/additions". Het segment '@extra' wordt vervangen door het omgezette pad van de extensie met het id 'extra' in de pagina 'overview'. Als de extensie bijvoorbeeld linksboven in de pagina wordt geplaatst, ziet het omgezette pad er als volgt uit: "overview/page-content/upper-left/extra-group/additions".