Bug 303150 -  Fail to create snapshot when Snapshots project is closed
diff --git a/org.eclipse.cdt.debug.edc.ui/src/org/eclipse/cdt/debug/edc/internal/ui/views/SnapshotView.java b/org.eclipse.cdt.debug.edc.ui/src/org/eclipse/cdt/debug/edc/internal/ui/views/SnapshotView.java
index e1acb3f..bb74d90 100644
--- a/org.eclipse.cdt.debug.edc.ui/src/org/eclipse/cdt/debug/edc/internal/ui/views/SnapshotView.java
+++ b/org.eclipse.cdt.debug.edc.ui/src/org/eclipse/cdt/debug/edc/internal/ui/views/SnapshotView.java
@@ -16,8 +16,6 @@
 import java.util.Date;
 import java.util.List;
 
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ICProject;
 import org.eclipse.cdt.debug.edc.internal.snapshot.Album;
 import org.eclipse.cdt.debug.edc.internal.snapshot.ISnapshotAlbumEventListener;
 import org.eclipse.cdt.debug.edc.internal.snapshot.Snapshot;
@@ -30,6 +28,8 @@
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.jface.action.Action;
@@ -697,15 +697,17 @@
 
 		// See if the default project exists
 		String defaultProjectName = "Snapshots";
-		ICProject cProject = CoreModel.getDefault().getCModel().getCProject(defaultProjectName);
+		IWorkspace workspace = ResourcesPlugin.getWorkspace();
+		IProject snapshotsProject = workspace.getRoot().getProject(
+				defaultProjectName);
 
