mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
CTag Indexer - patch to index include path
Clean up of deprecated search UI
This commit is contained in:
parent
bd573a8236
commit
37337c303a
14 changed files with 96 additions and 646 deletions
|
@ -24,6 +24,8 @@ import org.eclipse.cdt.internal.core.index.IIndexerOutput;
|
||||||
import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
|
import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
|
||||||
import org.eclipse.core.resources.IFile;
|
import org.eclipse.core.resources.IFile;
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
|
import org.eclipse.core.resources.IResource;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.core.runtime.Path;
|
import org.eclipse.core.runtime.Path;
|
||||||
|
|
||||||
|
@ -31,9 +33,10 @@ public class CTagsFileReader {
|
||||||
|
|
||||||
String filename = null;
|
String filename = null;
|
||||||
List list = null;
|
List list = null;
|
||||||
IProject project;
|
IProject project = null;
|
||||||
IIndex index;
|
IIndex index = null;
|
||||||
CTagsIndexer indexer;
|
CTagsIndexer indexer = null;
|
||||||
|
IPath rootDirectory = null;
|
||||||
|
|
||||||
public CTagsFileReader(IProject project,String filename, CTagsIndexer indexer) {
|
public CTagsFileReader(IProject project,String filename, CTagsIndexer indexer) {
|
||||||
this.filename = filename;
|
this.filename = filename;
|
||||||
|
@ -90,9 +93,26 @@ public class CTagsFileReader {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (currentFile != null){
|
if (currentFile != null){
|
||||||
indexer = new MiniIndexer(currentFile);
|
indexer = new MiniIndexer(currentFile.getFullPath());
|
||||||
index.add(currentFile,indexer);
|
index.add(currentFile,indexer);
|
||||||
|
} else {
|
||||||
|
indexer = new MiniIndexer(rootDirectory.append(fileName));
|
||||||
|
try {
|
||||||
|
IResource[] resources = project.members();
|
||||||
|
IFile tempFile=null;
|
||||||
|
for (int i=0; i<resources.length; i++){
|
||||||
|
if (resources[i].getType()==IResource.FILE){
|
||||||
|
tempFile = (IFile) resources[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (tempFile != null){
|
||||||
|
index.add(tempFile,indexer);
|
||||||
|
}
|
||||||
|
} catch (CoreException e) { }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,16 +125,16 @@ public class CTagsFileReader {
|
||||||
class MiniIndexer implements IIndexer {
|
class MiniIndexer implements IIndexer {
|
||||||
|
|
||||||
IIndexerOutput output;
|
IIndexerOutput output;
|
||||||
IFile currentFile;
|
IPath currentFile; //currentFile.getFullPath()
|
||||||
/**
|
/**
|
||||||
* @param currentFile
|
* @param currentFile
|
||||||
*/
|
*/
|
||||||
public MiniIndexer(IFile currentFile) {
|
public MiniIndexer(IPath currentFile) {
|
||||||
this.currentFile = currentFile;
|
this.currentFile = currentFile;
|
||||||
}
|
}
|
||||||
public void addToOutput(CTagEntry tagEntry){
|
public void addToOutput(CTagEntry tagEntry){
|
||||||
|
|
||||||
IndexedFileEntry mainIndexFile = this.output.getIndexedFile(currentFile.getFullPath().toString());
|
IndexedFileEntry mainIndexFile = this.output.getIndexedFile(currentFile.toString());
|
||||||
int fileNum = 0;
|
int fileNum = 0;
|
||||||
if (mainIndexFile != null)
|
if (mainIndexFile != null)
|
||||||
fileNum = mainIndexFile.getFileID();
|
fileNum = mainIndexFile.getFileID();
|
||||||
|
@ -125,8 +145,8 @@ public class CTagsFileReader {
|
||||||
* @see org.eclipse.cdt.internal.core.index.IIndexer#index(org.eclipse.cdt.internal.core.index.IDocument, org.eclipse.cdt.internal.core.index.IIndexerOutput)
|
* @see org.eclipse.cdt.internal.core.index.IIndexer#index(org.eclipse.cdt.internal.core.index.IDocument, org.eclipse.cdt.internal.core.index.IIndexerOutput)
|
||||||
*/
|
*/
|
||||||
public void index(IFile file, IIndexerOutput output) throws IOException {
|
public void index(IFile file, IIndexerOutput output) throws IOException {
|
||||||
this.output = output;
|
this.output = output;
|
||||||
IndexedFileEntry indFile =output.addIndexedFile(file.getFullPath().toString());
|
IndexedFileEntry indFile =output.addIndexedFile(currentFile.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
|
@ -144,4 +164,9 @@ public class CTagsFileReader {
|
||||||
this.index = index;
|
this.index = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setRootDirectory(IPath path) {
|
||||||
|
this.rootDirectory = path;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,11 @@ import org.eclipse.cdt.core.CCorePlugin;
|
||||||
import org.eclipse.cdt.core.CommandLauncher;
|
import org.eclipse.cdt.core.CommandLauncher;
|
||||||
import org.eclipse.cdt.core.ICDescriptor;
|
import org.eclipse.cdt.core.ICDescriptor;
|
||||||
import org.eclipse.cdt.core.ICExtensionReference;
|
import org.eclipse.cdt.core.ICExtensionReference;
|
||||||
|
import org.eclipse.cdt.core.model.CModelException;
|
||||||
|
import org.eclipse.cdt.core.model.CoreModel;
|
||||||
import org.eclipse.cdt.core.model.ICModelMarker;
|
import org.eclipse.cdt.core.model.ICModelMarker;
|
||||||
|
import org.eclipse.cdt.core.model.ICProject;
|
||||||
|
import org.eclipse.cdt.core.model.IIncludeReference;
|
||||||
import org.eclipse.cdt.internal.core.index.IIndex;
|
import org.eclipse.cdt.internal.core.index.IIndex;
|
||||||
import org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer;
|
import org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer;
|
||||||
import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
|
import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
|
||||||
|
@ -82,13 +86,14 @@ class CTagsIndexAll extends CTagsIndexRequest {
|
||||||
|
|
||||||
boolean success=false;
|
boolean success=false;
|
||||||
|
|
||||||
|
|
||||||
if (useInternalCTagsFile()){
|
if (useInternalCTagsFile()){
|
||||||
if (AbstractIndexer.TIMING)
|
if (AbstractIndexer.TIMING)
|
||||||
startTime = System.currentTimeMillis();
|
startTime = System.currentTimeMillis();
|
||||||
|
|
||||||
|
|
||||||
//run CTags over project
|
//run CTags over project
|
||||||
success = runCTags();
|
success = runCTags(project.getLocation());
|
||||||
ctagsFileToUse=ctagsFile;
|
ctagsFileToUse=ctagsFile;
|
||||||
|
|
||||||
if (AbstractIndexer.TIMING){
|
if (AbstractIndexer.TIMING){
|
||||||
|
@ -117,6 +122,9 @@ class CTagsIndexAll extends CTagsIndexRequest {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Try to index includes (if any exist)
|
||||||
|
//cTagsInclude(index);
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
if (IndexManager.VERBOSE) {
|
if (IndexManager.VERBOSE) {
|
||||||
JobManager.verbose("-> failed to index " + this.project + " because of the following exception:"); //$NON-NLS-1$ //$NON-NLS-2$
|
JobManager.verbose("-> failed to index " + this.project + " because of the following exception:"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
@ -130,10 +138,32 @@ class CTagsIndexAll extends CTagsIndexRequest {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void cTagsInclude(IIndex index) {
|
||||||
|
|
||||||
|
ICProject cProj = CoreModel.getDefault().create(project);
|
||||||
|
IIncludeReference[] refs = new IIncludeReference[0];
|
||||||
|
try {
|
||||||
|
refs = cProj.getIncludeReferences();
|
||||||
|
} catch (CModelException e) {}
|
||||||
|
|
||||||
|
for (int i=0; i<refs.length; i++){
|
||||||
|
runCTags(refs[i].getPath());
|
||||||
|
ctagsFileToUse=ctagsFile;
|
||||||
|
//Parse the CTag File
|
||||||
|
CTagsFileReader reader = new CTagsFileReader(project,ctagsFileToUse,indexer);
|
||||||
|
reader.setRootDirectory(refs[i].getPath());
|
||||||
|
reader.setIndex(index);
|
||||||
|
reader.parse();
|
||||||
|
}
|
||||||
|
|
||||||
|
// request to save index when all cus have been indexed
|
||||||
|
indexer.request(new CTagsSaveIndex(this.indexPath, indexer));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private boolean runCTags() {
|
private boolean runCTags(IPath directoryToRunFrom) {
|
||||||
String[] args = {"--excmd=number", //$NON-NLS-1$
|
String[] args = {"--excmd=number", //$NON-NLS-1$
|
||||||
"--format=2", //$NON-NLS-1$
|
"--format=2", //$NON-NLS-1$
|
||||||
"--sort=no", //$NON-NLS-1$
|
"--sort=no", //$NON-NLS-1$
|
||||||
|
@ -144,20 +174,20 @@ class CTagsIndexAll extends CTagsIndexRequest {
|
||||||
"-f",ctagsFile,"-R"}; //$NON-NLS-1$ //$NON-NLS-2$
|
"-f",ctagsFile,"-R"}; //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
|
||||||
try{
|
try{
|
||||||
//Make sure that there is no ctags file leftover in the metadata
|
//Make sure that there is no ctags file leftover in the metadata
|
||||||
File tagsFile = new File(ctagsFile);
|
File tagsFile = new File(ctagsFile);
|
||||||
if (tagsFile.exists()){
|
|
||||||
tagsFile.delete();
|
|
||||||
}
|
|
||||||
|
|
||||||
CommandLauncher launcher = new CommandLauncher();
|
if (tagsFile.exists()){
|
||||||
// Print the command for visual interaction.
|
tagsFile.delete();
|
||||||
launcher.showCommand(true);
|
}
|
||||||
|
|
||||||
IPath fileDirectory = project.getLocation();
|
CommandLauncher launcher = new CommandLauncher();
|
||||||
//Process p = launcher.execute(fCompileCommand, args, setEnvironment(launcher), fWorkingDirectory);
|
// Print the command for visual interaction.
|
||||||
Process p = launcher.execute(new Path("ctags"), args, null, fileDirectory); //$NON-NLS-1$
|
launcher.showCommand(true);
|
||||||
p.waitFor();
|
|
||||||
|
//Process p = launcher.execute(fCompileCommand, args, setEnvironment(launcher), fWorkingDirectory);
|
||||||
|
Process p = launcher.execute(new Path("ctags"), args, null, directoryToRunFrom); //$NON-NLS-1$
|
||||||
|
p.waitFor();
|
||||||
|
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -68,7 +68,7 @@ public class DOMDisplaySearchNames extends CSearchQuery implements ISearchQuery
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public DOMDisplaySearchNames(IASTNode[] nodes, String queryLabel, String pattern) {
|
public DOMDisplaySearchNames(IASTNode[] nodes, String queryLabel, String pattern) {
|
||||||
super(CUIPlugin.getWorkspace(), pattern, false, null, null, null, queryLabel, null);
|
super(CUIPlugin.getWorkspace(), pattern, false, null, null, null, queryLabel);
|
||||||
this.nodes = nodes;
|
this.nodes = nodes;
|
||||||
this.queryLabel = queryLabel;
|
this.queryLabel = queryLabel;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ public class IndexerQuery extends CSearchQuery implements ISearchQuery {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public IndexerQuery(IndexerNodeLeaf leaf, String queryLabel, String pattern) {
|
public IndexerQuery(IndexerNodeLeaf leaf, String queryLabel, String pattern) {
|
||||||
super(CTestPlugin.getWorkspace(), pattern, false, null, null, null, queryLabel, null);
|
super(CTestPlugin.getWorkspace(), pattern, false, null, null, null, queryLabel);
|
||||||
this.leaf = leaf;
|
this.leaf = leaf;
|
||||||
this.queryLabel = queryLabel;
|
this.queryLabel = queryLabel;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,153 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2003, 2004 IBM Corporation and others.
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Common Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/cpl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IBM Corp. - Rational Software - initial implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
/*
|
|
||||||
* Created on Jun 11, 2003
|
|
||||||
*/
|
|
||||||
package org.eclipse.cdt.internal.ui.search;
|
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.core.search.ICSearchConstants;
|
|
||||||
import org.eclipse.cdt.core.search.ICSearchPattern;
|
|
||||||
import org.eclipse.cdt.core.search.ICSearchScope;
|
|
||||||
import org.eclipse.cdt.core.search.OrPattern;
|
|
||||||
import org.eclipse.cdt.core.search.SearchEngine;
|
|
||||||
import org.eclipse.cdt.internal.ui.CPluginImages;
|
|
||||||
import org.eclipse.cdt.ui.CUIPlugin;
|
|
||||||
import org.eclipse.core.resources.IWorkspace;
|
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
|
||||||
import org.eclipse.jface.operation.IRunnableWithProgress;
|
|
||||||
import org.eclipse.jface.resource.ImageDescriptor;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author aniefer
|
|
||||||
*
|
|
||||||
* To change the template for this generated type comment go to
|
|
||||||
* Window>Preferences>Java>Code Generation>Code and Comments
|
|
||||||
*/
|
|
||||||
public class CSearchOperation implements IRunnableWithProgress,ICSearchConstants{
|
|
||||||
public CSearchOperation(IWorkspace workspace, String pattern, boolean caseSensitive, List searchFor, LimitTo limitTo, ICSearchScope scope, String scopeDescription, CSearchResultCollector collector) {
|
|
||||||
this( workspace, limitTo, scope, scopeDescription, collector );
|
|
||||||
_stringPattern = pattern;
|
|
||||||
_caseSensitive = caseSensitive;
|
|
||||||
_searchFor = searchFor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CSearchOperation(IWorkspace workspace, LimitTo limitTo, ICSearchScope scope, String scopeDescription, CSearchResultCollector collector ){
|
|
||||||
_workspace = workspace;
|
|
||||||
_limitTo = limitTo;
|
|
||||||
_scope = scope;
|
|
||||||
_scopeDescription = scopeDescription;
|
|
||||||
_collector = collector;
|
|
||||||
_collector.setOperation( this );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.ui.actions.WorkspaceModifyOperation#execute(org.eclipse.core.runtime.IProgressMonitor)
|
|
||||||
*/
|
|
||||||
public void run(IProgressMonitor monitor)throws InvocationTargetException
|
|
||||||
{
|
|
||||||
_collector.setProgressMonitor( monitor );
|
|
||||||
|
|
||||||
SearchEngine engine = new SearchEngine( CUIPlugin.getSharedWorkingCopies() );
|
|
||||||
|
|
||||||
ICSearchPattern pattern = null;
|
|
||||||
if( _searchFor.size() > 1 ){
|
|
||||||
OrPattern orPattern = new OrPattern();
|
|
||||||
for (Iterator iter = _searchFor.iterator(); iter.hasNext();) {
|
|
||||||
SearchFor element = (SearchFor)iter.next();
|
|
||||||
orPattern.addPattern( SearchEngine.createSearchPattern( _stringPattern, element, _limitTo, _caseSensitive ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
pattern = orPattern;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Iterator iter = _searchFor.iterator();
|
|
||||||
pattern = SearchEngine.createSearchPattern( _stringPattern, (SearchFor)iter.next(), _limitTo, _caseSensitive );
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
engine.search( _workspace, pattern, _scope, _collector, false );
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public String getSingularLabel() {
|
|
||||||
String desc = null;
|
|
||||||
|
|
||||||
//if( _elementPattern != null ){
|
|
||||||
// desc = _elementPattern.getElementName();
|
|
||||||
//} else {
|
|
||||||
desc = _stringPattern;
|
|
||||||
//}
|
|
||||||
|
|
||||||
String [] args = new String [] { desc, _scopeDescription };
|
|
||||||
|
|
||||||
if( _limitTo == DECLARATIONS ){
|
|
||||||
return CSearchMessages.getFormattedString( "CSearchOperation.singularDeclarationsPostfix", args ); //$NON_NLS-1$ //$NON-NLS-1$
|
|
||||||
} else if( _limitTo == REFERENCES ){
|
|
||||||
return CSearchMessages.getFormattedString( "CSearchOperation.singularReferencesPostfix", args ); //$NON_NLS-1$ //$NON-NLS-1$
|
|
||||||
} else {
|
|
||||||
return CSearchMessages.getFormattedString( "CSearchOperation.singularOccurrencesPostfix", args ); //$NON_NLS-1$ //$NON-NLS-1$
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public String getPluralLabelPattern() {
|
|
||||||
String desc = null;
|
|
||||||
|
|
||||||
// if( _elementPattern != null ){
|
|
||||||
// desc = _elementPattern.getElementName();
|
|
||||||
// } else {
|
|
||||||
desc = _stringPattern;
|
|
||||||
// }
|
|
||||||
|
|
||||||
String [] args = new String [] { desc, "{0}", _scopeDescription }; //$NON-NLS-1$
|
|
||||||
if( _limitTo == DECLARATIONS ){
|
|
||||||
return CSearchMessages.getFormattedString( "CSearchOperation.pluralDeclarationsPostfix", args ); //$NON_NLS-1$ //$NON-NLS-1$
|
|
||||||
} else if ( _limitTo == REFERENCES ){
|
|
||||||
return CSearchMessages.getFormattedString( "CSearchOperation.pluralReferencesPostfix", args ); //$NON_NLS-1$ //$NON-NLS-1$
|
|
||||||
} else {
|
|
||||||
return CSearchMessages.getFormattedString( "CSearchOperation.pluralOccurrencesPostfix", args ); //$NON_NLS-1$ //$NON-NLS-1$
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public ImageDescriptor getImageDescriptor() {
|
|
||||||
if( _limitTo == ICSearchConstants.DECLARATIONS ){
|
|
||||||
return CPluginImages.DESC_OBJS_SEARCH_DECL;
|
|
||||||
} else {
|
|
||||||
return CPluginImages.DESC_OBJS_SEARCH_REF;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private CSearchResultCollector _collector;
|
|
||||||
private IWorkspace _workspace;
|
|
||||||
//private ICElement _elementPattern;
|
|
||||||
private ICSearchScope _scope;
|
|
||||||
private String _stringPattern;
|
|
||||||
private String _scopeDescription;
|
|
||||||
private boolean _caseSensitive;
|
|
||||||
private LimitTo _limitTo;
|
|
||||||
private List _searchFor;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -43,7 +43,6 @@ import org.eclipse.jface.viewers.IStructuredSelection;
|
||||||
import org.eclipse.jface.viewers.StructuredSelection;
|
import org.eclipse.jface.viewers.StructuredSelection;
|
||||||
import org.eclipse.search.ui.ISearchPage;
|
import org.eclipse.search.ui.ISearchPage;
|
||||||
import org.eclipse.search.ui.ISearchPageContainer;
|
import org.eclipse.search.ui.ISearchPageContainer;
|
||||||
import org.eclipse.search.ui.ISearchResultViewEntry;
|
|
||||||
import org.eclipse.search.ui.NewSearchUI;
|
import org.eclipse.search.ui.NewSearchUI;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.events.ModifyEvent;
|
import org.eclipse.swt.events.ModifyEvent;
|
||||||
|
@ -126,7 +125,7 @@ public class CSearchPage extends DialogPage implements ISearchPage, ICSearchCons
|
||||||
searching = data.searchFor;
|
searching = data.searchFor;
|
||||||
}
|
}
|
||||||
|
|
||||||
CSearchQuery job = new CSearchQuery(workspace, data.pattern, data.isCaseSensitive, searching, data.limitTo, scope, scopeDescription, null);
|
CSearchQuery job = new CSearchQuery(workspace, data.pattern, data.isCaseSensitive, searching, data.limitTo, scope, scopeDescription);
|
||||||
NewSearchUI.activateSearchResultView();
|
NewSearchUI.activateSearchResultView();
|
||||||
|
|
||||||
NewSearchUI.runQueryInBackground(job);
|
NewSearchUI.runQueryInBackground(job);
|
||||||
|
@ -486,13 +485,7 @@ public class CSearchPage extends DialogPage implements ISearchPage, ICSearchCons
|
||||||
Object o = selection.getFirstElement();
|
Object o = selection.getFirstElement();
|
||||||
if( o instanceof ICElement ) {
|
if( o instanceof ICElement ) {
|
||||||
return determineInitValuesFrom( (ICElement)o );
|
return determineInitValuesFrom( (ICElement)o );
|
||||||
} else if( o instanceof ISearchResultViewEntry ) {
|
} else if( o instanceof IAdaptable ) {
|
||||||
ICElement element = CSearchUtil.getCElement( ((ISearchResultViewEntry)o).getSelectedMarker() );
|
|
||||||
return determineInitValuesFrom( element );
|
|
||||||
//} else if( o instanceof LogicalPackage ) {
|
|
||||||
// LogicalPackage lp = (LogicalPackage)o;
|
|
||||||
// return new SearchPatternData( PACKAGE, REFERENCES, fIsCaseSensitive, lp.getElementName(), null );
|
|
||||||
} else if( o instanceof IAdaptable ) {
|
|
||||||
ICElement element = (ICElement)((IAdaptable)o).getAdapter( ICElement.class );
|
ICElement element = (ICElement)((IAdaptable)o).getAdapter( ICElement.class );
|
||||||
if( element != null ) {
|
if( element != null ) {
|
||||||
return determineInitValuesFrom( element );
|
return determineInitValuesFrom( element );
|
||||||
|
|
|
@ -18,7 +18,6 @@ import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.search.ICSearchConstants;
|
import org.eclipse.cdt.core.search.ICSearchConstants;
|
||||||
import org.eclipse.cdt.core.search.ICSearchPattern;
|
import org.eclipse.cdt.core.search.ICSearchPattern;
|
||||||
import org.eclipse.cdt.core.search.ICSearchResultCollector;
|
|
||||||
import org.eclipse.cdt.core.search.ICSearchScope;
|
import org.eclipse.cdt.core.search.ICSearchScope;
|
||||||
import org.eclipse.cdt.core.search.OrPattern;
|
import org.eclipse.cdt.core.search.OrPattern;
|
||||||
import org.eclipse.cdt.core.search.SearchEngine;
|
import org.eclipse.cdt.core.search.SearchEngine;
|
||||||
|
@ -37,7 +36,6 @@ import org.eclipse.search.ui.ISearchResult;
|
||||||
*/
|
*/
|
||||||
public class CSearchQuery implements ISearchQuery, ICSearchConstants {
|
public class CSearchQuery implements ISearchQuery, ICSearchConstants {
|
||||||
|
|
||||||
private ICSearchResultCollector _collector;
|
|
||||||
private IWorkspace _workspace;
|
private IWorkspace _workspace;
|
||||||
private ICSearchScope _scope;
|
private ICSearchScope _scope;
|
||||||
private String _stringPattern;
|
private String _stringPattern;
|
||||||
|
@ -47,21 +45,18 @@ public class CSearchQuery implements ISearchQuery, ICSearchConstants {
|
||||||
private List _searchFor;
|
private List _searchFor;
|
||||||
private CSearchResult _result;
|
private CSearchResult _result;
|
||||||
|
|
||||||
public CSearchQuery(IWorkspace workspace, String pattern, boolean caseSensitive, List searchFor, LimitTo limitTo, ICSearchScope scope, String scopeDescription, ICSearchResultCollector collector) {
|
public CSearchQuery(IWorkspace workspace, String pattern, boolean caseSensitive, List searchFor, LimitTo limitTo, ICSearchScope scope, String scopeDescription) {
|
||||||
this( workspace, limitTo, scope, scopeDescription, collector );
|
this( workspace, limitTo, scope, scopeDescription );
|
||||||
_stringPattern = pattern;
|
_stringPattern = pattern;
|
||||||
_caseSensitive = caseSensitive;
|
_caseSensitive = caseSensitive;
|
||||||
_searchFor = searchFor;
|
_searchFor = searchFor;
|
||||||
}
|
}
|
||||||
|
|
||||||
public CSearchQuery(IWorkspace workspace, LimitTo limitTo, ICSearchScope scope, String scopeDescription, ICSearchResultCollector collector ){
|
public CSearchQuery(IWorkspace workspace, LimitTo limitTo, ICSearchScope scope, String scopeDescription){
|
||||||
_workspace = workspace;
|
_workspace = workspace;
|
||||||
_limitTo = limitTo;
|
_limitTo = limitTo;
|
||||||
_scope = scope;
|
_scope = scope;
|
||||||
_scopeDescription = scopeDescription;
|
_scopeDescription = scopeDescription;
|
||||||
_collector = collector;
|
|
||||||
if (_collector instanceof CSearchResultCollector)
|
|
||||||
((CSearchResultCollector)_collector).setOperation( this );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,234 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2003, 2004 IBM Corporation and others.
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Common Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/cpl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IBM Corp. - Rational Software - initial implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
/*
|
|
||||||
* Created on Jun 11, 2003
|
|
||||||
*/
|
|
||||||
package org.eclipse.cdt.internal.ui.search;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
|
||||||
import org.eclipse.cdt.core.search.BasicSearchMatch;
|
|
||||||
import org.eclipse.cdt.core.search.BasicSearchResultCollector;
|
|
||||||
import org.eclipse.cdt.core.search.IMatch;
|
|
||||||
import org.eclipse.cdt.ui.CSearchResultLabelProvider;
|
|
||||||
import org.eclipse.cdt.ui.CUIPlugin;
|
|
||||||
import org.eclipse.core.resources.IFile;
|
|
||||||
import org.eclipse.core.resources.IMarker;
|
|
||||||
import org.eclipse.core.resources.IProject;
|
|
||||||
import org.eclipse.core.resources.IResource;
|
|
||||||
import org.eclipse.core.runtime.CoreException;
|
|
||||||
import org.eclipse.core.runtime.IPath;
|
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
|
||||||
import org.eclipse.jface.preference.IPreferenceStore;
|
|
||||||
import org.eclipse.search.ui.IGroupByKeyComputer;
|
|
||||||
import org.eclipse.search.ui.ISearchResultView;
|
|
||||||
import org.eclipse.search.ui.SearchUI;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author aniefer
|
|
||||||
*
|
|
||||||
* To change the template for this generated type comment go to
|
|
||||||
* Window>Preferences>Java>Code Generation>Code and Comments
|
|
||||||
*/
|
|
||||||
public class CSearchResultCollector extends BasicSearchResultCollector{
|
|
||||||
|
|
||||||
public static final String IMATCH = CSearchMessages.getString("CSearchResultCollector.4"); //$NON-NLS-1$
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public CSearchResultCollector() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.core.search.ICSearchResultCollector#aboutToStart()
|
|
||||||
*/
|
|
||||||
public void aboutToStart() {
|
|
||||||
super.aboutToStart();
|
|
||||||
|
|
||||||
_matchCount = 0;
|
|
||||||
|
|
||||||
//_view = NewSearchUI.getSearchResultView();
|
|
||||||
|
|
||||||
|
|
||||||
CSearchResultLabelProvider labelProvider = new CSearchResultLabelProvider();
|
|
||||||
labelProvider.setOrder( CSearchResultLabelProvider.SHOW_PATH );
|
|
||||||
|
|
||||||
_computer = new GroupByKeyComputer();
|
|
||||||
|
|
||||||
if( _view != null ){
|
|
||||||
if (_operation != null){
|
|
||||||
_view.searchStarted(
|
|
||||||
null,//new ActionGroupFactory(),
|
|
||||||
_operation.getSingularLabel(),
|
|
||||||
_operation.getPluralLabelPattern(),
|
|
||||||
_operation.getImageDescriptor(),
|
|
||||||
CSearchPage.EXTENSION_POINT_ID,
|
|
||||||
labelProvider,
|
|
||||||
new GotoMarkerAction(),
|
|
||||||
_computer,
|
|
||||||
_operation
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else if (_query != null){
|
|
||||||
_view.searchStarted(
|
|
||||||
null,//new ActionGroupFactory(),
|
|
||||||
_query.getSingularLabel(),
|
|
||||||
_query.getPluralLabelPattern(),
|
|
||||||
_query.getImageDescriptor(),
|
|
||||||
CSearchPage.EXTENSION_POINT_ID,
|
|
||||||
labelProvider,
|
|
||||||
new GotoMarkerAction(),
|
|
||||||
_computer,
|
|
||||||
null
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( getProgressMonitor() != null && !getProgressMonitor().isCanceled() ){
|
|
||||||
getProgressMonitor().subTask( SEARCHING );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean acceptMatch( IMatch match ) throws CoreException
|
|
||||||
{
|
|
||||||
BasicSearchMatch searchMatch = (BasicSearchMatch) match;
|
|
||||||
|
|
||||||
if( !super.acceptMatch( match ) )
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if( searchMatch.resource == null &&
|
|
||||||
searchMatch.path == null)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (searchMatch.resource != null){
|
|
||||||
IMarker marker = searchMatch.resource.createMarker( SearchUI.SEARCH_MARKER );
|
|
||||||
|
|
||||||
HashMap markerAttributes = new HashMap( 2 );
|
|
||||||
|
|
||||||
//we can hang any other info we want off the marker
|
|
||||||
/*markerAttributes.put( IMarker.CHAR_START, new Integer( Math.max( searchMatch.startOffset, 0 ) ) );
|
|
||||||
markerAttributes.put( IMarker.CHAR_END, new Integer( Math.max( searchMatch.endOffset, 0 ) ) );*/
|
|
||||||
markerAttributes.put( IMATCH, searchMatch );
|
|
||||||
|
|
||||||
marker.setAttributes( markerAttributes );
|
|
||||||
|
|
||||||
if( _view != null ){
|
|
||||||
_view.addMatch( searchMatch.name, _computer.computeGroupByKey( marker ), searchMatch.resource, marker );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//Check to see if external markers are enabled
|
|
||||||
IPreferenceStore store = CUIPlugin.getDefault().getPreferenceStore();
|
|
||||||
if (store.getBoolean(CSearchPage.EXTERNALMATCH_ENABLED)){
|
|
||||||
//Create Link in referring file's project
|
|
||||||
IPath refLocation = searchMatch.getReferenceLocation();
|
|
||||||
IFile refFile = CCorePlugin.getWorkspace().getRoot().getFileForLocation(refLocation);
|
|
||||||
IProject refProject = refFile.getProject();
|
|
||||||
IPath externalMatchLocation = searchMatch.getLocation();
|
|
||||||
IFile linksFile = refProject.getFile(externalMatchLocation.lastSegment());
|
|
||||||
//Delete links file to keep up to date with latest prefs
|
|
||||||
if (linksFile.exists())
|
|
||||||
linksFile.delete(true,null);
|
|
||||||
|
|
||||||
//Check to see if the file already exists - create if doesn't, mark team private
|
|
||||||
if (!linksFile.exists()){
|
|
||||||
linksFile.createLink(externalMatchLocation,IResource.NONE,null);
|
|
||||||
int number = store.getInt(CSearchPage.EXTERNALMATCH_VISIBLE);
|
|
||||||
if (number==0){
|
|
||||||
linksFile.setDerived(true);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
linksFile.setTeamPrivateMember(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
IMarker marker = linksFile.createMarker( SearchUI.SEARCH_MARKER );
|
|
||||||
|
|
||||||
HashMap markerAttributes = new HashMap( 2 );
|
|
||||||
|
|
||||||
/*markerAttributes.put( IMarker.CHAR_START, new Integer( Math.max( searchMatch.startOffset, 0 ) ) );
|
|
||||||
markerAttributes.put( IMarker.CHAR_END, new Integer( Math.max( searchMatch.endOffset, 0 ) ) );*/
|
|
||||||
markerAttributes.put( IMATCH, searchMatch );
|
|
||||||
|
|
||||||
marker.setAttributes( markerAttributes );
|
|
||||||
|
|
||||||
if( _view != null ){
|
|
||||||
_view.addMatch( searchMatch.name, _computer.computeGroupByKey( marker ), linksFile, marker );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_matchCount++;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.core.search.ICSearchResultCollector#done()
|
|
||||||
*/
|
|
||||||
public void done() {
|
|
||||||
/* if( !getProgressMonitor().isCanceled() ){
|
|
||||||
String matchesString;
|
|
||||||
if( _matchCount == 1 ){
|
|
||||||
matchesString = MATCH;
|
|
||||||
} else {
|
|
||||||
matchesString = MessageFormat.format( MATCHES, new Integer[]{ new Integer(_matchCount) } );
|
|
||||||
}
|
|
||||||
|
|
||||||
getProgressMonitor().setTaskName( MessageFormat.format( DONE, new String[]{ matchesString } ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
if( _view != null ){
|
|
||||||
_view.searchFinished();
|
|
||||||
}
|
|
||||||
|
|
||||||
_view = null;
|
|
||||||
_monitor = null;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.cdt.core.search.ICSearchResultCollector#getProgressMonitor()
|
|
||||||
*/
|
|
||||||
public IProgressMonitor getProgressMonitor() {
|
|
||||||
return _monitor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProgressMonitor(IProgressMonitor monitor) {
|
|
||||||
this._monitor = monitor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setOperation( CSearchOperation operation ) {
|
|
||||||
_operation = operation;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static final String SEARCHING = CSearchMessages.getString("CSearchResultCollector.searching"); //$NON-NLS-1$
|
|
||||||
private static final String MATCH = CSearchMessages.getString("CSearchResultCollector.match"); //$NON-NLS-1$
|
|
||||||
private static final String MATCHES = CSearchMessages.getString("CSearchResultCollector.matches"); //$NON-NLS-1$
|
|
||||||
private static final String DONE = CSearchMessages.getString("CSearchResultCollector.done"); //$NON-NLS-1$
|
|
||||||
|
|
||||||
private IProgressMonitor _monitor;
|
|
||||||
private CSearchOperation _operation;
|
|
||||||
private ISearchResultView _view;
|
|
||||||
private IGroupByKeyComputer _computer;
|
|
||||||
private int _matchCount;
|
|
||||||
private CSearchQuery _query;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param query
|
|
||||||
*/
|
|
||||||
public void setOperation(CSearchQuery query) {
|
|
||||||
_query = query;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2003 IBM Corporation and others.
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Common Public License v0.5
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/cpl-v05.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IBM Corp. - Rational Software - initial implementation
|
|
||||||
******************************************************************************/
|
|
||||||
/*
|
|
||||||
* Created on Jun 18, 2003
|
|
||||||
*/
|
|
||||||
package org.eclipse.cdt.internal.ui.search;
|
|
||||||
|
|
||||||
import org.eclipse.search.ui.ISearchResultView;
|
|
||||||
import org.eclipse.ui.actions.ActionGroup;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author aniefer
|
|
||||||
*
|
|
||||||
* To change the template for this generated type comment go to
|
|
||||||
* Window>Preferences>Java>Code Generation>Code and Comments
|
|
||||||
*/
|
|
||||||
public class CSearchViewActionGroup extends ActionGroup {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param part
|
|
||||||
*/
|
|
||||||
public CSearchViewActionGroup(ISearchResultView part) {
|
|
||||||
|
|
||||||
// TODO Auto-generated constructor stub
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -41,7 +41,6 @@ import org.eclipse.cdt.core.model.ICElement;
|
||||||
import org.eclipse.cdt.core.parser.ParserUtil;
|
import org.eclipse.cdt.core.parser.ParserUtil;
|
||||||
import org.eclipse.cdt.core.search.BasicSearchMatch;
|
import org.eclipse.cdt.core.search.BasicSearchMatch;
|
||||||
import org.eclipse.cdt.core.search.DOMSearchUtil;
|
import org.eclipse.cdt.core.search.DOMSearchUtil;
|
||||||
import org.eclipse.cdt.core.search.ICSearchResultCollector;
|
|
||||||
import org.eclipse.cdt.core.search.ICSearchScope;
|
import org.eclipse.cdt.core.search.ICSearchScope;
|
||||||
import org.eclipse.cdt.core.search.IMatch;
|
import org.eclipse.cdt.core.search.IMatch;
|
||||||
import org.eclipse.cdt.core.search.OffsetLocatable;
|
import org.eclipse.cdt.core.search.OffsetLocatable;
|
||||||
|
@ -73,8 +72,8 @@ public class DOMQuery extends CSearchQuery implements ISearchQuery {
|
||||||
private LimitTo limitTo=null;
|
private LimitTo limitTo=null;
|
||||||
private ICSearchScope scope=null;
|
private ICSearchScope scope=null;
|
||||||
|
|
||||||
public DOMQuery(String displaySearchPattern, IASTName name, LimitTo limitTo, ICSearchScope scope, ICSearchResultCollector collector) {
|
public DOMQuery(String displaySearchPattern, IASTName name, LimitTo limitTo, ICSearchScope scope) {
|
||||||
super(CUIPlugin.getWorkspace(), displaySearchPattern, false, null, null, null, displaySearchPattern, collector);
|
super(CUIPlugin.getWorkspace(), displaySearchPattern, false, null, null, null, displaySearchPattern);
|
||||||
this.searchName = name;
|
this.searchName = name;
|
||||||
this.limitTo = limitTo;
|
this.limitTo = limitTo;
|
||||||
this.scope = scope;
|
this.scope = scope;
|
||||||
|
|
|
@ -1,94 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2003 IBM Corporation and others.
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Common Public License v0.5
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/cpl-v05.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IBM Corp. - Rational Software - initial implementation
|
|
||||||
******************************************************************************/
|
|
||||||
/*
|
|
||||||
* Created on Jun 18, 2003
|
|
||||||
*/
|
|
||||||
package org.eclipse.cdt.internal.ui.search;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.core.model.ICElement;
|
|
||||||
import org.eclipse.cdt.internal.ui.util.EditorUtility;
|
|
||||||
import org.eclipse.cdt.internal.ui.util.SelectionUtil;
|
|
||||||
import org.eclipse.cdt.ui.CUIPlugin;
|
|
||||||
import org.eclipse.core.resources.IFile;
|
|
||||||
import org.eclipse.core.resources.IMarker;
|
|
||||||
import org.eclipse.core.resources.IResource;
|
|
||||||
import org.eclipse.core.runtime.CoreException;
|
|
||||||
import org.eclipse.jface.action.Action;
|
|
||||||
import org.eclipse.search.ui.ISearchResultView;
|
|
||||||
import org.eclipse.search.ui.ISearchResultViewEntry;
|
|
||||||
import org.eclipse.search.ui.SearchUI;
|
|
||||||
import org.eclipse.ui.IEditorPart;
|
|
||||||
import org.eclipse.ui.IWorkbenchPage;
|
|
||||||
import org.eclipse.ui.ide.IDE;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author aniefer
|
|
||||||
*
|
|
||||||
* To change the template for this generated type comment go to
|
|
||||||
* Window>Preferences>Java>Code Generation>Code and Comments
|
|
||||||
*/
|
|
||||||
public class GotoMarkerAction extends Action {
|
|
||||||
|
|
||||||
public GotoMarkerAction(){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
ISearchResultView view = SearchUI.getSearchResultView();
|
|
||||||
Object element = SelectionUtil.getSingleElement( view.getSelection() );
|
|
||||||
if( element instanceof ISearchResultViewEntry ) {
|
|
||||||
ISearchResultViewEntry entry = (ISearchResultViewEntry) element;
|
|
||||||
show( entry.getSelectedMarker() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void show( IMarker marker ){
|
|
||||||
IResource resource = marker.getResource();
|
|
||||||
if( resource == null || !resource.exists() ){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
IWorkbenchPage page = CUIPlugin.getActivePage();
|
|
||||||
ICElement element = CSearchUtil.getCElement( marker );
|
|
||||||
|
|
||||||
if( SearchUI.reuseEditor() ){
|
|
||||||
showWithReuse( marker, resource, element, page );
|
|
||||||
} else {
|
|
||||||
showWithoutReuse( marker, element, page );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showWithoutReuse( IMarker marker, ICElement element, IWorkbenchPage page ){
|
|
||||||
IEditorPart editor = null;
|
|
||||||
try{
|
|
||||||
Object objectToOpen = ( element != null ) ? (Object) element : (Object) marker.getResource();
|
|
||||||
editor = EditorUtility.openInEditor( objectToOpen, false );
|
|
||||||
} catch ( CoreException e ) {
|
|
||||||
//boo
|
|
||||||
}
|
|
||||||
if( editor != null ){
|
|
||||||
IDE.gotoMarker(editor, marker);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void showWithReuse( IMarker marker, IResource resource, ICElement element, IWorkbenchPage page ) {
|
|
||||||
if( !(resource instanceof IFile) ){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
IEditorPart editor = EditorUtility.isOpenInEditor( element );
|
|
||||||
if( editor != null ){
|
|
||||||
page.bringToTop( editor );
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,47 +0,0 @@
|
||||||
/*******************************************************************************
|
|
||||||
* Copyright (c) 2003, 2004 IBM Corporation and others.
|
|
||||||
* All rights reserved. This program and the accompanying materials
|
|
||||||
* are made available under the terms of the Common Public License v1.0
|
|
||||||
* which accompanies this distribution, and is available at
|
|
||||||
* http://www.eclipse.org/legal/cpl-v10.html
|
|
||||||
*
|
|
||||||
* Contributors:
|
|
||||||
* IBM Corp. - Rational Software - initial implementation
|
|
||||||
*******************************************************************************/
|
|
||||||
/*
|
|
||||||
* Created on Jun 18, 2003
|
|
||||||
*/
|
|
||||||
package org.eclipse.cdt.internal.ui.search;
|
|
||||||
|
|
||||||
import org.eclipse.cdt.core.search.IMatch;
|
|
||||||
import org.eclipse.core.resources.IMarker;
|
|
||||||
import org.eclipse.core.runtime.CoreException;
|
|
||||||
import org.eclipse.search.ui.IGroupByKeyComputer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author aniefer
|
|
||||||
*
|
|
||||||
* To change the template for this generated type comment go to
|
|
||||||
* Window>Preferences>Java>Code Generation>Code and Comments
|
|
||||||
*/
|
|
||||||
public class GroupByKeyComputer implements IGroupByKeyComputer {
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.eclipse.search.ui.IGroupByKeyComputer#computeGroupByKey(org.eclipse.core.resources.IMarker)
|
|
||||||
*/
|
|
||||||
|
|
||||||
public Object computeGroupByKey(IMarker marker) {
|
|
||||||
if( marker == null ){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
IMatch match = null;
|
|
||||||
|
|
||||||
try {
|
|
||||||
match = (IMatch) marker.getAttribute(CSearchResultCollector.IMATCH);
|
|
||||||
} catch (CoreException e) {
|
|
||||||
}
|
|
||||||
|
|
||||||
return match.getParentName() + "::" + match.getName() + " - " + match.getLocation(); //$NON-NLS-1$ //$NON-NLS-2$
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -29,13 +29,11 @@ import org.eclipse.cdt.core.model.ICProject;
|
||||||
import org.eclipse.cdt.core.parser.ParseError;
|
import org.eclipse.cdt.core.parser.ParseError;
|
||||||
import org.eclipse.cdt.core.parser.ParserLanguage;
|
import org.eclipse.cdt.core.parser.ParserLanguage;
|
||||||
import org.eclipse.cdt.core.search.DOMSearchUtil;
|
import org.eclipse.cdt.core.search.DOMSearchUtil;
|
||||||
import org.eclipse.cdt.core.search.ICSearchResultCollector;
|
|
||||||
import org.eclipse.cdt.core.search.ICSearchScope;
|
import org.eclipse.cdt.core.search.ICSearchScope;
|
||||||
import org.eclipse.cdt.core.search.ICSearchConstants.LimitTo;
|
import org.eclipse.cdt.core.search.ICSearchConstants.LimitTo;
|
||||||
import org.eclipse.cdt.core.search.ICSearchConstants.SearchFor;
|
import org.eclipse.cdt.core.search.ICSearchConstants.SearchFor;
|
||||||
import org.eclipse.cdt.internal.ui.editor.CEditor;
|
import org.eclipse.cdt.internal.ui.editor.CEditor;
|
||||||
import org.eclipse.cdt.internal.ui.search.CSearchQuery;
|
import org.eclipse.cdt.internal.ui.search.CSearchQuery;
|
||||||
import org.eclipse.cdt.internal.ui.search.CSearchResultCollector;
|
|
||||||
import org.eclipse.cdt.internal.ui.search.CSearchUtil;
|
import org.eclipse.cdt.internal.ui.search.CSearchUtil;
|
||||||
import org.eclipse.cdt.internal.ui.search.DOMQuery;
|
import org.eclipse.cdt.internal.ui.search.DOMQuery;
|
||||||
import org.eclipse.cdt.internal.ui.util.ExternalEditorInput;
|
import org.eclipse.cdt.internal.ui.util.ExternalEditorInput;
|
||||||
|
@ -74,8 +72,8 @@ public abstract class FindAction extends SelectionParseAction {
|
||||||
* @param collector
|
* @param collector
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static CSearchQuery createDOMSearchQueryForName( IASTName name, LimitTo limitTo, ICSearchScope scope, ICSearchResultCollector collector ){
|
public static CSearchQuery createDOMSearchQueryForName( IASTName name, LimitTo limitTo, ICSearchScope scope){
|
||||||
return new DOMQuery(DOMSearchUtil.getSearchPattern(name), name, limitTo, scope, collector);
|
return new DOMQuery(DOMSearchUtil.getSearchPattern(name), name, limitTo, scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -88,7 +86,7 @@ public abstract class FindAction extends SelectionParseAction {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static CSearchQuery createSearchQueryForName( IASTName name, LimitTo limitTo, ICSearchScope scope ){
|
public static CSearchQuery createSearchQueryForName( IASTName name, LimitTo limitTo, ICSearchScope scope ){
|
||||||
return createDOMSearchQueryForName( name, limitTo, scope, null );
|
return createDOMSearchQueryForName( name, limitTo, scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
|
@ -134,11 +132,9 @@ public abstract class FindAction extends SelectionParseAction {
|
||||||
List search = new LinkedList();
|
List search = new LinkedList();
|
||||||
search.add(searchFor);
|
search.add(searchFor);
|
||||||
|
|
||||||
CSearchResultCollector collector= new CSearchResultCollector();
|
|
||||||
|
|
||||||
LimitTo limitTo = getLimitTo();
|
LimitTo limitTo = getLimitTo();
|
||||||
|
|
||||||
op = new CSearchQuery(CCorePlugin.getWorkspace(), pattern,true,search,limitTo,scope,scopeDescription,collector);
|
op = new CSearchQuery(CCorePlugin.getWorkspace(), pattern,true,search,limitTo,scope,scopeDescription);
|
||||||
return op;
|
return op;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,16 +17,12 @@ import org.eclipse.cdt.core.model.ICElement;
|
||||||
import org.eclipse.cdt.core.search.IMatch;
|
import org.eclipse.cdt.core.search.IMatch;
|
||||||
import org.eclipse.cdt.internal.ui.CPluginImages;
|
import org.eclipse.cdt.internal.ui.CPluginImages;
|
||||||
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
|
import org.eclipse.cdt.internal.ui.search.CSearchMessages;
|
||||||
import org.eclipse.cdt.internal.ui.search.CSearchResultCollector;
|
|
||||||
import org.eclipse.cdt.internal.ui.search.CSearchResultPage;
|
import org.eclipse.cdt.internal.ui.search.CSearchResultPage;
|
||||||
import org.eclipse.cdt.internal.ui.search.NewSearchResultCollector;
|
import org.eclipse.cdt.internal.ui.search.NewSearchResultCollector;
|
||||||
import org.eclipse.core.resources.IMarker;
|
|
||||||
import org.eclipse.core.resources.IResource;
|
import org.eclipse.core.resources.IResource;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
|
||||||
import org.eclipse.core.runtime.IPath;
|
import org.eclipse.core.runtime.IPath;
|
||||||
import org.eclipse.jface.resource.ImageDescriptor;
|
import org.eclipse.jface.resource.ImageDescriptor;
|
||||||
import org.eclipse.jface.viewers.LabelProvider;
|
import org.eclipse.jface.viewers.LabelProvider;
|
||||||
import org.eclipse.search.ui.ISearchResultViewEntry;
|
|
||||||
import org.eclipse.swt.graphics.Image;
|
import org.eclipse.swt.graphics.Image;
|
||||||
import org.eclipse.swt.graphics.Point;
|
import org.eclipse.swt.graphics.Point;
|
||||||
|
|
||||||
|
@ -61,19 +57,8 @@ public class CSearchResultLabelProvider extends LabelProvider {
|
||||||
IMatch match = null;
|
IMatch match = null;
|
||||||
int elementType = -1;
|
int elementType = -1;
|
||||||
int visibility = -1;
|
int visibility = -1;
|
||||||
if( element instanceof ISearchResultViewEntry ){
|
|
||||||
ISearchResultViewEntry viewEntry = (ISearchResultViewEntry)element;
|
if ( element instanceof IMatch ){
|
||||||
IMarker marker = viewEntry.getSelectedMarker();
|
|
||||||
try {
|
|
||||||
match = (IMatch) marker.getAttribute( CSearchResultCollector.IMATCH );
|
|
||||||
if( match == null )
|
|
||||||
return null;
|
|
||||||
elementType = match.getElementType();
|
|
||||||
visibility = match.getVisibility();
|
|
||||||
} catch (CoreException e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} else if ( element instanceof IMatch ){
|
|
||||||
match = (IMatch) element;
|
match = (IMatch) element;
|
||||||
if( match == null )
|
if( match == null )
|
||||||
return null;
|
return null;
|
||||||
|
@ -162,17 +147,7 @@ public class CSearchResultLabelProvider extends LabelProvider {
|
||||||
public String getText( Object element ) {
|
public String getText( Object element ) {
|
||||||
IMatch match = null;
|
IMatch match = null;
|
||||||
|
|
||||||
if( element instanceof ISearchResultViewEntry ){
|
if( element instanceof IMatch ){
|
||||||
ISearchResultViewEntry viewEntry = (ISearchResultViewEntry) element;
|
|
||||||
|
|
||||||
IMarker marker = viewEntry.getSelectedMarker();
|
|
||||||
|
|
||||||
try {
|
|
||||||
match = (IMatch) marker.getAttribute(CSearchResultCollector.IMATCH);
|
|
||||||
} catch (CoreException e) {
|
|
||||||
return ""; //$NON-NLS-1$
|
|
||||||
}
|
|
||||||
} else if( element instanceof IMatch ){
|
|
||||||
match = (IMatch) element;
|
match = (IMatch) element;
|
||||||
} else if ( element instanceof ICElement){
|
} else if ( element instanceof ICElement){
|
||||||
return getElementText((ICElement) element);
|
return getElementText((ICElement) element);
|
||||||
|
|
Loading…
Add table
Reference in a new issue