cdt/cdt_6_0_x/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesView.java
--- 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();