cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java
changeset 60 3982fab6369e
parent 52 42077b7eab6e
--- a/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java	Fri Aug 07 12:47:00 2009 -0500
+++ b/cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java	Fri Aug 07 13:47:27 2009 -0500
@@ -225,6 +225,8 @@
 	private Action configureColumnsAction;
 
 	private IMemento memento;
+	
+	private IStructuredSelection oldSelection;
 
 	/**
 	 * Create contents of the Executables View
@@ -239,9 +241,9 @@
 		final SashForm sashForm = new SashForm(container, SWT.NONE);
 
 		// Create the two sub viewers.
-		executablesViewer = new ExecutablesViewer(this, sashForm, SWT.FULL_SELECTION + SWT.BORDER + SWT.MULTI);
+		executablesViewer = new ExecutablesViewer(this, sashForm, SWT.FULL_SELECTION | SWT.BORDER | SWT.MULTI);
 		ExecutablesManager.getExecutablesManager().addExecutablesChangeListener(executablesViewer);
-		sourceFilesViewer = new SourceFilesViewer(this, sashForm, SWT.BORDER);
+		sourceFilesViewer = new SourceFilesViewer(this, sashForm, SWT.BORDER | SWT.MULTI);
 
 		sashForm.setWeights(new int[] { 1, 1 });
 
@@ -268,48 +270,45 @@
 		// update the source files viewer
 		executablesViewer.addSelectionChangedListener(new ISelectionChangedListener() {
 
-					public void selectionChanged(SelectionChangedEvent event) {
-						ISelection newSelection = event.getSelection();
-						if (newSelection instanceof IStructuredSelection) {
-
-							// update the remove action
-							removeAction.setEnabled(!newSelection.isEmpty());
-
-							final Object firstElement = ((IStructuredSelection) newSelection)
-									.getFirstElement();
-
-							Job setectExeJob = new Job(
-									Messages.ExecutablesView_Select_Executable) {
+			public void selectionChanged(SelectionChangedEvent event) {
+				ISelection newSelection = event.getSelection();
+				if (newSelection instanceof IStructuredSelection) {
+					
+					if (oldSelection == null || !oldSelection.equals(newSelection))
+					{
+						// update the remove action
+						removeAction.setEnabled(!newSelection.isEmpty());
+						
+						final Object firstElement = ((IStructuredSelection) newSelection).getFirstElement();
+						
+						Job setectExeJob = new Job(Messages.ExecutablesView_Select_Executable) {
 
-								@Override
-								protected IStatus run(IProgressMonitor monitor) {
-									if (firstElement instanceof Executable) {
-										Executable executable = (Executable) firstElement;
-										this
-												.setName(Messages.ExecutablesView_Finding_Sources_Job_Name
-														+ executable.getName());
-										executable.getSourceFiles(monitor);
-										UIJob selectExeUIJob = new UIJob(
-												Messages.ExecutablesView_Select_Executable) {
-											@Override
-											public IStatus runInUIThread(
-													IProgressMonitor monitor) {
-												sourceFilesViewer
-														.setInput(firstElement);
-												sourceFilesViewer.packColumns();
-												return Status.OK_STATUS;
-											}
-										};
-										selectExeUIJob.schedule();
-									}
-
-									return Status.OK_STATUS;
+							@Override
+							protected IStatus run(IProgressMonitor monitor) {
+								if (firstElement instanceof Executable) {
+									Executable executable = (Executable)firstElement;
+									this.setName(Messages.ExecutablesView_Finding_Sources_Job_Name + executable.getName());
+									executable.getSourceFiles(monitor);
 								}
-							};
-							setectExeJob.schedule();
-						}
+								// selection could be empty, so do this no matter what to update the source
+								// files viewer
+								UIJob selectExeUIJob = new UIJob(Messages.ExecutablesView_Select_Executable){
+									@Override
+									public IStatus runInUIThread(IProgressMonitor monitor) {
+										sourceFilesViewer.setInput(firstElement);
+										sourceFilesViewer.packColumns();
+										return Status.OK_STATUS;
+									}};
+								selectExeUIJob.schedule();								
+								return Status.OK_STATUS;
+							}};
+						setectExeJob.schedule();
+						oldSelection = (IStructuredSelection) newSelection;
 					}
-				});
+					
+				}
+			}
+		});
 
 		executablesViewer.packColumns();
 		sourceFilesViewer.packColumns();