diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/TargetListViewerPart.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/TargetListViewerPart.java index fead8fb5dba..ae02f6e1397 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/TargetListViewerPart.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/TargetListViewerPart.java @@ -42,16 +42,18 @@ public class TargetListViewerPart extends StructuredViewerPart { tableViewer = new TableViewer(parent, SWT.SINGLE | SWT.BORDER); Table table = (Table) tableViewer.getControl(); TableLayout layout = new TableLayout(); - table.setLayout(layout); - table.setHeaderVisible(true); layout.addColumnData(new ColumnWeightData(50)); - TableColumn tc = new TableColumn(table, SWT.NONE); + TableColumn tc = new TableColumn(table, SWT.NONE, 0); tc.setText("Targets"); + layout.addColumnData(new ColumnWeightData(50)); - tc = new TableColumn(table, SWT.NONE); + tc = new TableColumn(table, SWT.NONE, 1); tc.setText("Location"); + table.setLayout(layout); + table.setHeaderVisible(true); + tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent e) { TargetListViewerPart.this.selectionChanged((IStructuredSelection) e.getSelection()); @@ -100,13 +102,15 @@ public class TargetListViewerPart extends StructuredViewerPart { protected void selectionChanged(IStructuredSelection selection) { fSelectedTarget = (IMakeTarget) selection.getFirstElement(); - updateEnabledState(); + if (getViewer() != null) { + updateEnabledState(); + } } public void setSelectedTarget(IMakeTarget target) { fSelectedTarget = target; if (tableViewer != null) { - tableViewer.setSelection(new StructuredSelection(fSelectedTarget), true); + tableViewer.setSelection(new StructuredSelection(fSelectedTarget), false); } } @@ -128,8 +132,8 @@ public class TargetListViewerPart extends StructuredViewerPart { public void createControl(Composite parent, int style, int span) { super.createControl(parent, style, span); updateEnabledState(); - if (fSelectedTarget != null) { - tableViewer.setSelection(new StructuredSelection(fSelectedTarget), true); + if (getViewer() != null && fSelectedTarget != null) { + getViewer().setSelection(new StructuredSelection(fSelectedTarget)); } } diff --git a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java index 542bf7dd78d..f9fd94f3e54 100644 --- a/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java +++ b/build/org.eclipse.cdt.make.ui/src/org/eclipse/cdt/make/ui/dialogs/BuildTargetDialog.java @@ -8,6 +8,8 @@ import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IDoubleClickListener; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; @@ -43,6 +45,7 @@ public class BuildTargetDialog extends Dialog { // create Build and Cancel buttons by default createButton(parent, IDialogConstants.OK_ID, "Build", true); createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); + getButton(IDialogConstants.OK_ID).setEnabled(targetPart.getSelectedTarget() != null); } protected Control createDialogArea(Composite parent) { @@ -64,16 +67,20 @@ public class BuildTargetDialog extends Dialog { okPressed(); } }); - + targetPart.getViewer().addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + getButton(IDialogConstants.OK_ID).setEnabled(targetPart.getSelectedTarget() != null); + } + }); return composite; } protected void okPressed() { IMakeTarget selected = targetPart.getSelectedTarget(); - if (selected != null) { - TargetBuild.runWithProgressDialog(getShell(), new IMakeTarget[] { selected }); - } super.okPressed(); + if (selected != null) { + TargetBuild.runWithProgressDialog(getParentShell(), new IMakeTarget[] { selected }); + } } }