413 // project needs to be refreshed after a build/clean as the binary may |
413 // project needs to be refreshed after a build/clean as the binary may |
414 // be added/removed/renamed etc. |
414 // be added/removed/renamed etc. |
415 if (event.getType() == IResourceChangeEvent.POST_BUILD) { |
415 if (event.getType() == IResourceChangeEvent.POST_BUILD) { |
416 Object obj = event.getSource(); |
416 Object obj = event.getSource(); |
417 if (obj != null && obj instanceof IProject) { |
417 if (obj != null && obj instanceof IProject) { |
418 if (executablesMap.containsKey(obj)) { |
418 try { |
419 List<Executable> executables = executablesMap.remove(obj); |
419 // make sure there's at least one builder for the project. this gets called even |
420 |
420 // when there are no builder (e.g. the Executables project for imported executables). |
421 trace("Scheduling refresh because project " + ((IProject)obj).getName() + " built or cleaned"); |
421 IProject project = (IProject)obj; |
422 |
422 if (project.getDescription().getBuildSpec().length > 0) { |
423 scheduleRefresh(); |
423 if (executablesMap.containsKey(obj)) { |
424 |
424 List<Executable> executables = executablesMap.remove(obj); |
425 // notify the listeners that these executables have possibly changed |
425 |
426 if (executables != null && executables.size() > 0) { |
426 trace("Scheduling refresh because project " + ((IProject)obj).getName() + " built or cleaned"); |
427 synchronized (changeListeners) { |
427 |
428 for (IExecutablesChangeListener listener : changeListeners) { |
428 scheduleRefresh(); |
429 listener.executablesChanged(executables); |
429 |
|
430 // notify the listeners that these executables have possibly changed |
|
431 if (executables != null && executables.size() > 0) { |
|
432 synchronized (changeListeners) { |
|
433 for (IExecutablesChangeListener listener : changeListeners) { |
|
434 listener.executablesChanged(executables); |
|
435 } |
|
436 } |
430 } |
437 } |
431 } |
438 } |
432 } |
439 } |
|
440 } catch (CoreException e) { |
|
441 e.printStackTrace(); |
433 } |
442 } |
434 } |
443 } |
435 return; |
444 return; |
436 } |
445 } |
437 |
446 |