mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 08:55:25 +02:00
more check to prevent NPE plus "build" will dismiss the target dialog before building
This commit is contained in:
parent
313f632a5d
commit
75031996e1
2 changed files with 23 additions and 12 deletions
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 });
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue