1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-04 23:05:47 +02:00

Bug 470717 - [Launch Bar] NPE in some launch configuration when creating

through launch bar wizard

Change-Id: Ib4627341b3074613dd8e42e71e85161267a37c65
This commit is contained in:
Alena Laskavaia 2015-06-22 10:20:15 -04:00 committed by Elena Laskavaia
parent a637a8a4ef
commit 3a6a685bdb

View file

@ -20,11 +20,14 @@ import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.internal.core.LaunchManager; import org.eclipse.debug.internal.core.LaunchManager;
import org.eclipse.debug.internal.ui.DebugUIPlugin; import org.eclipse.debug.internal.ui.DebugUIPlugin;
import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationDialog;
import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationManager; import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationManager;
import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationPresentationManager; import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationPresentationManager;
import org.eclipse.debug.ui.ILaunchConfigurationDialog; import org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog;
import org.eclipse.debug.internal.ui.launchConfigurations.LaunchGroupExtension;
import org.eclipse.debug.ui.ILaunchConfigurationTab; import org.eclipse.debug.ui.ILaunchConfigurationTab;
import org.eclipse.debug.ui.ILaunchConfigurationTabGroup; import org.eclipse.debug.ui.ILaunchConfigurationTabGroup;
import org.eclipse.debug.ui.ILaunchGroup;
import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.resource.ColorRegistry; import org.eclipse.jface.resource.ColorRegistry;
import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.resource.JFaceResources;
@ -49,7 +52,7 @@ public class NewLaunchConfigEditPage extends WizardPage {
ILaunchConfigurationTabGroup tabGroup; ILaunchConfigurationTabGroup tabGroup;
private Text nameText; private Text nameText;
private CTabFolder tabFolder; private CTabFolder tabFolder;
private LaunchConfigurationDialog launchConfigurationDialog = new LaunchConfigurationDialog(); private LaunchConfigurationDialog launchConfigurationDialog = new LaunchConfigurationDialogFake();
private LaunchConfigurationManager launchConfigurationMgr = DebugUIPlugin.getDefault().getLaunchConfigurationManager(); private LaunchConfigurationManager launchConfigurationMgr = DebugUIPlugin.getDefault().getLaunchConfigurationManager();
public NewLaunchConfigEditPage() { public NewLaunchConfigEditPage() {
@ -126,6 +129,7 @@ public class NewLaunchConfigEditPage extends WizardPage {
tabGroup = LaunchConfigurationPresentationManager.getDefault().getTabGroup(workingCopy, initialMode); tabGroup = LaunchConfigurationPresentationManager.getDefault().getTabGroup(workingCopy, initialMode);
for (CTabItem item : tabFolder.getItems()) for (CTabItem item : tabFolder.getItems())
item.dispose(); item.dispose();
LaunchConfigurationsDialog.setCurrentlyVisibleLaunchConfigurationDialog(launchConfigurationDialog);
tabGroup.createTabs(launchConfigurationDialog, initialMode); tabGroup.createTabs(launchConfigurationDialog, initialMode);
boolean firstTab = true; boolean firstTab = true;
for (ILaunchConfigurationTab tab : tabGroup.getTabs()) { for (ILaunchConfigurationTab tab : tabGroup.getTabs()) {
@ -165,6 +169,7 @@ public class NewLaunchConfigEditPage extends WizardPage {
return false; return false;
for (ILaunchConfigurationTab tab : tabGroup.getTabs()) for (ILaunchConfigurationTab tab : tabGroup.getTabs())
tab.performApply(workingCopy); tab.performApply(workingCopy);
LaunchConfigurationsDialog.setCurrentlyVisibleLaunchConfigurationDialog(null);
return true; return true;
} }
@ -213,12 +218,31 @@ public class NewLaunchConfigEditPage extends WizardPage {
} }
} }
private class LaunchConfigurationDialog implements ILaunchConfigurationDialog { private class LaunchConfigurationDialogFake extends LaunchConfigurationDialog {
public LaunchConfigurationDialogFake() {
super(NewLaunchConfigEditPage.this.getShell(), null, null);
}
@Override
protected ILaunchConfiguration getLaunchConfiguration() {
return workingCopy;
}
@Override
public LaunchGroupExtension getLaunchGroup() {
return NewLaunchConfigEditPage.this.getLaunchGroup();
}
@Override
public String getMode() {
return NewLaunchConfigEditPage.this.getMode();
}
@Override @Override
public void run(boolean fork, boolean cancelable, public void run(boolean fork, boolean cancelable,
IRunnableWithProgress runnable) IRunnableWithProgress runnable)
throws InvocationTargetException, InterruptedException { throws InvocationTargetException, InterruptedException {
// TODO Auto-generated method stub // ignore
} }
@Override @Override
@ -232,7 +256,7 @@ public class NewLaunchConfigEditPage extends WizardPage {
@Override @Override
public void setName(String name) { public void setName(String name) {
// TODO Auto-generated method stub // ignore
} }
@Override @Override
@ -253,10 +277,6 @@ public class NewLaunchConfigEditPage extends WizardPage {
return tabGroup.getTabs()[i]; return tabGroup.getTabs()[i];
} }
@Override
public String getMode() {
return ((NewLaunchConfigWizard) getWizard()).modePage.selectedGroup.getMode();
}
@Override @Override
public void setActiveTab(ILaunchConfigurationTab tab) { public void setActiveTab(ILaunchConfigurationTab tab) {
@ -276,4 +296,25 @@ public class NewLaunchConfigEditPage extends WizardPage {
tabFolder.setSelection(index); tabFolder.setSelection(index);
} }
} }
public String getMode() {
return ((NewLaunchConfigWizard) getWizard()).modePage.selectedGroup.getMode();
}
public LaunchGroupExtension getLaunchGroup() {
try {
if (workingCopy == null)
return null;
ILaunchGroup group = DebugUIPlugin.getDefault().getLaunchConfigurationManager()
.getLaunchGroup(workingCopy.getType(), getMode());
if (group == null) {
return null;
}
LaunchGroupExtension groupExt = DebugUIPlugin.getDefault().getLaunchConfigurationManager()
.getLaunchGroup(group.getIdentifier());
return groupExt;
} catch (CoreException e) {
return null;
}
}
} }