1 11 package org.eclipse.debug.internal.ui.sourcelookup; 12 13 import java.io.IOException ; 14 import java.io.StringReader ; 15 16 import javax.xml.parsers.DocumentBuilder ; 17 import javax.xml.parsers.DocumentBuilderFactory ; 18 import javax.xml.parsers.ParserConfigurationException ; 19 20 import org.eclipse.core.runtime.CoreException; 21 import org.eclipse.debug.core.sourcelookup.ISourceContainer; 22 import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate; 23 import org.eclipse.debug.ui.sourcelookup.WorkingSetSourceContainer; 24 import org.eclipse.ui.IWorkingSet; 25 import org.eclipse.ui.PlatformUI; 26 import org.w3c.dom.Document ; 27 import org.w3c.dom.Element ; 28 import org.xml.sax.InputSource ; 29 import org.xml.sax.SAXException ; 30 import org.xml.sax.helpers.DefaultHandler ; 31 32 37 public class WorkingSetSourceContainerType extends AbstractSourceContainerTypeDelegate { 38 41 public String getMemento(ISourceContainer container) throws CoreException { 42 WorkingSetSourceContainer workingSet = (WorkingSetSourceContainer) container; 43 Document doc = newDocument(); 44 Element node = doc.createElement("workingSet"); node.setAttribute("name", workingSet.getName()); doc.appendChild(node); 47 return serializeDocument(doc); 48 } 49 50 53 public ISourceContainer createSourceContainer(String memento)throws CoreException { 54 IWorkingSet workingSet = null; 55 Exception ex = null; 56 try { 57 Element root = null; 58 DocumentBuilder parser = 59 DocumentBuilderFactory.newInstance().newDocumentBuilder(); 60 parser.setErrorHandler(new DefaultHandler ()); 61 StringReader reader = new StringReader (memento); 62 InputSource source = new InputSource (reader); 63 root = parser.parse(source).getDocumentElement(); 64 65 String name = root.getAttribute("name"); 67 if (isEmpty(name)) { 68 abort(SourceLookupUIMessages.sourceSearch_initError,null); 69 } 70 workingSet = PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSet(name); 71 if (workingSet == null) { 73 abort(SourceLookupUIMessages.sourceSearch_initError, null); 74 } 75 return new WorkingSetSourceContainer(workingSet); 76 77 } catch (ParserConfigurationException e) { 78 ex = e; 79 } catch (SAXException e) { 80 ex = e; 81 } catch (IOException e) { 82 ex = e; 83 } 84 85 abort(SourceLookupUIMessages.sourceSearch_initError, ex); 86 return null; 87 } 88 89 private boolean isEmpty(String string) { 90 return string == null || string.length() == 0; 91 } 92 93 94 } 95 | Popular Tags |