Search in sources :

Example 1 with ElementQuerySpecification

use of org.eclipse.jdt.ui.search.ElementQuerySpecification in project che by eclipse.

the class SearchManager method performFindUsageSearch.

private FindUsagesResponse performFindUsageSearch(IJavaElement element) throws JavaModelException, BadLocationException {
    JavaSearchScopeFactory factory = JavaSearchScopeFactory.getInstance();
    boolean isInsideJRE = factory.isInsideJRE(element);
    JavaSearchQuery query = new JavaSearchQuery(new ElementQuerySpecification(element, IJavaSearchConstants.REFERENCES, factory.createWorkspaceScope(isInsideJRE), "workspace scope"));
    NewSearchUI.runQueryInForeground(null, query);
    ISearchResult result = query.getSearchResult();
    JavaSearchResult javaResult = ((JavaSearchResult) result);
    FindUsagesResponse response = DtoFactory.newDto(FindUsagesResponse.class);
    Map<String, List<org.eclipse.che.ide.ext.java.shared.dto.search.Match>> mapMaches = new HashMap<>();
    JavaElementToDtoConverter converter = new JavaElementToDtoConverter(javaResult);
    for (Object o : javaResult.getElements()) {
        IJavaElement javaElement = (IJavaElement) o;
        IDocument document = null;
        if (javaElement instanceof IMember) {
            IMember member = ((IMember) javaElement);
            if (member.isBinary()) {
                if (member.getClassFile().getSource() != null) {
                    document = new Document(member.getClassFile().getSource());
                }
            } else {
                document = getDocument(member.getCompilationUnit());
            }
        } else if (javaElement instanceof IPackageDeclaration) {
            ICompilationUnit ancestor = (ICompilationUnit) (javaElement).getAncestor(IJavaElement.COMPILATION_UNIT);
            document = getDocument(ancestor);
        }
        converter.addElementToProjectHierarchy(javaElement);
        Match[] matches = javaResult.getMatches(o);
        List<org.eclipse.che.ide.ext.java.shared.dto.search.Match> matchList = new ArrayList<>();
        for (Match match : matches) {
            org.eclipse.che.ide.ext.java.shared.dto.search.Match dtoMatch = DtoFactory.newDto(org.eclipse.che.ide.ext.java.shared.dto.search.Match.class);
            if (document != null) {
                IRegion lineInformation = document.getLineInformationOfOffset(match.getOffset());
                int offsetInLine = match.getOffset() - lineInformation.getOffset();
                Region matchInLine = DtoFactory.newDto(Region.class).withOffset(offsetInLine).withLength(match.getLength());
                dtoMatch.setMatchInLine(matchInLine);
                dtoMatch.setMatchLineNumber(document.getLineOfOffset(match.getOffset()));
                dtoMatch.setMatchedLine(document.get(lineInformation.getOffset(), lineInformation.getLength()));
            }
            dtoMatch.setFileMatchRegion(DtoFactory.newDto(Region.class).withOffset(match.getOffset()).withLength(match.getLength()));
            matchList.add(dtoMatch);
        }
        mapMaches.put(javaElement.getHandleIdentifier(), matchList);
    }
    List<JavaProject> projects = converter.getProjects();
    response.setProjects(projects);
    response.setMatches(mapMaches);
    response.setSearchElementLabel(JavaElementLabels.getElementLabel(element, JavaElementLabels.ALL_DEFAULT));
    return response;
}
Also used : ISearchResult(org.eclipse.search.ui.ISearchResult) FindUsagesResponse(org.eclipse.che.ide.ext.java.shared.dto.search.FindUsagesResponse) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) Document(org.eclipse.jface.text.Document) IDocument(org.eclipse.jface.text.IDocument) IMember(org.eclipse.jdt.core.IMember) IRegion(org.eclipse.jface.text.IRegion) Match(org.eclipse.search.ui.text.Match) JavaSearchResult(org.eclipse.jdt.internal.ui.search.JavaSearchResult) ArrayList(java.util.ArrayList) List(java.util.List) JavaSearchScopeFactory(org.eclipse.jdt.internal.ui.search.JavaSearchScopeFactory) IJavaElement(org.eclipse.jdt.core.IJavaElement) ICompilationUnit(org.eclipse.jdt.core.ICompilationUnit) JavaProject(org.eclipse.che.ide.ext.java.shared.dto.model.JavaProject) IJavaProject(org.eclipse.jdt.core.IJavaProject) ElementQuerySpecification(org.eclipse.jdt.ui.search.ElementQuerySpecification) JavaSearchQuery(org.eclipse.jdt.internal.ui.search.JavaSearchQuery) Region(org.eclipse.che.ide.ext.java.shared.dto.Region) IRegion(org.eclipse.jface.text.IRegion) IPackageDeclaration(org.eclipse.jdt.core.IPackageDeclaration) IDocument(org.eclipse.jface.text.IDocument)

Example 2 with ElementQuerySpecification

use of org.eclipse.jdt.ui.search.ElementQuerySpecification in project che by eclipse.

the class SearchTestHelper method runMethodRefQuery.

