Søgeprogram

org.eclipse.help.ui.searchEngine

3.1

Dette udvidelsespunkt bruges til at installere søgedeltagere i søgningen for den samlede hjælp. Hvert enkelt søgeprogram kan konfigureres individuelt. Når en søgning startes, udføres hvert søgeprogram som et baggrundsjob, og resultaterne samles straks i hjælpeoversigten, mens forespørgslen udføres.

De søgeprogrammer, der defineres her, vises ikke automatisk som fødererede søgedeltagere, før programproduktbindingen er etableret, medmindre attributten productId ikke er defineret. For de programmer, der definerer denne attribut, er det kun dem, der er bundet til et bestemt produkt, som vises, når produktet kører.

Søgeprogrammer kan blot sammensætte en URL og kun stille en forekomst til rådighed, der indeholder den pågældende URL som href. Populære søgeprogrammer, hvortil API-understøttelse kræver licens, kan installeres på denne måde. I den anden ende af spektrummet kan søgeprogrammer kommunikere med serveren og modtage individuelle forekomster med oplysninger om f.eks. etiket, href, kort beskrivelse og antal forekomster osv. Et lokalt hjælpeprogram kan producere forekomster på denne måde.

Uanset søgemekanismen kan programmer stille forskellige søgeomfangsindstillinger til rådighed vha. JFace-indstillingssiden. Disse sider vises, når linket 'Udvidede indstillinger' følges fra oversigten Hjælp. Foruden de rodindstillingssider, der er defineret med programmet, kan yderligere indstillingsundersider installeres i de udvidede indstillinger.

Omfangsindstillinger indlæses og lagres vha. IPreferenceStore-objekter. Omfangsindstillinger for alle programmer grupperes sammen under et navngivet omfangssæt. Første gang det åbnes, oprettes standardomfangssættet ('Standard'), men brugere kan definere flere omfangssæt og skifte frem og tilbage mellem dem.

Da fødereret søgeunderstøttelse er en del af org.eclipse.help.base-plugin'en, kræves der en fabrik til at oprette søgeomfangsobjekter fra dataene i indstillingslageret. Klienter, der installerer omfangsindstillingssider, skal også installere omfangsfabrikker.

Programmer, der defineres i dette udvidelsespunkt, vises ikke som standard i grænsefladen. Det, der vises der, er en konkret forekomst af hvert program, der kan ændres individuelt. Produkter kan forudkonfigurere hjælpen med et antal forekomster af de registrerede programtyper, muligvis med angivelse af parametre, så det fungerer på en bestemt måde. Desuden kan brugere tilføje deres egne forekomster af registrerede programmer og konfigurere dem efter behov.

<!ELEMENT extension (engineType* , engine*)>

<!ATTLIST extension

point CDATA #REQUIRED

id    CDATA #IMPLIED

navn  CDATA #IMPLIED>


<!ELEMENT engineType (description? , subpage*)>

<!ATTLIST engineType

id           CDATA #REQUIRED

label        CDATA #REQUIRED

icon         CDATA #IMPLIED

class        CDATA #REQUIRED

pageClass    CDATA #IMPLIED

scopeFactory CDATA #IMPLIED>

Definerer en bestemt type søgeprogram. Søgeprogramtypen kan anvendes til at oprette konkrete programforekomster af brugeren eller forudindlæste, der kommer med produktet. For at være nyttige, skal programtyper kunne konfigureres, så et antal programmer kan oprettes vha. en enkelt programtype.



