Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJudy N. Green2002-11-08 20:16:29 +0000
committerJudy N. Green2002-11-08 20:16:29 +0000
commit6b63c5a5dc410b26ff832ebf78f76b9383424e3d (patch)
tree22466f02f67dab765ab62c45adade0cae3812541
parentba6d7cff1304bc4f3c6bfca3195732035bdca692 (diff)
downloadorg.eclipse.cdt-6b63c5a5dc410b26ff832ebf78f76b9383424e3d.tar.gz
org.eclipse.cdt-6b63c5a5dc410b26ff832ebf78f76b9383424e3d.tar.xz
org.eclipse.cdt-6b63c5a5dc410b26ff832ebf78f76b9383424e3d.zip
Added support for converting projects
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptor.java8
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java65
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/COwner.java6
3 files changed, 67 insertions, 12 deletions
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptor.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptor.java
index 6f7d72a64a2..21a5f3d0496 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptor.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptor.java
@@ -50,10 +50,10 @@ public class CDescriptor implements ICDescriptor {
private HashMap extMap = new HashMap(4);
private HashMap extInfoMap = new HashMap(4);
- private final String DESCRIPTION_FILE_NAME = ".cdtproject";
- private final String PROJECT_DESCRIPTION = "cdtproject";
- private final String PROJECT_EXTENSION = "extension";
- private final String PROJECT_EXTENSION_ATTRIBUTE = "attribute";
+ final static String DESCRIPTION_FILE_NAME = ".cdtproject";
+ private final static String PROJECT_DESCRIPTION = "cdtproject";
+ private final static String PROJECT_EXTENSION = "extension";
+ private final static String PROJECT_EXTENSION_ATTRIBUTE = "attribute";
private boolean fDirty;
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java
index 27c6bf32cc4..ba65ce6cd17 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescriptorManager.java
@@ -11,10 +11,12 @@ import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ICDescriptor;
import org.eclipse.cdt.core.ICExtension;
import org.eclipse.cdt.core.ICExtensionReference;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
+import org.eclipse.core.resources.IResourceDelta;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
@@ -22,7 +24,9 @@ import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtension;
import org.eclipse.core.runtime.IExtensionPoint;
import org.eclipse.core.runtime.IPluginRegistry;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
@@ -52,11 +56,39 @@ public class CDescriptorManager implements IResourceChangeListener {
return;
}
IResource resource = event.getResource();
- if ( event.getType() == IResourceChangeEvent.PRE_DELETE ) {
- if(resource.getType() == IResource.PROJECT ) {
- fDescriptorMap.remove(resource);
- }
- }
+
+ Object source = event.getSource();
+
+ int eventType = event.getType();
+
+ switch(eventType) {
+ case IResourceChangeEvent.PRE_DELETE:
+ if (resource.getType() == IResource.PROJECT){
+ fDescriptorMap.remove(resource);
+ }
+ break;
+ case IResourceChangeEvent.POST_CHANGE:
+ IResourceDelta delta= event.getDelta();
+ if (delta == null) {
+ break;
+ }
+ IResource dResource = delta.getResource();
+ //if (0 != (delta.getFlags() & IResourceDelta.OPEN)) {
+ if (dResource instanceof IFile) {
+ IFile file = (IFile)dResource;
+
+ // the .cdtproject file has been deleted
+ if ((file != null) && (file.getName().endsWith(CDescriptor.DESCRIPTION_FILE_NAME)) && !file.exists()){
+ // must remove the corresponding reference to it in the fDescriptorMap
+ if (fDescriptorMap != null){
+ fDescriptorMap.remove(resource);
+ }
+ }
+
+ }
+ //}
+ break;
+ }
}
@@ -123,4 +155,27 @@ public class CDescriptorManager implements IResourceChangeListener {
}
return (ICExtension[]) extensionList.toArray(new ICExtension[extensionList.size()]);
}
+
+ /**
+ * Must remove an existing .cdtproject file before we generate a new one when converting
+ */
+ public static void removeExistingCdtProjectFile(IProject project){
+ IFile file = project.getFile(CDescriptor.DESCRIPTION_FILE_NAME);
+ IProgressMonitor monitor = new NullProgressMonitor();
+
+ // update the resource content
+ if ((file != null) && file.exists()) {
+ try{
+ file.delete(true, monitor);
+ // remove reference from the fDescriptorMap
+ if (fDescriptorMap != null){
+ fDescriptorMap.remove(project);
+ }
+
+ project.refreshLocal(1, monitor);
+ }catch(CoreException ce){
+ CCorePlugin.log(ce);
+ }
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/COwner.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/COwner.java
index c9a14481246..1d61f2b8651 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/COwner.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/COwner.java
@@ -24,9 +24,9 @@ public class COwner implements ICOwnerInfo {
public COwner(String id) throws CoreException {
ownerID = id;
IExtensionPoint extpoint = CCorePlugin.getDefault().getDescriptor().getExtensionPoint("CProject");
- if (extpoint != null) {
- extension = extpoint.getExtension(ownerID);
- } else {
+ extension = extpoint.getExtension(ownerID);
+
+ if (extension == null) {
IStatus status = new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID, -1, "Invalid CDTProject owner ID", (Throwable)null);
throw new CoreException(status);
}

Back to the top