diff options
Diffstat (limited to 'launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java')
-rw-r--r-- | launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java | 125 |
1 files changed, 114 insertions, 11 deletions
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java index 82dec0564f0..ce58517e7c1 100644 --- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java +++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CMainTab.java @@ -66,9 +66,12 @@ import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.FileDialog; +import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.ElementListSelectionDialog; +import org.eclipse.ui.dialogs.PreferencesUtil; import org.eclipse.ui.dialogs.TwoPaneElementSelector; /** @@ -114,6 +117,15 @@ public class CMainTab extends CLaunchConfigurationTab { * @since 6.0 */ protected Combo fBuildConfigCombo; + // Build option UI widgets + /** @since 6.1 */ + protected Button fDisableBuildButton; + /** @since 6.1 */ + protected Button fEnableBuildButton; + /** @since 6.1 */ + protected Button fWorkspaceSettingsButton; + /** @since 6.1 */ + protected Link fWorkpsaceSettingsLink; private final boolean fWantsTerminalOption; protected Button fTerminalButton; @@ -162,9 +174,9 @@ public class CMainTab extends CLaunchConfigurationTab { comp.setLayout(topLayout); createVerticalSpacer(comp, 1); - createProjectGroup(comp, 1); - createBuildConfigCombo(comp, 1); createExeFileGroup(comp, 1); + createProjectGroup(comp, 1); + createBuildOptionGroup(comp, 1); createVerticalSpacer(comp, 1); if (fSpecifyCoreFile) { createCoreFileGroup(comp, 1); @@ -320,6 +332,65 @@ public class CMainTab extends CLaunchConfigurationTab { }); } + /** @since 6.1 */ + protected void createBuildOptionGroup(final Composite parent, int colSpan) { + Group buildGroup = new Group(parent, SWT.NONE); + GridData gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = colSpan; + GridLayout gridLayout = new GridLayout(); + gridLayout.numColumns = 2; + gridLayout.marginHeight = 5; + gridLayout.marginWidth = 5; + gridLayout.makeColumnsEqualWidth= true; + buildGroup.setLayoutData(gridData); + buildGroup.setLayout(gridLayout); + buildGroup.setText(LaunchMessages.getString("CMainTab.Build_options")); //$NON-NLS-1$ + + createBuildConfigCombo(buildGroup, 2); + + fEnableBuildButton = new Button(buildGroup, SWT.RADIO); + fEnableBuildButton.setText(LaunchMessages.getString("CMainTab.Enable_build_button_label")); //$NON-NLS-1$ + fEnableBuildButton.setToolTipText(LaunchMessages.getString("CMainTab.Enable_build_button_tooltip")); //$NON-NLS-1$ + fEnableBuildButton.addSelectionListener(new SelectionAdapter() { + + public void widgetSelected(SelectionEvent evt) { + updateLaunchConfigurationDialog(); + } + }); + + fDisableBuildButton = new Button(buildGroup, SWT.RADIO); + fDisableBuildButton.setText(LaunchMessages.getString("CMainTab.Disable_build_button_label")); //$NON-NLS-1$ + fDisableBuildButton.setToolTipText(LaunchMessages.getString("CMainTab.Disable_build_button_tooltip")); //$NON-NLS-1$ + fDisableBuildButton.addSelectionListener(new SelectionAdapter() { + + public void widgetSelected(SelectionEvent evt) { + updateLaunchConfigurationDialog(); + } + }); + + fWorkspaceSettingsButton = new Button(buildGroup, SWT.RADIO); + fWorkspaceSettingsButton.setText(LaunchMessages.getString("CMainTab.Workspace_settings_button_label")); //$NON-NLS-1$ + fWorkspaceSettingsButton.setToolTipText(LaunchMessages.getString("CMainTab.Workspace_settings_button_tooltip")); //$NON-NLS-1$ + fWorkspaceSettingsButton.addSelectionListener(new SelectionAdapter() { + + public void widgetSelected(SelectionEvent evt) { + updateLaunchConfigurationDialog(); + } + }); + + fWorkpsaceSettingsLink = new Link(buildGroup, SWT.NONE); //$NON-NLS-1$ + fWorkpsaceSettingsLink.setText(LaunchMessages.getString("CMainTab.Workspace_settings_link_label")); //$NON-NLS-1$ + fWorkpsaceSettingsLink.addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + PreferencesUtil.createPreferenceDialogOn( + parent.getShell(), + LaunchMessages.getString("CMainTab.Workspace_settings_page_id"), //$NON-NLS-1$ + null, + null).open(); + } + }); + + } /** @since 6.0 */ protected void createCoreFileGroup(Composite parent, int colSpan) { Composite coreComp = new Composite(parent, SWT.NONE); @@ -395,6 +466,7 @@ public class CMainTab extends CLaunchConfigurationTab { updateProjectFromConfig(config); updateProgramFromConfig(config); updateCoreFromConfig(config); + updateBuildOptionFromConfig(config); updateTerminalFromConfig(config); } @@ -424,13 +496,16 @@ public class CMainTab extends CLaunchConfigurationTab { } protected void updateProgramFromConfig(ILaunchConfiguration config) { - String programName = EMPTY_STRING; - try { - programName = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, EMPTY_STRING); - } catch (CoreException ce) { - LaunchUIPlugin.log(ce); + if (fProgText != null) + { + String programName = EMPTY_STRING; + try { + programName = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, EMPTY_STRING); + } catch (CoreException ce) { + LaunchUIPlugin.log(ce); + } + fProgText.setText(programName); } - fProgText.setText(programName); } /** @since 6.0 */ @@ -445,7 +520,21 @@ public class CMainTab extends CLaunchConfigurationTab { fCoreText.setText(coreName); } } - + + /** @since 6.1 */ + protected void updateBuildOptionFromConfig(ILaunchConfiguration config) { + int buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING; + try { + buildBeforeLaunchValue = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_BUILD_BEFORE_LAUNCH, buildBeforeLaunchValue); + } catch (CoreException e) { + LaunchUIPlugin.log(e); + } + + fDisableBuildButton.setSelection(buildBeforeLaunchValue == ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_DISABLED); + fEnableBuildButton.setSelection(buildBeforeLaunchValue == ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_ENABLED); + fWorkspaceSettingsButton.setSelection(buildBeforeLaunchValue == ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING); + } + /* * (non-Javadoc) * @@ -464,14 +553,28 @@ public class CMainTab extends CLaunchConfigurationTab { config.setMappedResources(null); } config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, fProjText.getText()); - config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID, (String)fBuildConfigCombo.getData(Integer.toString(fBuildConfigCombo.getSelectionIndex()))); - config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, fProgText.getText()); + if (fBuildConfigCombo != null) { + config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID, (String)fBuildConfigCombo.getData(Integer.toString(fBuildConfigCombo.getSelectionIndex()))); + } + if (fProgText != null) { + config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, fProgText.getText()); + } if (fCoreText != null) { config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_COREFILE_PATH, fCoreText.getText()); } if (fTerminalButton != null) { config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_USE_TERMINAL, fTerminalButton.getSelection()); } + + if (fDisableBuildButton != null) { + int buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_USE_WORKSPACE_SETTING; + if (fDisableBuildButton.getSelection()) { + buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_DISABLED; + } else if (fEnableBuildButton.getSelection()) { + buildBeforeLaunchValue = ICDTLaunchConfigurationConstants.BUILD_BEFORE_LAUNCH_ENABLED; + } + config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_BUILD_BEFORE_LAUNCH, buildBeforeLaunchValue); + } } /** |