1 9 package org.eclipse.help.ui.internal.search; 10 import java.util.*; 11 12 import org.eclipse.core.runtime.*; 13 import org.eclipse.help.internal.base.*; 14 import org.eclipse.help.internal.search.*; 15 import org.eclipse.help.internal.workingset.*; 16 import org.eclipse.help.ui.internal.ide.*; 17 import org.eclipse.search.ui.*; 18 import org.eclipse.search.ui.text.*; 19 import org.eclipse.ui.*; 20 public class HelpSearchQuery implements org.eclipse.search.ui.ISearchQuery { 21 private SearchQueryData queryData; 22 private String singularLabel; 23 private String pluralLabelpattern; 24 private HelpSearchResult helpSearchResult; 25 public HelpSearchQuery(SearchQueryData data) { 26 super(); 27 queryData = data; 28 singularLabel = HelpIdeResources.getString("singleSearchResult", queryData.getSearchWord()); 30 pluralLabelpattern = HelpIdeResources.getString("multipleSearchResult", queryData.getSearchWord(), "{0}"); } 33 public IStatus run(IProgressMonitor monitor) { 34 try { 35 WorkingSet[] workingSets = null; if (queryData.isBookFiltering()) { 37 IWorkingSet[] allWorkingSets = queryData 38 .getSelectedWorkingSets(); 39 ArrayList helpWorkingSets = new ArrayList(); 40 WorkingSetManager wsmgr = BaseHelpSystem.getWorkingSetManager(); 41 for (int i = 0; i < allWorkingSets.length; i++) { 42 WorkingSet ws = wsmgr.getWorkingSet(allWorkingSets[i] 43 .getName()); 44 if (ws != null) { 45 helpWorkingSets.add(ws); 46 } 47 } 48 workingSets = (WorkingSet[]) helpWorkingSets 49 .toArray(new WorkingSet[helpWorkingSets.size()]); 50 } 51 SearchResults results = new SearchResults(workingSets, queryData 52 .getMaxHits(), queryData.getLocale()); 53 try { 54 BaseHelpSystem.getSearchManager().search( 55 queryData.getSearchQuery(), results, monitor); 56 } catch (QueryTooComplexException qe) { 57 } 59 postResults(results); 60 } catch (OperationCanceledException oce) { 61 monitor.done(); 63 } catch (Exception e) { 65 HelpIdePlugin.logError(HelpIdeResources.getString("WE021"), e); } 67 monitor.done(); 68 return new Status(IStatus.OK, HelpIdePlugin.PLUGIN_ID, 0, "", null); } 70 public String getLabel() { 71 return HelpIdeResources.getString("Searching_for", queryData .getSearchWord()); 73 } 74 public boolean canRerun() { 75 return true; 76 } 77 public boolean canRunInBackground() { 78 return true; 79 } 80 public ISearchResult getSearchResult() { 81 if (helpSearchResult == null) { 82 helpSearchResult = new HelpSearchResult(this); 83 } 84 return helpSearchResult; 85 } 86 private void postResults(SearchResults results) { 87 SearchHit[] searchHits = results.getSearchHits(); 88 ArrayList enabledHits = new ArrayList(); 90 for (int i = 0; i < searchHits.length; i++) { 91 if (!queryData.isActivityFiltering() 92 || HelpBasePlugin.getActivitySupport().isEnabledTopic( 93 searchHits[i].getHref(), queryData.getLocale())) { 94 enabledHits.add(searchHits[i]); 95 } 96 } 97 Match[] matches = new Match[enabledHits.size()]; 99 for (int i = 0; i < enabledHits.size(); i++) { 100 matches[i] = new Match(enabledHits.get(i), 0, 0); 101 } 102 ((HelpSearchResult) getSearchResult()).removeAll(); ((HelpSearchResult) getSearchResult()).addMatches(matches); 105 } 106 109 String getPluralLabelpattern() { 110 return pluralLabelpattern; 111 } 112 115 String getSingularLabel() { 116 return singularLabel; 117 } 118 121 SearchQueryData getQueryData() { 122 return queryData; 123 } 124 } | Popular Tags |