/**
* Copyright (c) 20015 by Brainwy Software Ltda. All Rights Reserved.
* Licensed under the terms of the Eclipse Public License (EPL).
* Please see the license.txt included with this distribution for details.
* Any modifications to this file must keep this entire header intact.
*/
package com.python.pydev.analysis.search_index;
import java.util.Collection;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.search.ui.NewSearchUI;
import org.python.pydev.core.MisconfigurationException;
import org.python.pydev.core.log.Log;
import org.python.pydev.plugin.nature.PythonNature;
import org.python.pydev.shared_ui.search.AbstractSearchIndexPage;
import org.python.pydev.shared_ui.search.ScopeAndData;
import org.python.pydev.shared_ui.search.SearchIndexData;
import com.python.pydev.analysis.AnalysisPlugin;
public class PySearchIndexPage extends AbstractSearchIndexPage {
public PySearchIndexPage() {
super(AnalysisPlugin.getDefault());
}
@Override
public boolean performAction() {
ScopeAndData scopeAndData = getScopeAndData();
SearchIndexData data = new SearchIndexData(fPattern.getText(), fIsCaseSensitiveCheckbox.getSelection(),
fIsWholeWordCheckbox.getSelection(), scopeAndData.scope, scopeAndData.scopeData, "*"); // filenamePattern is always * for Python searches (we'll always be searching the whole index).
PySearchIndexQuery query = new PySearchIndexQuery(data);
NewSearchUI.runQueryInBackground(query);
searchIndexDataHistory.add(data);
searchIndexDataHistory.writeConfiguration();
return true;
}
@Override
protected void checkSelectedResource(Collection<String> projectNames, Collection<String> moduleNames,
IResource resource) {
if (resource != null && resource.isAccessible()) {
IProject project = resource.getProject();
projectNames.add(project.getName());
PythonNature nature = PythonNature.getPythonNature(project);
String moduleName;
try {
moduleName = nature.resolveModule(resource);
} catch (MisconfigurationException e) {
Log.log(e);
return;
}
if (moduleName != null) {
for (String s : moduleNames) {
if (s.endsWith(".*")) {
if (moduleName.startsWith(s.substring(0, s.length() - 1))) {
//There's already another one which includes what we're about to add.
return;
}
}
}
if (resource instanceof IContainer) {
moduleNames.add(moduleName + ".*");
} else {
moduleNames.add(moduleName);
}
}
}
}
}