Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlain Magloire2004-03-22 21:23:55 +0000
committerAlain Magloire2004-03-22 21:23:55 +0000
commit3d544739e7231f111874ea7e4e75f1f50eb99d0c (patch)
tree2f72ea1e637775b233971640ee367146f05caaf1
parent2332b3b0f32609a82a74ad29e935464e6feb72e6 (diff)
downloadorg.eclipse.cdt-3d544739e7231f111874ea7e4e75f1f50eb99d0c.tar.gz
org.eclipse.cdt-3d544739e7231f111874ea7e4e75f1f50eb99d0c.tar.xz
org.eclipse.cdt-3d544739e7231f111874ea7e4e75f1f50eb99d0c.zip
Fix to match the CDescriptor new features.
-rw-r--r--core/org.eclipse.cdt.core/ChangeLog6
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java12
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java16
-rw-r--r--core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryManager.java19
4 files changed, 29 insertions, 24 deletions
diff --git a/core/org.eclipse.cdt.core/ChangeLog b/core/org.eclipse.cdt.core/ChangeLog
index 490e4ed27aa..7e4e615c332 100644
--- a/core/org.eclipse.cdt.core/ChangeLog
+++ b/core/org.eclipse.cdt.core/ChangeLog
@@ -1,3 +1,9 @@
+2004-03-22 Alain Magloire
+
+ * model/org/eclipse/cdt/core/model/CoreModel.java
+ * model/org/eclipse/cdt/internla/core/model/PathEntryManager.java
+ * model/org/eclipse/cdt/internla/core/model/CModelManager.java
+
2004-03-21 Alain Magloire
The methods CoreModel.create() are now handle operation.
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java
index dd530cdfbf2..bb1d6ea9b6d 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/core/model/CoreModel.java
@@ -4,8 +4,6 @@ package org.eclipse.cdt.core.model;
* (c) Copyright QNX Software Systems Ltd. 2002. All Rights Reserved.
*/
import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.CDescriptorEvent;
-import org.eclipse.cdt.core.ICDescriptorListener;
import org.eclipse.cdt.internal.core.model.BatchOperation;
import org.eclipse.cdt.internal.core.model.CModel;
import org.eclipse.cdt.internal.core.model.CModelManager;
@@ -30,7 +28,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-public class CoreModel implements ICDescriptorListener {
+public class CoreModel {
private static CoreModel cmodel = null;
private static CModelManager manager = null;
private static PathEntryManager pathEntryManager = null;
@@ -668,14 +666,6 @@ public class CoreModel implements ICDescriptorListener {
manager.addElementChangedListener(listener);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.ICDescriptorListener#descriptorChanged(org.eclipse.cdt.core.CDescriptorEvent)
- */
- public void descriptorChanged(CDescriptorEvent event) {
- pathEntryManager.descriptorChanged(event);
- manager.descriptorChanged(event);
- }
-
/**
* Removes the given element changed listener. Has no affect if an
* identical listener is not registered.
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java
index 1e74dfd53dd..19ba0165edb 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java
@@ -476,21 +476,21 @@ public class CModelManager implements IResourceChangeListener, ICDescriptorListe
*/
public void resetBinaryParser(IProject project) {
if (project != null) {
- ICElement celement = create(project);
- if (celement != null) {
+ ICProject cproject = create(project);
+ if (cproject != null) {
// Let the function remove the children
// but it has the side of effect of removing the CProject also
// so we have to recall create again.
- releaseCElement(celement);
+ try {
+ cproject.close();
+ } catch (CModelException e) {
+ e.printStackTrace();
+ }
binaryParsersMap.remove(project);
- celement = create(project);
- Parent parent = (Parent)celement.getParent();
- CElementInfo info = parent.getElementInfo();
- info.addChild(celement);
// Fired and ICElementDelta.PARSER_CHANGED
CElementDelta delta = new CElementDelta(getCModel());
- delta.binaryParserChanged(celement);
+ delta.binaryParserChanged(cproject);
registerCModelDelta(delta);
fire(ElementChangedEvent.POST_CHANGE);
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryManager.java
index e2234a37196..7d430bbd09b 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryManager.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/PathEntryManager.java
@@ -37,6 +37,7 @@ import org.eclipse.cdt.core.model.IProjectEntry;
import org.eclipse.cdt.core.model.ISourceEntry;
import org.eclipse.cdt.core.model.PathEntryContainerInitializer;
import org.eclipse.cdt.internal.core.CharOperation;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IConfigurationElement;
@@ -95,6 +96,10 @@ public class PathEntryManager implements ICDescriptorListener {
public static PathEntryManager getDefault() {
if (pathEntryManager == null) {
pathEntryManager = new PathEntryManager();
+ // Register the Core Model on the Descriptor
+ // Manager, it needs to know about changes.
+ CCorePlugin.getDefault().getCDescriptorManager().addDescriptorListener(pathEntryManager);
+
}
return pathEntryManager;
}
@@ -241,7 +246,7 @@ public class PathEntryManager implements ICDescriptorListener {
if (progressMonitor != null && progressMonitor.isCanceled()) {
return;
}
- ICProject affectedProject = (ICProject) modifiedProjects[i];
+ ICProject affectedProject = modifiedProjects[i];
if (affectedProject == null) {
continue; // was filtered out
}
@@ -725,20 +730,24 @@ public class PathEntryManager implements ICDescriptorListener {
*/
public void descriptorChanged(CDescriptorEvent event) {
int flags = event.getFlags();
- if ((flags & CDescriptorEvent.EXTENSION_CHANGED) != 0) {
+ if (event.getType() == CDescriptorEvent.CDTPROJECT_CHANGED) {
ICDescriptor cdesc = event.getDescriptor();
if (cdesc != null) {
CModelManager manager = CModelManager.getDefault();
ICProject cproject = manager.create(cdesc.getProject());
+ IProject project = cproject.getProject();
try {
IPathEntry[] oldResolvedEntries = getResolvedPathEntries(cproject);
resolvedMap.remove(cproject);
IPathEntry[] newResolvedEntries = getResolvedPathEntries(cproject);
ICElementDelta[] deltas = generatePathEntryDeltas(cproject, oldResolvedEntries, newResolvedEntries);
- for (int i = 0; i < deltas.length; i++) {
- manager.registerCModelDelta(deltas[i]);
+ if (deltas.length > 0) {
+ cproject.close();
+ for (int i = 0; i < deltas.length; i++) {
+ manager.registerCModelDelta(deltas[i]);
+ }
+ manager.fire(ElementChangedEvent.POST_CHANGE);
}
- manager.fire(ElementChangedEvent.POST_CHANGE);
} catch (CModelException e) {
}
}

Back to the top