<!ELEMENT description (#PCDATA)>

En kort beskrivelse af søgeprogrammet



<!ELEMENT subpage EMPTY>

<!ATTLIST subpage

id       CDATA #REQUIRED

label    CDATA #REQUIRED

class    CDATA #IMPLIED

category CDATA #REQUIRED>

En underordnet side til indstillingssiden for rodomfang, der er defineret i elementet engine. Hvis programattributten pageClass ikke er defineret, ignoreres underordnede sider.



<!ELEMENT engine (description? , param*)>

<!ATTLIST engine

productId    CDATA #IMPLIED

engineTypeId CDATA #REQUIRED

enabled      (true | false)

label        CDATA #IMPLIED

id           CDATA #REQUIRED>

Angiver en konkret forekomst af en bestemt søgeprogramtype. Forekomsten kan bindes til produktet for kun at blive vist, når produktet er aktivt. Programmet kan have sin egen etiket og beskrivelse. Hvis disse ikke er angivet, anvendes programtypens data. Endelig angiver søgeprogramtypen et gyldigt sæt parametre, der kan overføres til den for at konfigurere den. Programmer kan angive værdier for disse parametre.



<!ELEMENT param EMPTY>

<!ATTLIST param

name  CDATA #REQUIRED

value CDATA #REQUIRED>

En valgfri parameter, der anvendes til at konfigurere denne forekomst af søgeprogramtypen. Gyldige parametre er defineret af programtypen.



Det følgende er et eksempel på en hjælpesøgningsudvidelse:

   

<extension point=

"org.eclipse.help.ui.searchEngine"

>

<engineType scopeFactory=

"com.example.xyz.XYZScopeFactory"

label=

"XYZ-søgning"

class=

"com.example.xyz.search.XYZSearch"

icon=

"icons/etool16/xyzsearch.gif"

pageClass=

"com.example.xyz.search.XYZSearchPage"

id=

"com.example.xyz.XYZSearch"

>

<beskrivelse>

Forekomster af XYZ-søgning gennemsøger XYZ-webstedet.

</description>

</engineType>

<engine enabled=

"true"

engineTypeId=

"com.example.xyz.search.XYZSearch"

id=

"com.example.xyz.XYZSearch"

label=

"Søg efter XYZ"

>

</engine>

<engine enabled=

"true"

engineTypeId=

"org.eclipse.help.ui.web"

id=

"org.eclipse.sdk.Eclipse"

label=

"%search.Eclipse.label"

>

<beskrivelse>

%search.Eclipse.desc

</description>

<param name=

"url"

value=

"http://eclipse.org/search/search.cgi?q={expression}&amp;ul=&amp;ps=20&amp;m=all"

>

</param>

</engine>

</extension>

Attributten class for elementet engineType skal indeholde et fuldstændigt navn på den klasse, der implementererorg.eclipse.help.search.ISearchEngine. Attributten pageClass skal indeholde et fuldstændigt navn på den klasse, der udvider org.eclipse.help.ui.RootScopePage. Attributten scopeFactory skal indeholde et fuldstændigt navn på den klasse, der implementerer org.eclipse.help.ui.ISearchScopeFactory. Attributten class for elementet subpage skal indeholde et fuldstændigt navn på en klasse, der implementerer org.eclipse.help.ui.ISearchScopePage.

Hjælp-UI-plugin'en stiller en søgeprogramtype til rådighed til lokal dokumentation af hjælp, InfoCenter og Web-søgning samt lokal hjælp til forekomster af søgeprogrammet. Denne forekomst accepterer ikke parametre og har ingen produkt-id og vil derfor vises i alle produkter.

Produkter kan oprette konkrete forekomster af InfoCenter og websøgninger ved at bruge deres program-id og de påkrævede parametre.

InfoCenter-programtypen har engineId org.eclipse.help.ui.infoCenter og acceptere én parameter-url, der peger på den eksterne server, hvor InfoCenter er installeret. Resultater vises på samme måde som de lokale hjælperesultater.

Websøgeprogramtypen har program-id'en org.eclipse.help.ui.web og accepterer én parameter url, der repræsenterer en konkret søgeforespørgsel, hvor den aktuelle søgestreng erstattes af et substitutionssymbol '{udtryk}' som i det følgende eksempel:

http://eclipse.org/search/search.cgi?q={expression}&ul=&ps=20&m=all

Websøgeresultater vises om ét link, der åbner webbrowseren, hvor søgestrengen er erstattet i url-parameteren.