Skip to main content

[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º°¨¨¨


Back to the top