blob: 76399eb11ab227dbd73348c7d7087da3540f28a7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2011 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jst.jsp.ui.internal.java.search;
import java.text.MessageFormat;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.search.SearchDocument;
import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchScope;
import org.eclipse.jst.jsp.core.internal.java.search.JSPSearchSupport;
import org.eclipse.jst.jsp.ui.internal.JSPUIMessages;
import org.eclipse.wst.sse.ui.internal.search.BasicSearchQuery;
/**
* Implementation of <code>ISearchQuery</code> for <code>IJavaElement</code>s in JSP files.
*
* @author pavery
*/
public class JSPSearchQuery extends BasicSearchQuery {
/** the IJavaElement we are searching for in the file **/
private IJavaElement fElement = null;
public JSPSearchQuery(IFile file, IJavaElement element) {
super(file);
super.setResult(new JSPOccurrencesSearchResult(this));
this.fElement = element;
}
public IJavaElement getJavaElement() {
return this.fElement;
}
// for access by inner class
public JSPSearchQuery getInstance() {
return this;
}
protected IStatus doQuery(IProgressMonitor monitor) {
IStatus status = Status.OK_STATUS;
try {
JSPSearchSupport support = JSPSearchSupport.getInstance();
// index the file
SearchDocument delegate = support.addJspFile(getFile());
String scopePath = delegate.getPath();
JSPSearchScope singleFileScope = new JSPSearchScope(new String[]{getFile().getFullPath().toString(), scopePath});
// perform a searchs
// by passing in this jsp search query, requstor can add matches
support.searchRunnable(getJavaElement(), singleFileScope, new JSPSingleFileSearchRequestor(getInstance()), monitor);
}
catch (Exception e){
status = new Status(IStatus.ERROR, "org.eclipse.wst.sse.ui", IStatus.OK, "", null); //$NON-NLS-1$ //$NON-NLS-2$
}
return status;
}
/**
* @see org.eclipse.search.ui.ISearchQuery#getLabel()
*/
public String getLabel() {
String label = JSPUIMessages.OccurrencesSearchQuery_0; //$NON-NLS-1$
String[] args = {getSearchText(), "" + super.getMatchCount(), getFilename()};
return MessageFormat.format(label, args);
}
private String getFilename() {
String filename = JSPUIMessages.OccurrencesSearchQuery_2;
if(getFile() != null)
filename = getFile().getName();
return filename;
}
protected String getSearchText() {
if(fElement != null)
return fElement.getElementName();
return "";
}
public boolean canRerun() {
return false;
}
/**
* @see org.eclipse.search.ui.ISearchQuery#canRunInBackground()
*/
public boolean canRunInBackground() {
return true;
}
}