1 11 package org.eclipse.debug.internal.core.sourcelookup.containers; 12 13 import org.eclipse.core.resources.IFile; 14 import org.eclipse.core.resources.ResourcesPlugin; 15 import org.eclipse.core.runtime.CoreException; 16 import org.eclipse.core.runtime.Path; 17 import org.eclipse.debug.core.sourcelookup.ISourceContainer; 18 import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate; 19 import org.eclipse.debug.core.sourcelookup.containers.ArchiveSourceContainer; 20 import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages; 21 import org.w3c.dom.Document ; 22 import org.w3c.dom.Element ; 23 import org.w3c.dom.Node ; 24 25 30 public class ArchiveSourceContainerType extends AbstractSourceContainerTypeDelegate { 31 32 35 public ISourceContainer createSourceContainer(String memento) throws CoreException { 36 Node node = parseDocument(memento); 37 if (node.getNodeType() == Node.ELEMENT_NODE) { 38 Element element = (Element )node; 39 if ("archive".equals(element.getNodeName())) { String string = element.getAttribute("path"); if (string == null || string.length() == 0) { 42 abort(SourceLookupMessages.ExternalArchiveSourceContainerType_10, null); 43 } 44 String detect = element.getAttribute("detectRoot"); boolean auto = "true".equals(detect); IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(string)); 47 return new ArchiveSourceContainer(file, auto); 48 } 49 abort(SourceLookupMessages.ExternalArchiveSourceContainerType_11, null); 50 } 51 abort(SourceLookupMessages.ExternalArchiveSourceContainerType_12, null); 52 return null; 53 } 54 57 public String getMemento(ISourceContainer container) throws CoreException { 58 ArchiveSourceContainer archive = (ArchiveSourceContainer) container; 59 Document document = newDocument(); 60 Element element = document.createElement("archive"); element.setAttribute("path", archive.getFile().getFullPath().toString()); String detectRoot = "false"; if (archive.isDetectRoot()) { 64 detectRoot = "true"; } 66 element.setAttribute("detectRoot", detectRoot); document.appendChild(element); 68 return serializeDocument(document); 69 } 70 } 71 | Popular Tags |