[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] CDescriptorManager.java management of the .cdtproject file
|
These three changes are related, but the diffs were a little long, so I
broke them up.
***
cvs diff -N -u "ChangeLog"
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/ChangeLog,v
retrieving revision 1.22
diff -u -r1.22 ChangeLog
--- ChangeLog 7 Nov 2002 03:20:16 -0000 1.22
+++ ChangeLog 8 Nov 2002 20:11:32 -0000
@@ -1,3 +1,17 @@
+2002-11-08 Judy N. Green
+ * src/org/eclipse/cdt/internal/core/COwner.java
+ fixed check in constructor to throw error when ownerID is invalid
+
+ * src/org/eclipse/cdt/internal/core/CDescriptor.java
+ made all constants static and changed visibility of
DESCRIPTION_FILE_NAME
+ to package to be used by tge CDescriptorManager
+
+ * src/org/eclipse/cdt/internal/core/CDescriptorManager.java
+ Added to event in order to catch when the .cdtprject file is
deleted.
+ delete reference to the CDT project Descriptor when a missing file
is detected.
+
+ Added new public method removeExistingCdtProjectFile(IProject
project), required when converting a project.
+
2002-11-06 Alain Magloire
* src/org/eclipse/cdt/ErrorParserManager.java (parse):
***
cvs diff -N -u "CDescriptorManager.java"
Index: CDescriptorManager.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CDescript
orManager.java,v
retrieving revision 1.5
diff -u -r1.5 CDescriptorManager.java
--- CDescriptorManager.java 4 Oct 2002 18:11:18 -0000 1.5
+++ CDescriptorManager.java 8 Nov 2002 20:08:18 -0000
@@ -11,10 +11,12 @@
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.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 @@
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 @@
}
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);
+ }
+ }
+ }
}
¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨
Judy N. Green Software Engineer
QNX Software Systems Ltd. www.qnx.com
¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨¨°ºo§oº°¨¨¨