Udvid den universelle introduktion

Når du starter Universal Welcome, der er konfigureret som vist ovenfor, vil du bemærke, at alle sider på niveau 2, der udgår fra rodsiden, har et tomt indholdsområde. Det skyldes, at delt Velkommen ikke har sit eget indhold. Disse områder udfyldes vha. udvidelser for introduktionskonfiguration.

Den traditionelle måde at levere konfigurationsudvidelser på er at angive den fuldstændige sti til et ankerelement på målsiden. Denne metode understøttes stadig, men den har vist sig at være noget skrøbelig. Som tidligere nævnt er det for tidligt at lade forfattere til udvidelser angive den nøjagtige placering for udvidelsen i målet. De kender måske ikke alle de produkter, hvor deres udvidelse skal placeres, og derfor ved de heller ikke, hvor den skal vises i overensstemmelse med produktets fokus. I Universal Welcome er denne beslutning overladt til produktforfattere. Udvidelsesforfattere har nu mulighed for at angive en ufuldstændig målsti, der gør det muligt for produktforfatteren at udfylde de tomme pladser.

Konfigurationsudvidelser, der vil bruge sen målstiopløsning skal opfylde tre betingelser:

  1. Konfigurationsudvidelsen skal angive en entydig id vha. attributten 'id'. Udvidelser uden id ignoreres. Det er vigtigt, fordi id'en anvendes til at henvise til udvidelsen af produktforfatteren.
  2. Konfigurationsudvidelsen skal angive et brugervenligt navn vha. attributten 'name'. Det er vigtigt, indstillingssiden for tilpasning anvendes, fordi udvidelser bliver vist i UI.
  3. Målstien skal have følgende format: "side_id/@", hvor 'side_id' er id'en på målsiden. Når '/@' registreres i målstien, bliver der gjort et forsøg på dynamisk at opløse stien til det forventede fuldstændige format.

Evnen til at opløse udvidelsesmålstier er en ny funktion i introduktionsunderstøttelse i 3.2, der er tilføjet for at gøre Universal Welcome mere effektiv. Funktionen selv er generisk, idet den kan anvendes i andre Velkommen-implementeringer, ikke kun den universelle. I Eclipse 3.2 kan CustomizableIntroPart acceptere en valgfri introduktionstilpasningsklasse, der kan påvirke dens funktionsmåde på flere måder. En af rollerne for tilpasningen er at udføre sene opløsninger af målstier. Men hvad angår produktforfattere er det naturligvis kun en implementeringsdetalje, fordi sene opløsninger af målstier i Universal Welcome udføres vha. datafilen, der er nævnt tidligere. Denne fil lagres vha. indstillingen org.eclipse.ui.intro/INTRO_DATA.

Filen 'INTRO_DATA' anvender XML-format og tillader produktforfatter at kontrollere indholdet af hovedvelskomstsiden. Bidragsforfatter til Velkommen skal kun angive side-id'en i deres målsti. Resten er defineret i denne fil. Filen indeholder en sekvens af 'page'-elementer, der hver indeholder et antal 'group'-elementer. Gruppeelementer angiver side-relative stier og har bidrag til underordnede. Bidragselementer anvendes til at angive to aspekter:

   <extensions>
      <page id="oversigt">
         <group path="page-content/top-left">
            <extension id="foo1" importance="høj"/>
            <extension id="bar"  importance="høj"/>
            <extension id="foo2" importance="medium"/>
      </group>
         <group path="page-content/top-right">
            <extension id="foo3" importance="lav"/>
            <extension id="foo4" importance="lav"/>
            <extension id="foo5" importance="billedforklaring"/>
      </group>
         <hidden>
            <extension id="foo6"/>
            <extension id="foo7"/>
         </hidden>
         </page>
      <page id="nyheder">
      ...
         </page>
   </extensions>

I eksemplet ovenfor vil bidragene 'foo1', 'bar' og foo2' stå i venstre kolonne og 'foo3', 'foo4' og 'foo5' i højre kolonne på siden. Den relative række af bidragene udtrækkes også fra denne fil. Desuden klassificeres bidrag ud fra attributten importance, der kan have fire gyldige værdier: Høj, Medium, Lav og Billedforklaring . Lav er standard. Hver værdi har matchende præsentation, der får dem til at træde frem på siden. De første tre er simpelthen forskellige niveauer af betydning i overensstemmelse med produktforfatteren. Bemærk, at det samme bidrag kan have en forskellig betydningsklassifikation i to forskellige produkter. Den sidste, Billedforklaring, bruges til at finde bidrag af en helt anden art, f.eks. et bidrag, der tilbyder link til videoer og animationer.

Bidrag, der ikke er i listen, tilføjes efter listebidragene og tildeles en lav betydningsværdi. Det er vigtigt for bidrag, der tilføjes, efter at produktet er leveret - de skal stadig vises.

Bidrag, der ikke er relevante for projektet, kan skjules ved eksplicit at placere dem som underordnede til det skjulte element 'hidden'.

Bidrag i udvidelser

En udvidelse, der leveres til en af rodsiderne, kan selv indeholde ankre, så de giver mulighed for, at andre stiller indhold til rådighed. Det forårsager et problem, fordi den endeligt opløste sti til indholdet i udvidelsen ikke er kendt på forhånd. Af denne grund skal målstier for indhold i udvidelser, der anvender sen opløsning af stier, opløse sig selv.

<?xml version="1.0" encoding="utf-8" ?>
<introContent>
   <extensionContent id="ekstra" name="Ekstra" alt-style="css/swt.properties" style="css/overview.css" path="oversigt/@">
      <group id="ekstragruppe" style-id="indholdsgruppe">
         <link label="Link til ekstra oversigt" url="http://org.eclipse.ui.intro/showPage?id=extraOverview"
					  id="ekstraoversigt">
      	    <text>Viser ekstrasiden på tredje niveau for oversigt</text>

        </link>
         <anchor id="tilføjelser"/>
    </group>
	</extensionContent>
</introContent>

For at bidrage til ankertilføjelser og udvidelsen ovenfor, skal vi bruge følgende sti: "oversigt/@ekstra/ekstragruppe/additions". Segmentet '@ekstra' erstattes med den opløste sti for udvidelsen med id'en 'ekstra' på siden 'oversigt'. Hvis f.eks. udvidelsen placeres i øverste venstre segment på siden, vil den opløste side være: "oversigt/page-content/upper-left/ekstragruppe/additions".