Mechanizmy wyszukiwania zdefiniowane w tym miejscu nie będą automatycznie wyświetlane jako
uczestnicy wyszukiwania stowarzyszonego, dopóki nie zostanie ustanowione powiązanie między
mechanizmem a produktem, chyba że atrybut productId
nie zostanie zdefiniowany.
W przypadku mechanizmów, w których atrybut ten został zdefiniowany, po uruchomieniu produktu wyświetlane są wyłącznie mechanizmy powiązane z określonym produktem.
Mechanizmy wyszukiwania umożliwiają składanie adresów URL i udostępnianie tylko jednego trafienia zawierającego ten adres URL w postaci odwołania href. W taki sposób można podłączać popularne mechanizmy wyszukiwania, dla których obsługa interfejsu API wymaga licencji. Innym rozwiązaniem jest komunikowanie się mechanizmów wyszukiwania z serwerem i odbieranie pojedynczych trafień zawierających takie informacje, jak etykieta, odwołanie href, krótki opis, ocena dopasowania itp. W ten sposób może przedstawiać trafienia lokalny mechanizm pomocy.
Bez względu na mechanizm wyszukiwania mechanizmy mogą udostępniać różnorodne ustawienia zasięgu wyszukiwania, używając stron preferencji pakietu JFace. Te strony są wyświetlane, gdy w widoku pomocy zostanie wybrany odsyłacz Ustawienia zaawansowane. Oprócz głównych stron preferencji zdefiniowanych wraz z mechanizmem, można podłączyć dodatkowe podstrony preferencji zapewniające dostęp do bardziej zaawansowanych ustawień.
Ustawienia zasięgu są ładowane i przechowywane przy użyciu obiektów
IPreferenceStore
. Ustawienia zasięgu dla wszystkich mechanizmów są
zgrupowane w nazwanym zestawie zasięgu. Przy pierwszym otwarciu
tworzony jest domyślny zestaw zasięgu, ale użytkownicy mogą definiować
więcej zestawów zasięgu i przełączać się między nimi.
Ponieważ obsługa wyszukiwania stowarzyszonego jest częścią wtyczki
org.eclipse.help.base
, do utworzenia obiektów zasięgu wyszukiwania
na podstawie danych ze składnicy preferencji niezbędna jest fabryka. Klienci podłączający
strony preferencji zasięgu muszą podłączać również fabryki zasięgu.
Mechanizmy zdefiniowane w tym punkcie rozszerzenia nie są domyślnie wyświetlane w interfejsie użytkownika. Wyświetlane są natomiast konkretne instancje mechanizmów wyszukiwania, które można indywidualnie modyfikować. Na poziomie produktów można wstępnie skonfigurować w systemie pomocy kilka instancji zarejestrowanych typów mechanizmów, które następnie parametryzuje się pod kątem żądanego sposobu działania. Ponadto użytkownicy mogą dodawać własne instancje zarejestrowanych mechanizmów i konfigurować je w zależności od własnych potrzeb.
<!ELEMENT extension (engineType* , engine*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name 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>
Element ten służy do definiowania określonego typu mechanizmu wyszukiwania. Na podstawie typu mechanizmu wyszukiwania konkretne instancje tego mechanizmu mogą być tworzone przez użytkowników lub wstępnie ładowane przez produkt. Warunkiem przydatności typów mechanizmów jest ich konfigurowalność, która pozwala utworzyć kilka mechanizmów na podstawie jednego typu.
org.eclipse.help.search.ISearchEngine
. Klasa ta odpowiada za wyszukiwanie na podstawie podanego zapytania i w określonym zakresie.org.eclipse.help.ui.RootScopePage
. W ramach tej klasy znajduje się przełącznik główny mechanizmu wyszukiwania. Służy ona typowo do udostępniania widgetów wykorzystywanych do zawężania zakresu wyszukiwania w danym mechanizmie.org.eclipse.help.ui.ISearchScopeFactory
. Klasa ta odpowiada za tworzenie obiektów interfejsu ISearchScope na podstawie ustawień przechowywanych w klasie IPreferenceStore
. Jeśli określono atrybut pageClass
, należy również określić atrybut scopeFactory
.<!ELEMENT description (#PCDATA)>
Element ten zawiera krótki opis mechanizmu wyszukiwania.
<!ELEMENT subpage EMPTY>
<!ATTLIST subpage
id CDATA #REQUIRED
label CDATA #REQUIRED
class CDATA #IMPLIED
category CDATA #REQUIRED>
Element ten odpowiada stronie podrzędnej strony głównej preferencji zdefiniowanej w ramach elementu engine
. Jeśli atrybut pageClass
mechanizmu nie został zdefiniowany, strony podrzędne są ignorowane.
org.eclipse.help.ui.ISearchScopePage
.<!ELEMENT engine (description? , param*)>
<!ATTLIST engine
productId CDATA #IMPLIED
engineTypeId CDATA #REQUIRED
enabled (true | false)
label CDATA #IMPLIED
id CDATA #REQUIRED>
Element ten określa konkretną instancję danego typu mechanizmu wyszukiwania. Instancja ta może być powiązana z produktem, co pozwala wyświetlać ją wyłącznie w czasie, gdy produkt ten jest aktywny. Mechanizm może mieć własną etykietę i własny opis. Jeśli nie zostaną one podane, wykorzystuje się dane dotyczące typu mechanizmu. Ponadto w ramach każdego typu mechanizm definiuje się zestaw poprawnych parametrów, które mogą być przekazywane w celu skonfigurowania mechanizmu. W mechanizmach można określać wartości tych parametrów.
org.eclipse.core.runtime.Platform.getProduct()
). Jeśli atrybut nie zostanie określony, mechanizm jest wyświetlany w przypadku wszystkich produktów.true
, mechanizm jest początkowo włączony. Wartość tę za można zastępować zapomocą interfesju użytkownika.<!ELEMENT param EMPTY>
<!ATTLIST param
name CDATA #REQUIRED
value CDATA #REQUIRED>
Opcjonalny parametr służący do konfigurowania danej instancji typu mechanizmu wyszukiwania. Poprawne parametry definiuje się w odniesieniu do typu mechanizmu.
<extension point=
"org.eclipse.help.ui.searchEngine"
>
<engineType scopeFactory=
"com.example.xyz.XYZScopeFactory"
label=
"XYZ Search"
class=
"com.example.xyz.search.XYZSearch"
icon=
"icons/etool16/xyzsearch.gif"
pageClass=
"com.example.xyz.search.XYZSearchPage"
id=
"com.example.xyz.XYZSearch"
>
<description>
Instancje wyszukiwania XYZ w serwisie XYZ.</description>
</engineType>
<engine enabled=
"true"
engineTypeId=
"com.example.xyz.search.XYZSearch"
id=
"com.example.xyz.XYZSearch"
label=
"XYZ Search"
>
</engine>
<engine enabled=
"true"
engineTypeId=
"org.eclipse.help.ui.web"
id=
"org.eclipse.sdk.Eclipse"
label=
"%search.Eclipse.label"
>
<description>
%search.Eclipse.desc</description>
<param name=
"url"
value=
"http://eclipse.org/search/search.cgi?q={expression}&ul=&ps=20&m=all"
>
</param>
</engine>
</extension>
class
elementu engineType
musi udostępniać pełną nazwę klasy wykorzystywanej do implementacji interfejsu org.eclipse.help.search.ISearchEngine
. Atrybut pageClass
musi udostępniać pełną nazwę klasy rozszerzającej klasę org.eclipse.help.ui.RootScopePage
. Atrybut scopeFactory
musi udostępniać pełną nazwę klasy wykorzystywanej do implementacji interfejsu org.eclipse.help.ui.ISearchScopeFactory
. Atrybut class
elementu subpage
musi udostępniać pełną nazwę klasy wykorzystywanej do implementacji interfejsu org.eclipse.help.ui.ISearchScopePage
.
W produktach można tworzyć konkretne instancje mechanizmów wyszukiwania obejmujących Centrum informacyjne i sieć WWW, wykorzystując w tym celu ich identyfikatory i wymagane parametry.
Typ mechanizmu dostosowany do potrzeb Centrum informacyjnego nosi identyfikator org.eclipse.help.ui.infoCenter
i przyjmuje jeden parametr url
(wskazujący serwer zdalny, na którym zainstalowano Centrum informacyjne). Wyniki są wyświetlane w ten sam sposób, co w przypadku lokalnego systemu pomocy.
Tym mechanizmu wyszukiwania dostosowany do potrzeb sieci WWW nosi identyfikator org.eclipse.help.ui.web
i przyjmuje jeden parametr url
. Stanowi on konkretne zapytanie, w którym rzeczywisty wyszukiwany łańcuch zostaje zastąpiony symbolem podstawienia {wyrażenie} zgodnie z następującym przykładem:
http://eclipse.org/search/search.cgi?q={wyrażenie}&ul=&ps=20&m=allWyniki wyszukiwania w sieci WWW są wyświetlane w postaci jednego odsyłacza pozwalającego otworzyć okno przeglądarki, w którym parametr
url
zostaje zastąpiony wyszukiwanym łańcuchem.
Copyright (c) 2000, 2005 IBM Corporation i inne podmioty.
Wszelkie prawa zastrzeżone. Program ten oraz towarzyszące mu materiały są udostępniane na warunkach licencji EPL (Eclipse Public License), wersja 1.0, dołączonej do nich i dostępnej pod adresem http://www.eclipse.org/legal/epl-v10.html.