Contribuir com uma página de pesquisa

Quando o utilizador selecciona um recurso e escolhe o comando de pesquisa, o plug-in de pesquisa lança um diálogo que contém páginas para diferentes tipos de pesquisas de conteúdo.  Estas páginas constituem contributos através do ponto de extensão org.eclipse.search.searchPages.

A marcação para contribuir com uma página de pesquisa é muito simples.  O exemplo que se segue é o contributo do plug-in das JDT da página de pesquisa Java:

<extension point="org.eclipse.search.searchPages">
   <page id="org.eclipse.jdt.ui.JavaSearchPage"
		icon="icons/full/obj16/jsearch_obj.png"
		label="%JavaSearchPage.label"
		sizeHint="460,160"
		extensions="java:90, jav:90"
		showScopeSection="true"
		canSearchEnclosingProjects="true"
		class="org.eclipse.jdt.internal.ui.search.JavaSearchPage">
	</page>
</extension>

A classe que implementa a página de pesquisa deve ser especificada.  Esta classe deve implementar a interface ISearchPage e normalmente estende DialogPage. Também são especificados a etiqueta (label) e o ícone (icon) que podem ser usados para descrever a pesquisa no diálogo de pesquisa.   Os parâmetros adicionais controlam o tamanho da página e a localização da página dentro do diálogo de pesquisa.

O atributo extensões (extensions) especifica os recursos sobre os quais podem funcionar a página de pesquisa.  Está formatado como lista de extensões de ficheiros separada por vírgulas.  A cada extensão de ficheiro deve seguir-se um valor de peso numérico, em que 0 é o peso mais baixo, separado por dois pontos.  O valor de peso é um valor relativo utilizado para permitir que a infraestrutura de pesquisa localize a página de pesquisa mais apropriada para dado recurso.

Se uma página de pesquisa puder pesquisar todos os recursos possíveis, deverá ser usado um asterisco ("*").

Implementar a página de pesquisa

O protocolo para ISearchPage é simples.  A página de pesquisa deve implementar performAction(), o qual é chamado quando se prime o botão Pesquisar.  Natiralmente que a implementação da pesquisa específica depende das funcionalidades do plug-in, mas é habitual abrir um visualizador de resultados neste método com o método activateSearchResultView() da NewSearchUI.

O plug-in é responsável por mostrar os seus resultados na vista de resultados de pesquisa.