blob: 17405324b45f5de2044543150eddb9dbb445dd8e [file] [log] [blame]
package org.eclipse.dltk.launching.sourcelookup.containers;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IStorage;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.sourcelookup.ISourceContainerType;
import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainer;
import org.eclipse.dltk.core.DLTKCore;
import org.eclipse.dltk.core.IScriptProject;
import org.eclipse.dltk.core.search.IDLTKSearchScope;
import org.eclipse.dltk.core.search.SearchEngine;
import org.eclipse.dltk.internal.core.Openable;
import org.eclipse.dltk.internal.core.util.HandleFactory;
import org.eclipse.dltk.launching.ScriptLaunchConfigurationConstants;
public class BuildpathContainerSourceContainer extends AbstractSourceContainer {
public static final String TYPE_ID = "org.eclipse.dltk.launching.sourceContainer.buildpathContainer"; //$NON-NLS-1$
private String libraryPath;
public BuildpathContainerSourceContainer(String location) {
libraryPath = location;
}
@Override
public Object[] findSourceElements(String name) throws CoreException {
if (name.indexOf(libraryPath) == -1) {
return new Object[0];
}
// Lets try to locate model element.
try {
final ILaunchConfiguration configuration = getDirector()
.getLaunchConfiguration();
String projectName;
projectName = configuration.getAttribute(
ScriptLaunchConfigurationConstants.ATTR_PROJECT_NAME,
(String) null);
if (projectName != null) {
IProject project = ResourcesPlugin.getWorkspace().getRoot()
.getProject(projectName);
IScriptProject prj = DLTKCore.create(project);
IDLTKSearchScope scope = SearchEngine.createSearchScope(prj);
HandleFactory fac = new HandleFactory();
Openable op = fac.createOpenable(name, scope);
if (op != null && op.exists() && op instanceof IStorage) {
return new Object[] { op };
}
}
} catch (CoreException e) {
// TODO: log this
e.printStackTrace();
}
return new Object[0];
}
@Override
public String getName() {
return libraryPath;
}
@Override
public ISourceContainerType getType() {
// TODO Auto-generated method stub
return null;
}
}