static JavaSearchQuery runMethodRefQuery(String TypeName, String methodName, String[] parameterTypes) throws JavaModelException {
    IMethod method = getMethod(TypeName, methodName, parameterTypes);
    JavaSearchQuery query = new JavaSearchQuery(new ElementQuerySpecification(method, IJavaSearchConstants.REFERENCES, JavaSearchScopeFactory.getInstance().createWorkspaceScope(true), "workspace scope"));
    NewSearchUI.runQueryInForeground(null, query);
    return query;
}
Also used : JavaSearchQuery(org.eclipse.jdt.internal.ui.search.JavaSearchQuery) ElementQuerySpecification(org.eclipse.jdt.ui.search.ElementQuerySpecification) IMethod(org.eclipse.jdt.core.IMethod)

Example 3 with ElementQuerySpecification

use of org.eclipse.jdt.ui.search.ElementQuerySpecification in project xtext-eclipse by eclipse.

the class QueryParticipant method search.

@Override
public void search(ISearchRequestor requestor, QuerySpecification query, IProgressMonitor monitor) throws CoreException {
    if (!isHandled(query)) {
        return;
    }
    if (monitor == null) {
        monitor = new NullProgressMonitor();
    }
    try {
        if (query instanceof ElementQuerySpecification) {
            ElementQuerySpecification elementQuery = (ElementQuerySpecification) query;
            IJavaElement element = elementQuery.getElement();
            final URI uri = typeURIHelper.getFullURI(element);
            if (uri != null)
                createSearchHelper(requestor).search(uri, monitor);
        }
    } finally {
        monitor.done();
    }
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) IJavaElement(org.eclipse.jdt.core.IJavaElement) ElementQuerySpecification(org.eclipse.jdt.ui.search.ElementQuerySpecification) URI(org.eclipse.emf.common.util.URI)

Example 4 with ElementQuerySpecification

use of org.eclipse.jdt.ui.search.ElementQuerySpecification in project xtext-eclipse by eclipse.

the class JdtReferenceFinder method createQuery.

@SuppressWarnings("all")
protected QuerySpecification createQuery(IJavaElement element) throws JavaModelException, InterruptedException {
    JavaSearchScopeFactory factory = JavaSearchScopeFactory.getInstance();
    boolean isInsideJRE = factory.isInsideJRE(element);
    IJavaSearchScope scope = factory.createWorkspaceScope(isInsideJRE);
    String description = factory.getWorkspaceScopeDescription(isInsideJRE);
    return new ElementQuerySpecification(element, IJavaSearchConstants.REFERENCES, scope, description);
}
Also used : IJavaSearchScope(org.eclipse.jdt.core.search.IJavaSearchScope) ElementQuerySpecification(org.eclipse.jdt.ui.search.ElementQuerySpecification) JavaSearchScopeFactory(org.eclipse.jdt.internal.ui.search.JavaSearchScopeFactory)

Example 5 with ElementQuerySpecification

use of org.eclipse.jdt.ui.search.ElementQuerySpecification in project che by eclipse.

the class SearchTestHelper method runTypeRefQuery.

static JavaSearchQuery runTypeRefQuery(String typeName) throws JavaModelException {
    IType type = getType(typeName);
    JavaSearchQuery query = new JavaSearchQuery(new ElementQuerySpecification(type, IJavaSearchConstants.REFERENCES, JavaSearchScopeFactory.getInstance().createWorkspaceScope(true), "workspace scope"));
    NewSearchUI.runQueryInForeground(null, query);
    return query;
}
Also used : JavaSearchQuery(org.eclipse.jdt.internal.ui.search.JavaSearchQuery) ElementQuerySpecification(org.eclipse.jdt.ui.search.ElementQuerySpecification) IType(org.eclipse.jdt.core.IType)

Aggregations

ElementQuerySpecification (org.eclipse.jdt.ui.search.ElementQuerySpecification)8 IJavaElement (org.eclipse.jdt.core.IJavaElement)5 JavaSearchQuery (org.eclipse.jdt.internal.ui.search.JavaSearchQuery)3 PatternQuerySpecification (org.eclipse.jdt.ui.search.PatternQuerySpecification)3 JavaSearchScopeFactory (org.eclipse.jdt.internal.ui.search.JavaSearchScopeFactory)2 ISearchRequestor (org.eclipse.jdt.ui.search.ISearchRequestor)2 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 List (java.util.List)1 Region (org.eclipse.che.ide.ext.java.shared.dto.Region)1 JavaProject (org.eclipse.che.ide.ext.java.shared.dto.model.JavaProject)1 FindUsagesResponse (org.eclipse.che.ide.ext.java.shared.dto.search.FindUsagesResponse)1 IProject (org.eclipse.core.resources.IProject)1 CoreException (org.eclipse.core.runtime.CoreException)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 ISafeRunnable (org.eclipse.core.runtime.ISafeRunnable)1 IStatus (org.eclipse.core.runtime.IStatus)1 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)1 PerformanceStats (org.eclipse.core.runtime.PerformanceStats)1 Status (org.eclipse.core.runtime.Status)1