01: /*******************************************************************************
02: * Copyright (c) 2000, 2005 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdt.ui.search;
11:
12: import org.eclipse.core.runtime.CoreException;
13: import org.eclipse.core.runtime.IProgressMonitor;
14:
15: /**
16: * This is the interface expected of extensions to the extension point
17: * <code>org.eclipse.jdt.ui.queryParticipants</code>.
18: * <p>
19: * A <code>IQueryParticipant</code> is called during the execution of a
20: * Java search query. It can report matches via an {@link ISearchRequestor} and
21: * may contribute a {@link IMatchPresentation} to help render the elements it contributes.
22: * </p>
23: * <p>
24: * Clients may implement this interface.
25: * </p>
26: *
27: * @since 3.0
28: */
29: public interface IQueryParticipant {
30: /**
31: * Executes the search described by the given <code>querySpecification</code>. Matches are reported
32: * to the given <code>requester</code>.
33: * The interpretation of what a given Java search (e.g. "References to class Foo") means is up to the
34: * participant.
35: * @param requestor The requester to report matches to.
36: * @param querySpecification The specification of the query to run.
37: * @param monitor A monitor to report progress on.
38: * @throws CoreException Thrown when the search can not be executed
39: */
40: void search(ISearchRequestor requestor,
41: QuerySpecification querySpecification,
42: IProgressMonitor monitor) throws CoreException;
43:
44: /**
45: * Returns the number of units of work estimated. The returned number should be normalized such
46: * that the number of ticks for the original Java search job is 1000. For example if the participant
47: * uses the same amount of time as the Java search, it should return 1000, if it uses half the time,
48: * it should return 500, etc.
49: * This method is supposed to give a quick estimate of the work to be done and is assumed
50: * to be much faster than the actual query.
51: * @param specification the specification to estimate.
52: * @return The number of ticks estimated.
53: */
54: int estimateTicks(QuerySpecification specification);
55:
56: /**
57: * Gets the UI participant responsible for handling the display of elements not known to the Java search UI. The Java search UI knows
58: * elements are of type <code>IJavaElement</code> and <code>IResource</code>.
59: * A participant may return <code>null</code> if matches are only reported against elements of type <code>IResource</code> and <code>IJavaElement</code>.
60: * @return The UI participant for this query participant or <code>null</code>.
61: */
62: IMatchPresentation getUIParticipant();
63: }
|