mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 367559: better handling of project add/remove/open/close
This commit is contained in:
parent
51bcd20951
commit
96c0441f69
1 changed files with 32 additions and 10 deletions
|
@ -228,6 +228,18 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh the whole view.
|
||||||
|
*/
|
||||||
|
private void refreshView() {
|
||||||
|
Display.getDefault().asyncExec(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
viewer.refresh();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Refresh the project tree or the project subtree (in case of drill-down adapter) in the view.
|
* Refresh the project tree or the project subtree (in case of drill-down adapter) in the view.
|
||||||
*/
|
*/
|
||||||
|
@ -269,6 +281,18 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void targetChanged(MakeTargetEvent event) {
|
public void targetChanged(MakeTargetEvent event) {
|
||||||
|
// Additions/removal of projects. Only notifications for projects having applicable builder come here.
|
||||||
|
int type = event.getType();
|
||||||
|
if (type == MakeTargetEvent.PROJECT_ADDED || type == MakeTargetEvent.PROJECT_REMOVED) {
|
||||||
|
refreshView();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
IMakeTarget[] targets = event.getTargets();
|
||||||
|
if (targets == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Set<IProject> affectedProjects = new HashSet<IProject>();
|
Set<IProject> affectedProjects = new HashSet<IProject>();
|
||||||
for (IMakeTarget target : event.getTargets()) {
|
for (IMakeTarget target : event.getTargets()) {
|
||||||
IContainer container = target.getContainer();
|
IContainer container = target.getContainer();
|
||||||
|
@ -288,11 +312,14 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
}
|
}
|
||||||
|
|
||||||
for (IResourceDelta d : delta.getAffectedChildren(IResourceDelta.ADDED | IResourceDelta.REMOVED)) {
|
for (IResourceDelta d : delta.getAffectedChildren(IResourceDelta.ADDED | IResourceDelta.REMOVED)) {
|
||||||
|
// handle folders only, additions/removal of projects are dealt with in #targetChanged(MakeTargetEvent)
|
||||||
IResource rc = d.getResource();
|
IResource rc = d.getResource();
|
||||||
int rcType = rc.getType();
|
if (rc.getType() == IResource.FOLDER) {
|
||||||
if (rcType == IResource.PROJECT || rcType == IResource.FOLDER) {
|
IProject project = rc.getProject();
|
||||||
affectedProjects.add(rc.getProject());
|
if (MakeCorePlugin.getDefault().getTargetManager().hasTargetBuilder(project)) {
|
||||||
return;
|
affectedProjects.add(project);
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -359,12 +386,7 @@ public class MakeContentProvider implements ITreeContentProvider, IMakeTargetLis
|
||||||
@Override
|
@Override
|
||||||
public void preferenceChange(PreferenceChangeEvent event) {
|
public void preferenceChange(PreferenceChangeEvent event) {
|
||||||
if (event.getKey().equals(CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT)) {
|
if (event.getKey().equals(CCorePreferenceConstants.SHOW_SOURCE_ROOTS_AT_TOP_LEVEL_OF_PROJECT)) {
|
||||||
Display.getDefault().asyncExec(new Runnable() {
|
refreshView();
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
viewer.refresh();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue