KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > debug > internal > core > sourcelookup > containers > FolderSourceContainerType


1 /*******************************************************************************
2  * Copyright (c) 2003, 2005 IBM Corporation and others.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * which accompanies this distribution, and is available at
6  * http://www.eclipse.org/legal/epl-v10.html
7  *
8  * Contributors:
9  * IBM Corporation - initial API and implementation
10  *******************************************************************************/

11 package org.eclipse.debug.internal.core.sourcelookup.containers;
12
13 import org.eclipse.core.resources.IFolder;
14 import org.eclipse.core.resources.IWorkspace;
15 import org.eclipse.core.resources.ResourcesPlugin;
16 import org.eclipse.core.runtime.CoreException;
17 import org.eclipse.core.runtime.Path;
18 import org.eclipse.debug.core.sourcelookup.ISourceContainer;
19 import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
20 import org.eclipse.debug.core.sourcelookup.containers.FolderSourceContainer;
21 import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
22 import org.w3c.dom.Document JavaDoc;
23 import org.w3c.dom.Element JavaDoc;
24 import org.w3c.dom.Node JavaDoc;
25
26 /**
27  * A folder in the workspace.
28  *
29  * @since 3.0
30  */

31 public class FolderSourceContainerType extends AbstractSourceContainerTypeDelegate {
32
33     /* (non-Javadoc)
34      * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento(org.eclipse.debug.internal.core.sourcelookup.ISourceContainer)
35      */

36     public String JavaDoc getMemento(ISourceContainer container) throws CoreException {
37         FolderSourceContainer folderSourceContainer = (FolderSourceContainer)container;
38         Document JavaDoc document = newDocument();
39         Element JavaDoc element = document.createElement("folder"); //$NON-NLS-1$
40
element.setAttribute("path", folderSourceContainer.getContainer().getFullPath().toString()); //$NON-NLS-1$
41
String JavaDoc nest = "false"; //$NON-NLS-1$
42
if (folderSourceContainer.isComposite()) {
43             nest = "true"; //$NON-NLS-1$
44
}
45         element.setAttribute("nest", nest); //$NON-NLS-1$
46
document.appendChild(element);
47         return serializeDocument(document);
48     }
49
50     /* (non-Javadoc)
51      * @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#createSourceContainer(java.lang.String)
52      */

53     public ISourceContainer createSourceContainer(String JavaDoc memento) throws CoreException {
54         Node JavaDoc node = parseDocument(memento);
55         if (node.getNodeType() == Node.ELEMENT_NODE) {
56             Element JavaDoc element = (Element JavaDoc)node;
57             if ("folder".equals(element.getNodeName())) { //$NON-NLS-1$
58
String JavaDoc string = element.getAttribute("path"); //$NON-NLS-1$
59
if (string == null || string.length() == 0) {
60                     abort(SourceLookupMessages.FolderSourceContainerType_10, null);
61                 }
62                 String JavaDoc nest = element.getAttribute("nest"); //$NON-NLS-1$
63
boolean nested = "true".equals(nest); //$NON-NLS-1$
64
IWorkspace workspace = ResourcesPlugin.getWorkspace();
65                 IFolder folder = workspace.getRoot().getFolder(new Path(string));
66                 return new FolderSourceContainer(folder, nested);
67             }
68             abort(SourceLookupMessages.FolderSourceContainerType_11, null);
69         }
70         abort(SourceLookupMessages.FolderSourceContainerType_12, null);
71         return null;
72     }
73 }
74
Popular Tags