-		if (cProject == null || !cProject.exists()) {
+		if (snapshotsProject == null || !snapshotsProject.exists()) {
 			return albumList;
 		}
 
 		// Get all .dsa files from Snapshots project
 		try {
-			IResource[] resources = cProject.getProject().members();
+			IResource[] resources = snapshotsProject.members();
 			for (IResource resource : resources) {
 
 				try {
diff --git a/org.eclipse.cdt.debug.edc/src/org/eclipse/cdt/debug/edc/internal/snapshot/Album.java b/org.eclipse.cdt.debug.edc/src/org/eclipse/cdt/debug/edc/internal/snapshot/Album.java
index b630e9a..3ec9caf 100644
--- a/org.eclipse.cdt.debug.edc/src/org/eclipse/cdt/debug/edc/internal/snapshot/Album.java
+++ b/org.eclipse.cdt.debug.edc/src/org/eclipse/cdt/debug/edc/internal/snapshot/Album.java
@@ -52,6 +52,7 @@
 import org.eclipse.cdt.dsf.service.DsfServicesTracker;
 import org.eclipse.cdt.dsf.service.DsfSession;
 import org.eclipse.cdt.dsf.service.DsfSession.SessionEndedListener;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.IPath;
@@ -1164,17 +1165,22 @@
 	}
 	
 	public IPath createEmptyAlbum() {
-		IPath zipPath = SnapshotUtils.getSnapshotsProject().getLocation();
-		zipPath = zipPath.append(getDefaultAlbumName());
-		zipPath = zipPath.addFileExtension("dsa");
-		boolean created =  ZipFileUtils.createNewZip(zipPath.toFile());
-		
-		if (created && zipPath.toFile().exists()){
-			setLocation(zipPath);
-		} else {
-			return null;
-		}
-		
+		IPath zipPath = null;
+		try {
+			zipPath = SnapshotUtils.getSnapshotsProject().getLocation();
+			zipPath = zipPath.append(getDefaultAlbumName());
+			zipPath = zipPath.addFileExtension("dsa");
+			boolean created =  ZipFileUtils.createNewZip(zipPath.toFile());
+			
+			if (created && zipPath.toFile().exists()){
+				setLocation(zipPath);
+			} else {
+				return null;
+			}
+			SnapshotUtils.getSnapshotsProject().refreshLocal(IResource.DEPTH_INFINITE, new NullProgressMonitor());
+		} catch (CoreException e) {
+			EDCDebugger.getMessageLogger().logError(e.getLocalizedMessage(), e);
+		}		
 		return zipPath;
 	}
 
diff --git a/org.eclipse.cdt.debug.edc/src/org/eclipse/cdt/debug/edc/internal/snapshot/SnapshotUtils.java b/org.eclipse.cdt.debug.edc/src/org/eclipse/cdt/debug/edc/internal/snapshot/SnapshotUtils.java
index c7d5cc6..42b3ddc 100644
--- a/org.eclipse.cdt.debug.edc/src/org/eclipse/cdt/debug/edc/internal/snapshot/SnapshotUtils.java
+++ b/org.eclipse.cdt.debug.edc/src/org/eclipse/cdt/debug/edc/internal/snapshot/SnapshotUtils.java
@@ -30,14 +30,9 @@
 import javax.sound.sampled.UnsupportedAudioFileException;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ICProject;
 import org.eclipse.cdt.debug.edc.internal.EDCDebugger;
 import org.eclipse.cdt.debug.edc.launch.IEDCLaunchConfigurationConstants;
 import org.eclipse.cdt.debug.edc.snapshot.IAlbum;
-import org.eclipse.core.filesystem.EFS;
-import org.eclipse.core.filesystem.IFileStore;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectDescription;
 import org.eclipse.core.resources.IWorkspace;
@@ -427,50 +422,22 @@
 		properties.put(mapKey, map);
 	}
 	
-	static public IProject getSnapshotsProject() {
-
-		final String SNAPSHOT_PROJECT_ID = "org.eclipse.cdt.debug.edc.snapshot"; //$NON-NLS-1$
-
+	static public IProject getSnapshotsProject() throws CoreException {
 		IProject snapshotsProject = null;
 		// See if the default project exists
 		String defaultProjectName = "Snapshots";
-		ICProject cProject = CoreModel.getDefault().getCModel().getCProject(defaultProjectName);
-		if (cProject.exists()) {
-			snapshotsProject = cProject.getProject();
+		IWorkspace workspace = ResourcesPlugin.getWorkspace();
+		snapshotsProject = workspace.getRoot().getProject(
+				defaultProjectName);
+		if (snapshotsProject.exists()) {
+			if (!snapshotsProject.isOpen())
+				snapshotsProject.open(new NullProgressMonitor());
 		} else {
-			final String[] ignoreList = { ".project", //$NON-NLS-1$
-					".cdtproject", //$NON-NLS-1$
-					".cproject", //$NON-NLS-1$
-					".cdtbuild", //$NON-NLS-1$
-					".settings", //$NON-NLS-1$
-			};
-
-			IWorkspace workspace = ResourcesPlugin.getWorkspace();
-			IProject newProjectHandle = workspace.getRoot().getProject(defaultProjectName);
-
-			int projectSuffix = 2;
-			while (newProjectHandle.exists()) {
-				newProjectHandle = workspace.getRoot().getProject(defaultProjectName + projectSuffix);
-				projectSuffix++;
-			}
-
-			IProjectDescription description = workspace.newProjectDescription(newProjectHandle.getName());
+			IProjectDescription description = workspace.newProjectDescription(defaultProjectName);
 			description.setLocation(null);
-			IFileStore store;
 			try {
-				store = EFS.getStore(workspace.getRoot().getLocationURI());
-				store = store.getChild(newProjectHandle.getName());
-				for (String deleteName : ignoreList) {
-					IFileStore projFile = store.getChild(deleteName);
-					projFile.delete(EFS.NONE, new NullProgressMonitor());
-				}
-				IFileStore[] children = store.childStores(EFS.NONE, new NullProgressMonitor());
-				for (IFileStore fileStore : children) {
-					if (fileStore.fetchInfo().isDirectory())
-						fileStore.delete(EFS.NONE, new NullProgressMonitor());
-				}
-				snapshotsProject = CCorePlugin.getDefault().createCProject(description, newProjectHandle, null,
-						SNAPSHOT_PROJECT_ID);
+				snapshotsProject.create(description, new NullProgressMonitor());
+				snapshotsProject.open(new NullProgressMonitor());
 			} catch (Exception e) {
 				EDCDebugger.getMessageLogger().logError(null, e);
 			}