/** * Source elements returned from this method are instances of <code>IFile</code> or <code> * LocalFileStorage</code>. * * @see org.eclipse.debug.core.sourcelookup.ISourceContainer#findSourceElements(String) */ public Object[] findSourceElements(String name) throws CoreException { File file = new File(name); if (!file.isAbsolute()) { file = new File(fDirectory, name); } List<Object> sources = new ArrayList<Object>(); if (file.exists() && file.isFile()) { sources.addAll(Arrays.asList(SourceUtils.findSourceElements(file, getDirector()))); } else { sources = new ArrayList<Object>(); } // Check sub-folders if (fSubfolders && (isFindDuplicates() || sources.isEmpty())) { for (ISourceContainer container : getSourceContainers()) { Object[] elements = container.findSourceElements(name); if (elements == null || elements.length == 0) { continue; } if (isFindDuplicates()) { for (Object element : elements) sources.add(element); } else { sources.add(elements[0]); break; } } } if (sources.isEmpty()) return EMPTY; return sources.toArray(); }
@Override public boolean canAddSourceContainers(final ISourceLookupDirector director) { final ISourceContainer[] containers = director.getSourceContainers(); for (final ISourceContainer container : containers) { if (container.getType().getId().equals(AllRProjectsSourceContainer.TYPE_ID)) { return false; } } return true; }
/* (non-Javadoc) * @see org.eclipse.debug.core.sourcelookup.containers.CompositeSourceContainer#createSourceContainers() */ protected ISourceContainer[] createSourceContainers() throws CoreException { if (fSubfolders) { String[] files = fDirectory.list(); if (files != null) { List<ISourceContainer> dirs = new ArrayList<ISourceContainer>(); for (String name : files) { File file = new File(getDirectory(), name); if (file.exists() && file.isDirectory()) { dirs.add(new CompilationDirectorySourceContainer(file, true)); } } ISourceContainer[] containers = dirs.toArray(new ISourceContainer[dirs.size()]); for (ISourceContainer container : containers) { container.init(getDirector()); } return containers; } } return new ISourceContainer[0]; }
/* (non-Javadoc) * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer) */ public String getMemento(ISourceContainer container) throws CoreException { if (this.equals(container.getType())) { return getDelegate().getMemento(container); } IStatus status = new Status( IStatus.ERROR, DebugPlugin.getUniqueIdentifier(), DebugPlugin.ERROR, SourceLookupMessages.SourceContainerType_0, null); throw new CoreException(status); }
private IEditorInput findFileInCommonSourceLookup(IPath path) { try { AbstractSourceLookupDirector director = CDebugCorePlugin.getDefault().getCommonSourceLookupDirector(); ISourceContainer[] c = director.getSourceContainers(); for (ISourceContainer sourceContainer : c) { Object[] o = sourceContainer.findSourceElements(path.toOSString()); for (Object object : o) { if (object instanceof IFile) { return new FileEditorInput((IFile)object); } else if (object instanceof LocalFileStorage) { LocalFileStorage storage = (LocalFileStorage) object; IFileStore ifs = EFS.getStore(storage.getFile().toURI()); return new FileStoreEditorInput(ifs); } } } } catch (Exception _) { // do nothing } return null; }