mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +02:00
Fix to match the CDescriptor new features.
This commit is contained in:
parent
2332b3b0f3
commit
3d544739e7
4 changed files with 29 additions and 24 deletions
|
@ -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
|
2004-03-21 Alain Magloire
|
||||||
|
|
||||||
The methods CoreModel.create() are now handle operation.
|
The methods CoreModel.create() are now handle operation.
|
||||||
|
|
|
@ -4,8 +4,6 @@ package org.eclipse.cdt.core.model;
|
||||||
* (c) Copyright QNX Software Systems Ltd. 2002. All Rights Reserved.
|
* (c) Copyright QNX Software Systems Ltd. 2002. All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
import org.eclipse.cdt.core.CCorePlugin;
|
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.BatchOperation;
|
||||||
import org.eclipse.cdt.internal.core.model.CModel;
|
import org.eclipse.cdt.internal.core.model.CModel;
|
||||||
import org.eclipse.cdt.internal.core.model.CModelManager;
|
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.IPath;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
|
||||||
public class CoreModel implements ICDescriptorListener {
|
public class CoreModel {
|
||||||
private static CoreModel cmodel = null;
|
private static CoreModel cmodel = null;
|
||||||
private static CModelManager manager = null;
|
private static CModelManager manager = null;
|
||||||
private static PathEntryManager pathEntryManager = null;
|
private static PathEntryManager pathEntryManager = null;
|
||||||
|
@ -668,14 +666,6 @@ public class CoreModel implements ICDescriptorListener {
|
||||||
manager.addElementChangedListener(listener);
|
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
|
* Removes the given element changed listener. Has no affect if an
|
||||||
* identical listener is not registered.
|
* identical listener is not registered.
|
||||||
|
|
|
@ -476,21 +476,21 @@ public class CModelManager implements IResourceChangeListener, ICDescriptorListe
|
||||||
*/
|
*/
|
||||||
public void resetBinaryParser(IProject project) {
|
public void resetBinaryParser(IProject project) {
|
||||||
if (project != null) {
|
if (project != null) {
|
||||||
ICElement celement = create(project);
|
ICProject cproject = create(project);
|
||||||
if (celement != null) {
|
if (cproject != null) {
|
||||||
// Let the function remove the children
|
// Let the function remove the children
|
||||||
// but it has the side of effect of removing the CProject also
|
// but it has the side of effect of removing the CProject also
|
||||||
// so we have to recall create again.
|
// so we have to recall create again.
|
||||||
releaseCElement(celement);
|
try {
|
||||||
|
cproject.close();
|
||||||
|
} catch (CModelException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
binaryParsersMap.remove(project);
|
binaryParsersMap.remove(project);
|
||||||
celement = create(project);
|
|
||||||
Parent parent = (Parent)celement.getParent();
|
|
||||||
CElementInfo info = parent.getElementInfo();
|
|
||||||
info.addChild(celement);
|
|
||||||
|
|
||||||
// Fired and ICElementDelta.PARSER_CHANGED
|
// Fired and ICElementDelta.PARSER_CHANGED
|
||||||
CElementDelta delta = new CElementDelta(getCModel());
|
CElementDelta delta = new CElementDelta(getCModel());
|
||||||
delta.binaryParserChanged(celement);
|
delta.binaryParserChanged(cproject);
|
||||||
registerCModelDelta(delta);
|
registerCModelDelta(delta);
|
||||||
fire(ElementChangedEvent.POST_CHANGE);
|
fire(ElementChangedEvent.POST_CHANGE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ import org.eclipse.cdt.core.model.IProjectEntry;
|
||||||
import org.eclipse.cdt.core.model.ISourceEntry;
|
import org.eclipse.cdt.core.model.ISourceEntry;
|
||||||
import org.eclipse.cdt.core.model.PathEntryContainerInitializer;
|
import org.eclipse.cdt.core.model.PathEntryContainerInitializer;
|
||||||
import org.eclipse.cdt.internal.core.CharOperation;
|
import org.eclipse.cdt.internal.core.CharOperation;
|
||||||
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.resources.IWorkspaceRunnable;
|
import org.eclipse.core.resources.IWorkspaceRunnable;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.core.runtime.IConfigurationElement;
|
import org.eclipse.core.runtime.IConfigurationElement;
|
||||||
|
@ -95,6 +96,10 @@ public class PathEntryManager implements ICDescriptorListener {
|
||||||
public static PathEntryManager getDefault() {
|
public static PathEntryManager getDefault() {
|
||||||
if (pathEntryManager == null) {
|
if (pathEntryManager == null) {
|
||||||
pathEntryManager = new PathEntryManager();
|
pathEntryManager = new PathEntryManager();
|
||||||
|
// Register the Core Model on the Descriptor
|
||||||
|
// Manager, it needs to know about changes.
|
||||||
|
CCorePlugin.getDefault().getCDescriptorManager().addDescriptorListener(pathEntryManager);
|
||||||
|
|
||||||
}
|
}
|
||||||
return pathEntryManager;
|
return pathEntryManager;
|
||||||
}
|
}
|
||||||
|
@ -241,7 +246,7 @@ public class PathEntryManager implements ICDescriptorListener {
|
||||||
if (progressMonitor != null && progressMonitor.isCanceled()) {
|
if (progressMonitor != null && progressMonitor.isCanceled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ICProject affectedProject = (ICProject) modifiedProjects[i];
|
ICProject affectedProject = modifiedProjects[i];
|
||||||
if (affectedProject == null) {
|
if (affectedProject == null) {
|
||||||
continue; // was filtered out
|
continue; // was filtered out
|
||||||
}
|
}
|
||||||
|
@ -725,20 +730,24 @@ public class PathEntryManager implements ICDescriptorListener {
|
||||||
*/
|
*/
|
||||||
public void descriptorChanged(CDescriptorEvent event) {
|
public void descriptorChanged(CDescriptorEvent event) {
|
||||||
int flags = event.getFlags();
|
int flags = event.getFlags();
|
||||||
if ((flags & CDescriptorEvent.EXTENSION_CHANGED) != 0) {
|
if (event.getType() == CDescriptorEvent.CDTPROJECT_CHANGED) {
|
||||||
ICDescriptor cdesc = event.getDescriptor();
|
ICDescriptor cdesc = event.getDescriptor();
|
||||||
if (cdesc != null) {
|
if (cdesc != null) {
|
||||||
CModelManager manager = CModelManager.getDefault();
|
CModelManager manager = CModelManager.getDefault();
|
||||||
ICProject cproject = manager.create(cdesc.getProject());
|
ICProject cproject = manager.create(cdesc.getProject());
|
||||||
|
IProject project = cproject.getProject();
|
||||||
try {
|
try {
|
||||||
IPathEntry[] oldResolvedEntries = getResolvedPathEntries(cproject);
|
IPathEntry[] oldResolvedEntries = getResolvedPathEntries(cproject);
|
||||||
resolvedMap.remove(cproject);
|
resolvedMap.remove(cproject);
|
||||||
IPathEntry[] newResolvedEntries = getResolvedPathEntries(cproject);
|
IPathEntry[] newResolvedEntries = getResolvedPathEntries(cproject);
|
||||||
ICElementDelta[] deltas = generatePathEntryDeltas(cproject, oldResolvedEntries, newResolvedEntries);
|
ICElementDelta[] deltas = generatePathEntryDeltas(cproject, oldResolvedEntries, newResolvedEntries);
|
||||||
for (int i = 0; i < deltas.length; i++) {
|
if (deltas.length > 0) {
|
||||||
manager.registerCModelDelta(deltas[i]);
|
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) {
|
} catch (CModelException e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue