KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > help > ui > internal > search > HelpSearchQuery


1 /*******************************************************************************
2  * Copyright (c) 2000, 2004 IBM Corporation and others. All rights reserved.
3  * This program and the accompanying materials are made available under the
4  * terms of the Common Public License v1.0 which accompanies this distribution,
5  * and is available at http://www.eclipse.org/legal/cpl-v10.html
6  *
7  * Contributors: IBM Corporation - initial API and implementation
8  ******************************************************************************/

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 JavaDoc singularLabel;
23     private String JavaDoc pluralLabelpattern;
24     private HelpSearchResult helpSearchResult;
25     public HelpSearchQuery(SearchQueryData data) {
26         super();
27         queryData = data;
28         singularLabel = HelpIdeResources.getString("singleSearchResult", //$NON-NLS-1$
29
queryData.getSearchWord());
30         pluralLabelpattern = HelpIdeResources.getString("multipleSearchResult", //$NON-NLS-1$
31
queryData.getSearchWord(), "{0}"); //$NON-NLS-1$
32
}
33     public IStatus run(IProgressMonitor monitor) {
34         try {
35             WorkingSet[] workingSets = null; // no filtering
36
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                 // ignore
58
}
59             postResults(results);
60         } catch (OperationCanceledException oce) {
61             // allowed, no logging
62
monitor.done();
63             //throw oce;
64
} catch (Exception JavaDoc e) {
65             HelpIdePlugin.logError(HelpIdeResources.getString("WE021"), e); //$NON-NLS-1$
66
}
67         monitor.done();
68         return new Status(IStatus.OK, HelpIdePlugin.PLUGIN_ID, 0, "", null); //$NON-NLS-1$
69
}
70     public String JavaDoc getLabel() {
71         return HelpIdeResources.getString("Searching_for", queryData //$NON-NLS-1$
72
.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         // Filtering of results by activities
89
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         //
98
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(); // in case it is
103
// rerun
104
((HelpSearchResult) getSearchResult()).addMatches(matches);
105     }
106     /**
107      * @return Returns the pluralLabelpattern.
108      */

109     String JavaDoc getPluralLabelpattern() {
110         return pluralLabelpattern;
111     }
112     /**
113      * @return Returns the singularLabel.
114      */

115     String JavaDoc getSingularLabel() {
116         return singularLabel;
117     }
118     /**
119      * @return Returns the queryData.
120      */

121     SearchQueryData getQueryData() {
122         return queryData;
123     }
124 }
Popular Tags