Действие, которое запускает диалог, - это FindInFileActionDelegate (у него есть несколько родственных типов для разных областей), это можно найти в плагине org.eclipse.search
Все делегаты наследуются от общего родителя RetrieverAction. Метод run () RetrieverAction показывает диалоговое окно и выполняет запрос. Вы можете взять соответствующую обработку из этого метода. Вам может потребоваться зарегистрироваться в качестве ISelectionListener для отслеживания активного выбора.
public void run() {
IWorkbenchPage page= getWorkbenchPage();
if (page == null) {
return;
}
TextSearchQueryProvider provider= TextSearchQueryProvider.getPreferred();
String searchForString= getSearchForString(page);
if (searchForString.length() == 0) {
MessageDialog.openInformation(getShell(), SearchMessages.RetrieverAction_dialog_title, SearchMessages.RetrieverAction_empty_selection);
return;
}
try {
ISearchQuery query= createQuery(provider, searchForString);
if (query != null) {
NewSearchUI.runQueryInBackground(query);
}
} catch (OperationCanceledException ex) {
// action cancelled
} catch (CoreException e) {
ErrorDialog.openError(getShell(), SearchMessages.RetrieverAction_error_title, SearchMessages.RetrieverAction_error_message, e.getStatus());
}
}