1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 22:52:11 +02:00

Added support for converting projects

This commit is contained in:
Judy N. Green 2002-11-08 20:16:29 +00:00
parent ba6d7cff13
commit 6b63c5a5dc
3 changed files with 67 additions and 12 deletions

View file

@ -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;

View file

@ -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);
}
}
}
}

View file

@ -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);
}