cdt/cdt_5_0_x/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java
changeset 23 7357eeb2874f
parent 19 89d3c8eb71dd
child 24 b00fe9004252
equal deleted inserted replaced
22:15beacfadfc7 23:7357eeb2874f
   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