| package org.eclipse.dltk.launching.sourcelookup.containers; |
| |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.resources.IWorkspace; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.debug.core.sourcelookup.ISourceContainer; |
| import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate; |
| import org.eclipse.dltk.core.DLTKCore; |
| import org.eclipse.dltk.core.IScriptProject; |
| import org.eclipse.dltk.launching.LaunchingMessages; |
| import org.w3c.dom.Document; |
| import org.w3c.dom.Element; |
| import org.w3c.dom.Node; |
| |
| public class ScriptProjectSourceContainerTypeDelegate |
| extends AbstractSourceContainerTypeDelegate { |
| |
| private static String SCRIPT_PROJECT = "scriptProject"; //$NON-NLS-1$ |
| |
| @Override |
| public ISourceContainer createSourceContainer(String memento) |
| throws CoreException { |
| Node node = parseDocument(memento); |
| if (node.getNodeType() == Node.ELEMENT_NODE) { |
| Element element = (Element) node; |
| if (SCRIPT_PROJECT.equals(element.getNodeName())) { // $NON-NLS-1$ |
| String string = element.getAttribute("name"); //$NON-NLS-1$ |
| if (string == null || string.length() == 0) { |
| abort(LaunchingMessages.ScriptProjectSourceContainerTypeDelegate_5, |
| null); |
| } |
| IWorkspace workspace = ResourcesPlugin.getWorkspace(); |
| IProject project = workspace.getRoot().getProject(string); |
| |
| IScriptProject scriptProject = DLTKCore.create(project); |
| return new ScriptProjectSourceContainer(scriptProject); |
| } |
| abort(LaunchingMessages.ScriptProjectSourceContainerTypeDelegate_6, |
| null); |
| } |
| abort(LaunchingMessages.ScriptProjectSourceContainerTypeDelegate_7, |
| null); |
| return null; |
| } |
| |
| @Override |
| public String getMemento(ISourceContainer container) throws CoreException { |
| ScriptProjectSourceContainer project = (ScriptProjectSourceContainer) container; |
| Document document = newDocument(); |
| Element element = document.createElement(SCRIPT_PROJECT); |
| element.setAttribute("name", project.getName()); //$NON-NLS-1$ |
| document.appendChild(element); |
| return serializeDocument(document); |
| } |
| |
| } |