Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonah Graham2019-01-04 12:00:42 -0500
committerJonah Graham2019-07-09 21:17:22 -0400
commitf96971a278189debdfa2f8b7af64c70642bdfbe9 (patch)
tree9e501a023a15da8d990f94b44bbc403a2ac0d132
parentedfc7d4c0eeb1b99a45302ec6fa324538a4e74d5 (diff)
downloadorg.eclipse.cdt-f96971a278189debdfa2f8b7af64c70642bdfbe9.tar.gz
org.eclipse.cdt-f96971a278189debdfa2f8b7af64c70642bdfbe9.tar.xz
org.eclipse.cdt-f96971a278189debdfa2f8b7af64c70642bdfbe9.zip
Bug 542488: Remove duplicated code
When DSF was first created it was a separate project that borrowed heavily from CDT, as such (AFAICT) some code was copied from o.e.cdt.launch to DSF. This commit de-duplicates some of that code as the DAP implementation wants to reuse the code too and another copy is not wanted. Change-Id: Ie54187dabc9c32224575c0bf51bcabfab00ca340
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CArgumentsTab.java228
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java1
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CLaunchConfigurationTab.java167
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/WorkingDirectoryBlock.java372
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF4
-rw-r--r--dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java90
-rw-r--r--launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF2
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java113
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/Messages.java27
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/messages.properties13
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CAbstractArgumentsTab.java224
-rw-r--r--launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CArgumentsTab.java201
-rw-r--r--llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF5
13 files changed, 394 insertions, 1053 deletions
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CArgumentsTab.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CArgumentsTab.java
index 9efcea5f2a..a26ec88ec8 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CArgumentsTab.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CArgumentsTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2016 QNX Software Systems and others.
+ * Copyright (c) 2005, 2019 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -15,31 +15,7 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.internal.ui.launching;
-import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
-import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
-import org.eclipse.cdt.dsf.gdb.launching.LaunchMessages;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.debug.ui.StringVariableSelectionDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
+import org.eclipse.cdt.launch.ui.CAbstractArgumentsTab;
/**
* A launch configuration tab that displays and edits program arguments,
@@ -48,7 +24,7 @@ import org.eclipse.swt.widgets.Text;
* This class may be instantiated. This class is not intended to be subclassed.
* </p>
*/
-public class CArgumentsTab extends CLaunchConfigurationTab {
+public class CArgumentsTab extends CAbstractArgumentsTab {
/**
* Tab identifier used for ordering of tabs added using the
* <code>org.eclipse.debug.ui.launchConfigurationTabs</code>
@@ -58,206 +34,8 @@ public class CArgumentsTab extends CLaunchConfigurationTab {
*/
public static final String TAB_ID = "org.eclipse.cdt.dsf.gdb.launch.argumentsTab"; //$NON-NLS-1$
- // Program arguments UI widgets
- protected Label fPrgmArgumentsLabel;
- protected Text fPrgmArgumentsText;
- protected Button fArgumentVariablesButton;
-
- // Working directory
- protected WorkingDirectoryBlock fWorkingDirectoryBlock = new WorkingDirectoryBlock();
-
- @Override
- public void createControl(Composite parent) {
- Font font = parent.getFont();
- Composite comp = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout(1, true);
- comp.setLayout(layout);
- comp.setFont(font);
-
- GridData gd = new GridData(GridData.FILL_BOTH);
- comp.setLayoutData(gd);
- setControl(comp);
-
- GdbUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
- ICDTLaunchHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_ARGUMNETS_TAB);
-
- createArgumentComponent(comp, 1);
-
- fWorkingDirectoryBlock.createControl(comp);
- }
-
- protected void createArgumentComponent(Composite comp, int horizontalSpan) {
- Font font = comp.getFont();
- Group group = new Group(comp, SWT.NONE);
- group.setFont(font);
- group.setLayout(new GridLayout());
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.horizontalSpan = horizontalSpan;
- group.setLayoutData(gd);
-
- group.setText(LaunchMessages.getString("CArgumentsTab.C/C++_Program_Arguments")); //$NON-NLS-1$
- fPrgmArgumentsText = new Text(group, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
- fPrgmArgumentsText.getAccessible().addAccessibleListener(new AccessibleAdapter() {
- @Override
- public void getName(AccessibleEvent e) {
- e.result = LaunchMessages.getString("CArgumentsTab.C/C++_Program_Arguments"); //$NON-NLS-1$
- }
- });
- gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 40;
- gd.widthHint = 100;
- fPrgmArgumentsText.setLayoutData(gd);
- fPrgmArgumentsText.setFont(font);
- fPrgmArgumentsText.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent evt) {
- updateLaunchConfigurationDialog();
- }
- });
- fArgumentVariablesButton = createPushButton(group, LaunchMessages.getString("CArgumentsTab.Variables"), null); //$NON-NLS-1$
- gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
- fArgumentVariablesButton.setLayoutData(gd);
- fArgumentVariablesButton.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent arg0) {
- handleVariablesButtonSelected(fPrgmArgumentsText);
- }
- });
- addControlAccessibleListener(fArgumentVariablesButton, fArgumentVariablesButton.getText()); // need to strip the mnemonic from buttons
- }
-
- /**
- * A variable entry button has been pressed for the given text
- * field. Prompt the user for a variable and enter the result
- * in the given field.
- */
- protected void handleVariablesButtonSelected(Text textField) {
- String variable = getVariable();
- if (variable != null) {
- textField.insert(variable);
- }
- }
-
- /**
- * Prompts the user to choose and configure a variable and returns
- * the resulting string, suitable to be used as an attribute.
- */
- private String getVariable() {
- StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(getShell());
- dialog.open();
- return dialog.getVariableExpression();
- }
-
- public void addControlAccessibleListener(Control control, String controlName) {
- // Strip mnemonic (&)
- String[] strs = controlName.split("&"); //$NON-NLS-1$
- StringBuilder stripped = new StringBuilder();
- for (int i = 0; i < strs.length; i++) {
- stripped.append(strs[i]);
- }
- control.getAccessible().addAccessibleListener(new ControlAccessibleListener(stripped.toString()));
- }
-
- private class ControlAccessibleListener extends AccessibleAdapter {
- private String controlName;
-
- ControlAccessibleListener(String name) {
- controlName = name;
- }
-
- @Override
- public void getName(AccessibleEvent e) {
- e.result = controlName;
- }
- }
-
- @Override
- public boolean isValid(ILaunchConfiguration config) {
- return fWorkingDirectoryBlock.isValid(config);
- }
-
- @Override
- public void setDefaults(ILaunchConfigurationWorkingCopy config) {
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String) null);
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY, (String) null);
- }
-
- @Override
- public void initializeFrom(ILaunchConfiguration configuration) {
- try {
- fPrgmArgumentsText
- .setText(configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, "")); //$NON-NLS-1$
- fWorkingDirectoryBlock.initializeFrom(configuration);
- } catch (CoreException e) {
- setErrorMessage(LaunchMessages.getFormattedString(
- "Launch.common.Exception_occurred_reading_configuration_EXCEPTION", e.getStatus().getMessage())); //$NON-NLS-1$
- GdbUIPlugin.log(e);
- }
- }
-
- @Override
- public void performApply(ILaunchConfigurationWorkingCopy configuration) {
- configuration.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
- getAttributeValueFrom(fPrgmArgumentsText));
- fWorkingDirectoryBlock.performApply(configuration);
- }
-
- /**
- * Returns the string in the text widget, or <code>null</code> if empty.
- *
- * @return text or <code>null</code>
- */
- protected String getAttributeValueFrom(Text text) {
- String content = text.getText().trim();
- // Bug #131513 - eliminate Windows \r line delimiter
- content = content.replaceAll("\r\n", "\n"); //$NON-NLS-1$//$NON-NLS-2$
- if (!content.isEmpty()) {
- return content;
- }
- return null;
- }
-
@Override
public String getId() {
return TAB_ID;
}
-
- @Override
- public String getName() {
- return LaunchMessages.getString("CArgumentsTab.Arguments"); //$NON-NLS-1$
- }
-
- @Override
- public void setLaunchConfigurationDialog(ILaunchConfigurationDialog dialog) {
- super.setLaunchConfigurationDialog(dialog);
- fWorkingDirectoryBlock.setLaunchConfigurationDialog(dialog);
- }
-
- @Override
- public String getErrorMessage() {
- String m = super.getErrorMessage();
- if (m == null) {
- return fWorkingDirectoryBlock.getErrorMessage();
- }
- return m;
- }
-
- @Override
- public String getMessage() {
- String m = super.getMessage();
- if (m == null) {
- return fWorkingDirectoryBlock.getMessage();
- }
- return m;
- }
-
- @Override
- public Image getImage() {
- return LaunchImages.get(LaunchImages.IMG_VIEW_ARGUMENTS_TAB);
- }
-
- @Override
- protected void updateLaunchConfigurationDialog() {
- super.updateLaunchConfigurationDialog();
- }
}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java
index b66396dec7..c817b79143 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CDebuggerTab.java
@@ -28,6 +28,7 @@ import org.eclipse.cdt.dsf.gdb.IGdbDebugPreferenceConstants;
import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
import org.eclipse.cdt.dsf.gdb.launching.LaunchMessages;
import org.eclipse.cdt.dsf.gdb.service.SessionType;
+import org.eclipse.cdt.launch.ui.CLaunchConfigurationTab;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CLaunchConfigurationTab.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CLaunchConfigurationTab.java
deleted file mode 100644
index 106cca5e00..0000000000
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/CLaunchConfigurationTab.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2016 QNX Software Systems and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * QNX Software Systems - Initial API and implementation
- * Ken Ryall (Nokia) - bug 178731
- *******************************************************************************/
-package org.eclipse.cdt.dsf.gdb.internal.ui.launching;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.ICDescriptor;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ICElement;
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.core.settings.model.ICProjectDescription;
-import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
-import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IWorkbenchPage;
-
-public abstract class CLaunchConfigurationTab extends AbstractLaunchConfigurationTab {
- /**
- * Returns the current C element context from which to initialize default
- * settings, or <code>null</code> if none. Note, if possible we will
- * return the IBinary based on config entry as this may be more usefull then
- * just the project.
- *
- * @return C element context.
- */
- protected ICElement getContext(ILaunchConfiguration config, String platform) {
- String projectName = null;
- String programName = null;
- IWorkbenchPage page = GdbUIPlugin.getActivePage();
- Object obj = null;
- try {
- projectName = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, (String) null);
- programName = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, (String) null);
- if (programName != null) {
- programName = VariablesPlugin.getDefault().getStringVariableManager()
- .performStringSubstitution(programName);
- }
- } catch (CoreException e) {
- }
-
- if (projectName != null && !projectName.isEmpty()) {
- IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
- ICProject cProject = CCorePlugin.getDefault().getCoreModel().create(project);
- if (cProject != null && cProject.exists()) {
- obj = cProject;
- }
- } else {
- if (page != null) {
- ISelection selection = page.getSelection();
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection ss = (IStructuredSelection) selection;
- if (!ss.isEmpty()) {
- obj = ss.getFirstElement();
- }
- }
- }
- }
- if (obj instanceof IResource) {
- ICElement ce = CoreModel.getDefault().create((IResource) obj);
- if (ce == null) {
- IProject pro = ((IResource) obj).getProject();
- ce = CoreModel.getDefault().create(pro);
- }
- obj = ce;
- }
- if (obj instanceof ICElement) {
- if (platform != null && !platform.equals("*")) { //$NON-NLS-1$
- ICDescriptor descriptor;
- try {
- descriptor = CCorePlugin.getDefault()
- .getCProjectDescription(((ICElement) obj).getCProject().getProject(), false);
- if (descriptor != null) {
- String projectPlatform = descriptor.getPlatform();
- if (!projectPlatform.equals(platform) && !projectPlatform.equals("*")) { //$NON-NLS-1$
- obj = null;
- }
- }
- } catch (CoreException e) {
- }
- }
- if (obj != null) {
- if (programName == null || programName.isEmpty()) {
- return (ICElement) obj;
- }
- ICElement ce = (ICElement) obj;
- IProject project;
- project = (IProject) ce.getCProject().getResource();
- IPath programFile = project.getFile(programName).getLocation();
- ce = CCorePlugin.getDefault().getCoreModel().create(programFile);
- if (ce != null && ce.exists()) {
- return ce;
- }
- return (ICElement) obj;
- }
- }
- if (page != null) {
- IEditorPart part = page.getActiveEditor();
- if (part != null) {
- IEditorInput input = part.getEditorInput();
- if (input instanceof IFileEditorInput) {
- IFile file = ((IFileEditorInput) input).getFile();
- if (file != null) {
- ICElement ce = CoreModel.getDefault().create(file);
- if (ce == null) {
- IProject pro = file.getProject();
- ce = CoreModel.getDefault().create(pro);
- }
- return ce;
- }
- }
- }
- }
- return null;
- }
-
- /**
- * Set the C project attribute based on the ICElement.
- */
- protected void initializeCProject(ICElement cElement, ILaunchConfigurationWorkingCopy config) {
- ICProject cProject = cElement.getCProject();
- String name = null;
- if (cProject != null && cProject.exists()) {
- name = cProject.getElementName();
- config.setMappedResources(new IResource[] { cProject.getProject() });
-
- ICProjectDescription projDes = CCorePlugin.getDefault().getProjectDescription(cProject.getProject());
- String buildConfigID = projDes.getActiveConfiguration().getId();
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_BUILD_CONFIG_ID, buildConfigID);
- }
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, name);
- }
-
- protected String getPlatform(ILaunchConfiguration config) {
- String platform = Platform.getOS();
- try {
- return config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PLATFORM, platform);
- } catch (CoreException e) {
- return platform;
- }
- }
-}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/WorkingDirectoryBlock.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/WorkingDirectoryBlock.java
deleted file mode 100644
index 7aa8a00483..0000000000
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb.ui/src/org/eclipse/cdt/dsf/gdb/internal/ui/launching/WorkingDirectoryBlock.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Ericsson - Updated for DSF
- *******************************************************************************/
-package org.eclipse.cdt.dsf.gdb.internal.ui.launching;
-
-import java.io.File;
-
-import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
-import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
-import org.eclipse.cdt.dsf.gdb.launching.LaunchUtils;
-import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.variables.IStringVariableManager;
-import org.eclipse.core.variables.VariablesPlugin;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.ui.StringVariableSelectionDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.DirectoryDialog;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.dialogs.ContainerSelectionDialog;
-
-/**
- * A control for setting the working directory associated with a launch
- * configuration.
- */
-public class WorkingDirectoryBlock extends CLaunchConfigurationTab {
-
- // Local directory
- protected Text fWorkingDirText;
- protected Button fWorkspaceButton;
- protected Button fFileSystemButton;
- protected Button fVariablesButton;
-
- // use default button
- protected Button fUseDefaultWorkingDirButton;
-
- /**
- * The last launch config this tab was initialized from
- */
- protected ILaunchConfiguration fLaunchConfiguration;
-
- /**
- * A listener to update for text changes and widget selection
- */
- private class WidgetListener extends SelectionAdapter implements ModifyListener {
-
- @Override
- public void modifyText(ModifyEvent e) {
- updateLaunchConfigurationDialog();
- }
-
- @Override
- public void widgetSelected(SelectionEvent e) {
- Object source = e.getSource();
- if (source == fWorkspaceButton) {
- handleWorkspaceDirBrowseButtonSelected();
- } else if (source == fFileSystemButton) {
- handleWorkingDirBrowseButtonSelected();
- } else if (source == fUseDefaultWorkingDirButton) {
- handleUseDefaultWorkingDirButtonSelected();
- } else if (source == fVariablesButton) {
- handleWorkingDirVariablesButtonSelected();
- }
- }
- }
-
- private WidgetListener fListener = new WidgetListener();
-
- @Override
- public void createControl(Composite parent) {
- Font font = parent.getFont();
-
- Group group = new Group(parent, SWT.NONE);
- // WorkbenchHelp.setHelp(group,
- // IJavaDebugHelpContextIds.WORKING_DIRECTORY_BLOCK);
- GridLayout workingDirLayout = new GridLayout();
- workingDirLayout.makeColumnsEqualWidth = false;
- group.setLayout(workingDirLayout);
- GridData gd = new GridData(GridData.FILL_HORIZONTAL);
- group.setLayoutData(gd);
- group.setFont(font);
- setControl(group);
-
- group.setText(LaunchUIMessages.getString("WorkingDirectoryBlock.Working_directory")); //$NON-NLS-1$
-
- fWorkingDirText = new Text(group, SWT.SINGLE | SWT.BORDER);
- fWorkingDirText.getAccessible().addAccessibleListener(new AccessibleAdapter() {
- @Override
- public void getName(AccessibleEvent e) {
- e.result = LaunchUIMessages.getString("WorkingDirectoryBlock.Working_directory"); //$NON-NLS-1$
- }
- });
- gd = new GridData(GridData.FILL_HORIZONTAL);
- fWorkingDirText.setLayoutData(gd);
- fWorkingDirText.setFont(font);
- fWorkingDirText.addModifyListener(fListener);
-
- fUseDefaultWorkingDirButton = new Button(group, SWT.CHECK);
- fUseDefaultWorkingDirButton.setText(LaunchUIMessages.getString("WorkingDirectoryBlock.Use_default")); //$NON-NLS-1$
- gd = new GridData(GridData.FILL, GridData.BEGINNING, true, false);
- fUseDefaultWorkingDirButton.setLayoutData(gd);
- fUseDefaultWorkingDirButton.setFont(font);
- fUseDefaultWorkingDirButton.addSelectionListener(fListener);
-
- Composite buttonComp = new Composite(group, SWT.NONE);
- GridLayout layout = new GridLayout(3, false);
- layout.marginHeight = 0;
- layout.marginWidth = 0;
- buttonComp.setLayout(layout);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
- buttonComp.setLayoutData(gd);
- buttonComp.setFont(font);
- fWorkspaceButton = createPushButton(buttonComp, LaunchUIMessages.getString("WorkingDirectoryBlock.0"), null); //$NON-NLS-1$
- fWorkspaceButton.addSelectionListener(fListener);
-
- fFileSystemButton = createPushButton(buttonComp, LaunchUIMessages.getString("WorkingDirectoryBlock.1"), null); //$NON-NLS-1$
- fFileSystemButton.addSelectionListener(fListener);
-
- fVariablesButton = createPushButton(buttonComp, LaunchUIMessages.getString("WorkingDirectoryBlock.17"), null); //$NON-NLS-1$
- fVariablesButton.addSelectionListener(fListener);
- }
-
- @Override
- public void dispose() {
- }
-
- /**
- * Show a dialog that lets the user select a working directory
- */
- protected void handleWorkingDirBrowseButtonSelected() {
- DirectoryDialog dialog = new DirectoryDialog(getShell());
- dialog.setMessage(LaunchUIMessages.getString("WorkingDirectoryBlock.7")); //$NON-NLS-1$
- String currentWorkingDir = fWorkingDirText.getText();
- if (!currentWorkingDir.trim().isEmpty()) {
- File path = new File(currentWorkingDir);
- if (path.exists()) {
- dialog.setFilterPath(currentWorkingDir);
- }
- }
-
- String selectedDirectory = dialog.open();
- if (selectedDirectory != null) {
- fWorkingDirText.setText(selectedDirectory);
- }
- }
-
- /**
- * Show a dialog that lets the user select a working directory from the
- * workspace
- */
- protected void handleWorkspaceDirBrowseButtonSelected() {
- ContainerSelectionDialog dialog = new ContainerSelectionDialog(getShell(),
- ResourcesPlugin.getWorkspace().getRoot(), false, LaunchUIMessages.getString("WorkingDirectoryBlock.4")); //$NON-NLS-1$
-
- IContainer currentContainer = getContainer();
- if (currentContainer != null) {
- IPath path = currentContainer.getFullPath();
- dialog.setInitialSelections(new Object[] { path });
- }
-
- dialog.showClosedProjects(false);
- dialog.open();
- Object[] results = dialog.getResult();
- if ((results != null) && (results.length > 0) && (results[0] instanceof IPath)) {
- IPath path = (IPath) results[0];
- String containerName = path.makeRelative().toString();
- fWorkingDirText.setText("${workspace_loc:" + containerName + "}"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
-
- /**
- * Returns the selected workspace container,or <code>null</code>
- */
- protected IContainer getContainer() {
- String path = fWorkingDirText.getText().trim();
- if (!path.isEmpty()) {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IResource res = root.findMember(path);
- if (res instanceof IContainer) {
- return (IContainer) res;
- }
- }
- return null;
- }
-
- /**
- * The default working dir check box has been toggled.
- */
- protected void handleUseDefaultWorkingDirButtonSelected() {
- boolean def = isDefaultWorkingDirectory();
- if (def) {
- setDefaultWorkingDir();
- }
- fWorkingDirText.setEnabled(!def);
- fWorkspaceButton.setEnabled(!def);
- fVariablesButton.setEnabled(!def);
- fFileSystemButton.setEnabled(!def);
- }
-
- protected void handleWorkingDirVariablesButtonSelected() {
- String variableText = getVariable();
- if (variableText != null) {
- fWorkingDirText.insert(variableText);
- }
- }
-
- private String getVariable() {
- StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(getShell());
- dialog.open();
- return dialog.getVariableExpression();
- }
-
- /**
- * Sets the default working directory
- */
- protected void setDefaultWorkingDir() {
- try {
- ILaunchConfiguration config = getLaunchConfiguration();
- if (config != null) {
- ICProject cProject = LaunchUtils.getCProject(config);
- if (cProject != null) {
- fWorkingDirText.setText("${workspace_loc:" + cProject.getPath().makeRelative().toOSString() + "}"); //$NON-NLS-1$ //$NON-NLS-2$
- return;
- }
- }
- } catch (CoreException ce) {
- }
- fWorkingDirText.setText(System.getProperty("user.dir")); //$NON-NLS-1$
- }
-
- @Override
- public boolean isValid(ILaunchConfiguration config) {
-
- setErrorMessage(null);
- setMessage(null);
-
- // if variables are present, we cannot resolve the directory
- String workingDirPath = fWorkingDirText.getText().trim();
- if (workingDirPath.indexOf("${") >= 0) { //$NON-NLS-1$
- IStringVariableManager manager = VariablesPlugin.getDefault().getStringVariableManager();
- try {
- manager.validateStringVariables(workingDirPath);
- } catch (CoreException e) {
- setErrorMessage(e.getMessage());
- return false;
- }
- } else if (!workingDirPath.isEmpty()) {
- IContainer container = getContainer();
- if (container == null) {
- File dir = new File(workingDirPath);
- if (dir.isDirectory()) {
- return true;
- }
- setErrorMessage(LaunchUIMessages.getString("WorkingDirectoryBlock.10")); //$NON-NLS-1$
- return false;
- }
- }
- return true;
- }
-
- /**
- * Defaults are empty.
- *
- * @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
- */
- @Override
- public void setDefaults(ILaunchConfigurationWorkingCopy config) {
- // config.setAttribute(IJavaLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
- // (String)null);
- }
-
- @Override
- public void initializeFrom(ILaunchConfiguration configuration) {
- setLaunchConfiguration(configuration);
- try {
- String wd = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY,
- (String) null);
- fWorkingDirText.setText(""); //$NON-NLS-1$
- if (wd == null) {
- fUseDefaultWorkingDirButton.setSelection(true);
- } else {
- fWorkingDirText.setText(wd);
- fUseDefaultWorkingDirButton.setSelection(false);
- }
- handleUseDefaultWorkingDirButtonSelected();
- } catch (CoreException e) {
- setErrorMessage(
- LaunchUIMessages.getString("WorkingDirectoryBlock.Exception_occurred_reading_configuration___15") //$NON-NLS-1$
- + e.getStatus().getMessage());
- GdbUIPlugin.log(e);
- }
- }
-
- @Override
- public void performApply(ILaunchConfigurationWorkingCopy configuration) {
- String wd = null;
- if (!isDefaultWorkingDirectory()) {
- wd = getAttributeValueFrom(fWorkingDirText);
- }
- configuration.setAttribute(ICDTLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY, wd);
- }
-
- /**
- * Retuns the string in the text widget, or <code>null</code> if empty.
- *
- * @return text or <code>null</code>
- */
- protected String getAttributeValueFrom(Text text) {
- String content = text.getText().trim();
- if (!content.isEmpty()) {
- return content;
- }
- return null;
- }
-
- @Override
- public String getName() {
- return LaunchUIMessages.getString("WorkingDirectoryBlock.Working_Directory_8"); //$NON-NLS-1$
- }
-
- /**
- * Returns whether the default working directory is to be used
- */
- protected boolean isDefaultWorkingDirectory() {
- return fUseDefaultWorkingDirButton.getSelection();
- }
-
- /**
- * Sets the c project currently specified by the given launch config, if
- * any.
- */
- protected void setLaunchConfiguration(ILaunchConfiguration config) {
- fLaunchConfiguration = config;
- }
-
- /**
- * Returns the current c project context
- */
- protected ILaunchConfiguration getLaunchConfiguration() {
- return fLaunchConfiguration;
- }
-
-}
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF b/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
index 646026f718..63b5af0f01 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.dsf.gdb;singleton:=true
-Bundle-Version: 5.7.100.qualifier
+Bundle-Version: 5.7.200.qualifier
Bundle-Activator: org.eclipse.cdt.dsf.gdb.internal.GdbPlugin
Bundle-Localization: plugin
Require-Bundle: org.eclipse.core.runtime,
@@ -12,7 +12,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.cdt.core,
org.eclipse.cdt.debug.core,
org.eclipse.core.variables,
- org.eclipse.cdt.launch;bundle-version="6.1.0",
+ org.eclipse.cdt.launch;bundle-version="9.3.0",
org.eclipse.cdt.gdb;bundle-version="7.0.0",
org.eclipse.core.resources,
org.eclipse.launchbar.core;bundle-version="2.0.0";visibility:=reexport,
diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java
index 729d211e33..dd8eae54da 100644
--- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java
+++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/gdb/launching/GdbLaunch.java
@@ -19,7 +19,6 @@ package org.eclipse.cdt.dsf.gdb.launching;
import java.io.BufferedReader;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
@@ -72,7 +71,6 @@ import org.eclipse.cdt.dsf.service.DsfServiceEventHandler;
import org.eclipse.cdt.dsf.service.DsfServicesTracker;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.core.resources.IContainer;
-import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
@@ -614,27 +612,8 @@ public class GdbLaunch extends DsfLaunch implements ITerminate, IDisconnect, ITr
}
private IProject getProject() throws CoreException {
- String projectName = getLaunchConfiguration().getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME,
- (String) null);
- IProject project = null;
- if (projectName == null) {
- IResource[] resources = getLaunchConfiguration().getMappedResources();
- if (resources != null && resources.length > 0 && resources[0] instanceof IProject) {
- project = (IProject) resources[0];
- }
- } else {
- projectName = projectName.trim();
- if (projectName.length() == 0) {
- return null;
- }
- project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
- }
-
- if (project == null || !project.isAccessible()) {
- // No project
- return null;
- }
- return project;
+ ILaunchConfiguration configuration = getLaunchConfiguration();
+ return org.eclipse.cdt.launch.LaunchUtils.getProject(configuration);
}
/**
@@ -725,15 +704,7 @@ public class GdbLaunch extends DsfLaunch implements ITerminate, IDisconnect, ITr
* @since 5.0
*/
public String getProgramArguments() throws CoreException {
- String programArguments = getLaunchConfiguration()
- .getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String) null);
-
- if (programArguments != null) {
- programArguments = VariablesPlugin.getDefault().getStringVariableManager()
- .performStringSubstitution(programArguments);
- }
-
- return programArguments;
+ return org.eclipse.cdt.launch.LaunchUtils.getProgramArguments(getLaunchConfiguration());
}
/**
@@ -743,60 +714,9 @@ public class GdbLaunch extends DsfLaunch implements ITerminate, IDisconnect, ITr
* @since 5.0
*/
public String getProgramPath() throws CoreException {
+ ILaunchConfiguration configuration = getLaunchConfiguration();
String programName = getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME);
- if (programName == null) {
- programName = getLaunchConfiguration().getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME,
- (String) null);
- }
- if (programName == null) {
- throwException(LaunchMessages.getString("AbstractCLaunchDelegate.Program_file_not_specified"), null, //$NON-NLS-1$
- ICDTLaunchConfigurationConstants.ERR_UNSPECIFIED_PROGRAM);
- }
- programName = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(programName);
- IPath programPath = new Path(programName);
- if (programPath.isEmpty()) {
- throwException(LaunchMessages.getString("AbstractCLaunchDelegate.Program_file_does_not_exist"), null, //$NON-NLS-1$
- ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
- }
-
- if (!programPath.isAbsolute()) {
- IProject project = getProject();
- ICProject cproject = CCorePlugin.getDefault().getCoreModel().create(project);
- if (cproject != null) {
- // Find the specified program within the specified project
- IFile wsProgramPath = cproject.getProject().getFile(programPath);
- programPath = wsProgramPath.getLocation();
- }
- }
- if (!programPath.toFile().exists()) {
- throwException(LaunchMessages.getString("AbstractCLaunchDelegate.Program_file_does_not_exist"), //$NON-NLS-1$
- new FileNotFoundException(
- LaunchMessages.getFormattedString("AbstractCLaunchDelegate.PROGRAM_PATH_not_found", //$NON-NLS-1$
- programPath.toOSString())),
- ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
- }
-
- return programPath.toOSString();
- }
-
- /**
- * Throws a core exception with an error status object built from the given
- * message, lower level exception, and error code.
- *
- * @param message
- * the status message
- * @param exception
- * lower level exception associated with the error, or
- * <code>null</code> if none
- * @param code
- * error code
- */
- private static void throwException(String message, Throwable exception, int code) throws CoreException {
- MultiStatus status = new MultiStatus(GdbPlugin.PLUGIN_ID, code, message, exception);
- status.add(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID, code,
- exception == null ? "" : exception.getLocalizedMessage(), //$NON-NLS-1$
- exception));
- throw new CoreException(status);
+ return org.eclipse.cdt.launch.LaunchUtils.resolveProgramPath(configuration, programName);
}
/**
diff --git a/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF b/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF
index 26910934d4..cbfeba7e8b 100644
--- a/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF
+++ b/launch/org.eclipse.cdt.launch/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-SymbolicName: org.eclipse.cdt.launch; singleton:=true
-Bundle-Version: 9.2.1.qualifier
+Bundle-Version: 9.3.0.qualifier
Bundle-Activator: org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin
Bundle-Vendor: %providerName
Bundle-Localization: plugin
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java
index d9a0d72939..eef1fd7984 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/LaunchUtils.java
@@ -15,6 +15,7 @@
*******************************************************************************/
package org.eclipse.cdt.launch;
+import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
@@ -24,6 +25,7 @@ import org.eclipse.cdt.core.IBinaryParser;
import org.eclipse.cdt.core.IBinaryParser.IBinaryObject;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.CoreModelUtil;
+import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.settings.model.ICConfigExtensionReference;
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
import org.eclipse.cdt.core.settings.model.ICOutputEntry;
@@ -33,14 +35,19 @@ import org.eclipse.cdt.core.settings.model.extension.CConfigurationData;
import org.eclipse.cdt.core.settings.model.util.CDataUtil;
import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
import org.eclipse.cdt.internal.core.resources.ResourceLookup;
+import org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin;
import org.eclipse.cdt.utils.CommandLineUtil;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.SubProgressMonitor;
import org.eclipse.core.variables.IStringVariableManager;
import org.eclipse.core.variables.VariablesPlugin;
@@ -49,6 +56,8 @@ import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.activities.IActivityManager;
import org.eclipse.ui.activities.IWorkbenchActivitySupport;
+import com.ibm.icu.text.MessageFormat;
+
/**
* Utility methods.
*/
@@ -103,6 +112,90 @@ public class LaunchUtils {
}
/**
+ * Return the program path
+ *
+ * @param configuration Launch configuration to obtain paths from
+ * @return the program path
+ * @throws CoreException if program path can not be resolved.
+ */
+ public static String getProgramPath(ILaunchConfiguration configuration) throws CoreException {
+ return resolveProgramPath(configuration, null);
+ }
+
+ /**
+ * Return the program path, resolved as an absolute OS string.
+ *
+ * @param configuration Launch configuration to obtain paths from
+ * @param programName Optional (can be null) starting point for program name
+ * @return the program path
+ * @throws CoreException if program path can not be resolved.
+ */
+ public static String resolveProgramPath(ILaunchConfiguration configuration, String programName)
+ throws CoreException {
+ if (programName == null) {
+ programName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, (String) null);
+ }
+ if (programName == null) {
+ throwException(Messages.LaunchUtils_program_file_not_specified, null,
+ ICDTLaunchConfigurationConstants.ERR_UNSPECIFIED_PROGRAM);
+ }
+ programName = VariablesPlugin.getDefault().getStringVariableManager().performStringSubstitution(programName);
+ IPath programPath = new Path(programName);
+ if (programPath.isEmpty()) {
+ throwException(Messages.LaunchUtils_program_file_does_not_exist, null,
+ ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
+ }
+
+ if (!programPath.isAbsolute()) {
+ IProject project = getProject(configuration);
+ ICProject cproject = CCorePlugin.getDefault().getCoreModel().create(project);
+ if (cproject != null) {
+ // Find the specified program within the specified project
+ IFile wsProgramPath = cproject.getProject().getFile(programPath);
+ programPath = wsProgramPath.getLocation();
+ }
+ }
+ if (!programPath.toFile().exists()) {
+ throwException(Messages.LaunchUtils_program_file_does_not_exist,
+ new FileNotFoundException(
+ MessageFormat.format(Messages.LaunchUtils__0_not_found, programPath.toOSString())),
+ ICDTLaunchConfigurationConstants.ERR_PROGRAM_NOT_EXIST);
+ }
+
+ return programPath.toOSString();
+ }
+
+ /**
+ * Return project or <code>null</code> if project is not accessible or not specified.
+ * @param configuration Launch configuration to obtain project from
+ * @return the project
+ * @throws CoreException
+ */
+ public static IProject getProject(ILaunchConfiguration configuration) throws CoreException {
+ String projectName = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME,
+ (String) null);
+ IProject project = null;
+ if (projectName == null) {
+ IResource[] resources = configuration.getMappedResources();
+ if (resources != null && resources.length > 0 && resources[0] instanceof IProject) {
+ project = (IProject) resources[0];
+ }
+ } else {
+ projectName = projectName.trim();
+ if (projectName.length() == 0) {
+ return null;
+ }
+ project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+ }
+
+ if (project == null || !project.isAccessible()) {
+ // No project
+ return null;
+ }
+ return project;
+ }
+
+ /**
* @since 6.0
*/
public static IBinaryObject getBinary(IProject project, IPath exePath) throws CoreException {
@@ -243,4 +336,24 @@ public class LaunchUtils {
}
return buildConfig;
}
+
+ /**
+ * Throws a core exception with an error status object built from the given
+ * message, lower level exception, and error code.
+ *
+ * @param message
+ * the status message
+ * @param exception
+ * lower level exception associated with the error, or
+ * <code>null</code> if none
+ * @param code
+ * error code
+ */
+ private static void throwException(String message, Throwable exception, int code) throws CoreException {
+ MultiStatus status = new MultiStatus(LaunchUIPlugin.PLUGIN_ID, code, message, exception);
+ status.add(new Status(IStatus.ERROR, LaunchUIPlugin.PLUGIN_ID, code,
+ exception == null ? "" : exception.getLocalizedMessage(), //$NON-NLS-1$
+ exception));
+ throw new CoreException(status);
+ }
}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/Messages.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/Messages.java
new file mode 100644
index 0000000000..7d0b3f256b
--- /dev/null
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/Messages.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2019 Kichwa Coders and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *******************************************************************************/
+package org.eclipse.cdt.launch;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.cdt.launch.messages"; //$NON-NLS-1$
+ public static String LaunchUtils__0_not_found;
+ public static String LaunchUtils_program_file_does_not_exist;
+ public static String LaunchUtils_program_file_not_specified;
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/messages.properties b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/messages.properties
new file mode 100644
index 0000000000..426d03f33f
--- /dev/null
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/messages.properties
@@ -0,0 +1,13 @@
+###############################################################################
+# Copyright (c) 2019 Kichwa Coders and others.
+#
+# This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License 2.0
+# which accompanies this distribution, and is available at
+# https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+###############################################################################
+LaunchUtils__0_not_found={0} not found
+LaunchUtils_program_file_does_not_exist=Program file does not exist
+LaunchUtils_program_file_not_specified=Program file not specified
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CAbstractArgumentsTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CAbstractArgumentsTab.java
new file mode 100644
index 0000000000..4fa02b821c
--- /dev/null
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CAbstractArgumentsTab.java
@@ -0,0 +1,224 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2016 QNX Software Systems and others.
+ *
+ * This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ * IBM Corporation
+ *******************************************************************************/
+package org.eclipse.cdt.launch.ui;
+
+import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
+import org.eclipse.cdt.launch.internal.ui.LaunchImages;
+import org.eclipse.cdt.launch.internal.ui.LaunchMessages;
+import org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin;
+import org.eclipse.cdt.launch.internal.ui.WorkingDirectoryBlock;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.ILaunchConfiguration;
+import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
+import org.eclipse.debug.ui.ILaunchConfigurationDialog;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.accessibility.AccessibleAdapter;
+import org.eclipse.swt.accessibility.AccessibleEvent;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+/**
+ * A launch configuration tab that displays and edits program arguments,
+ * and working directory launch configuration attributes.
+ */
+public abstract class CAbstractArgumentsTab extends CLaunchConfigurationTab {
+ // Program arguments UI widgets
+ protected Label fPrgmArgumentsLabel;
+ protected Text fPrgmArgumentsText;
+ protected Button fArgumentVariablesButton;
+
+ /**
+ * Working Directory
+ * @noreference This field is not intended to be referenced by clients.
+ */
+ protected WorkingDirectoryBlock fWorkingDirectoryBlock = new WorkingDirectoryBlock();
+
+ @Override
+ public void createControl(Composite parent) {
+ Font font = parent.getFont();
+ Composite comp = new Composite(parent, SWT.NONE);
+ GridLayout layout = new GridLayout(1, true);
+ comp.setLayout(layout);
+ comp.setFont(font);
+
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ comp.setLayoutData(gd);
+ setControl(comp);
+
+ LaunchUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
+ ICDTLaunchHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_ARGUMNETS_TAB);
+
+ createArgumentComponent(comp, 1);
+
+ fWorkingDirectoryBlock.createControl(comp);
+ }
+
+ protected void createArgumentComponent(Composite comp, int horizontalSpan) {
+ Font font = comp.getFont();
+ Group group = new Group(comp, SWT.NONE);
+ group.setFont(font);
+ group.setLayout(new GridLayout());
+ GridData gd = new GridData(GridData.FILL_BOTH);
+ gd.horizontalSpan = horizontalSpan;
+ group.setLayoutData(gd);
+
+ group.setText(LaunchMessages.CArgumentsTab_C_Program_Arguments);
+ fPrgmArgumentsText = new Text(group, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
+ fPrgmArgumentsText.getAccessible().addAccessibleListener(new AccessibleAdapter() {
+ @Override
+ public void getName(AccessibleEvent e) {
+ e.result = LaunchMessages.CArgumentsTab_C_Program_Arguments;
+ }
+ });
+ gd = new GridData(GridData.FILL_BOTH);
+ gd.heightHint = 40;
+ gd.widthHint = 100;
+ fPrgmArgumentsText.setLayoutData(gd);
+ fPrgmArgumentsText.setFont(font);
+ fPrgmArgumentsText.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent evt) {
+ updateLaunchConfigurationDialog();
+ }
+ });
+ fArgumentVariablesButton = createVariablesButton(group, LaunchMessages.CArgumentsTab_Variables,
+ fPrgmArgumentsText);
+ gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
+ fArgumentVariablesButton.setLayoutData(gd);
+ addControlAccessibleListener(fArgumentVariablesButton, fArgumentVariablesButton.getText()); // need to strip the mnemonic from buttons
+ }
+
+ public void addControlAccessibleListener(Control control, String controlName) {
+ // Strip mnemonic (&)
+ String[] strs = controlName.split("&"); //$NON-NLS-1$
+ StringBuilder stripped = new StringBuilder();
+ for (int i = 0; i < strs.length; i++) {
+ stripped.append(strs[i]);
+ }
+ control.getAccessible().addAccessibleListener(new ControlAccessibleListener(stripped.toString()));
+ }
+
+ private class ControlAccessibleListener extends AccessibleAdapter {
+ private String controlName;
+
+ ControlAccessibleListener(String name) {
+ controlName = name;
+ }
+
+ @Override
+ public void getName(AccessibleEvent e) {
+ e.result = controlName;
+ }
+ }
+
+ @Override
+ public boolean isValid(ILaunchConfiguration config) {
+ return fWorkingDirectoryBlock.isValid(config);
+ }
+
+ @Override
+ public void setDefaults(ILaunchConfigurationWorkingCopy config) {
+ config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String) null);
+ config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY, (String) null);
+ }
+
+ @Override
+ public void initializeFrom(ILaunchConfiguration configuration) {
+ try {
+ fPrgmArgumentsText
+ .setText(configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, "")); //$NON-NLS-1$
+ fWorkingDirectoryBlock.initializeFrom(configuration);
+ } catch (CoreException e) {
+ setErrorMessage(NLS.bind(LaunchMessages.Launch_common_Exception_occurred_reading_configuration_EXCEPTION,
+ e.getStatus().getMessage()));
+ LaunchUIPlugin.log(e);
+ }
+ }
+
+ @Override
+ public void performApply(ILaunchConfigurationWorkingCopy configuration) {
+ configuration.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
+ getAttributeValueFrom(fPrgmArgumentsText));
+ fWorkingDirectoryBlock.performApply(configuration);
+ }
+
+ /**
+ * Returns the string in the text widget, or <code>null</code> if empty.
+ *
+ * @return text or <code>null</code>
+ */
+ protected String getAttributeValueFrom(Text text) {
+ String content = text.getText().trim();
+ // Bug #131513 - eliminate Windows \r line delimiter
+ content = content.replaceAll("\r\n", "\n"); //$NON-NLS-1$//$NON-NLS-2$
+ if (!content.isEmpty()) {
+ return content;
+ }
+ return null;
+ }
+
+ @Override
+ abstract public String getId();
+
+ @Override
+ public String getName() {
+ return LaunchMessages.CArgumentsTab_Arguments;
+ }
+
+ @Override
+ public void setLaunchConfigurationDialog(ILaunchConfigurationDialog dialog) {
+ super.setLaunchConfigurationDialog(dialog);
+ fWorkingDirectoryBlock.setLaunchConfigurationDialog(dialog);
+ }
+
+ @Override
+ public String getErrorMessage() {
+ String m = super.getErrorMessage();
+ if (m == null) {
+ return fWorkingDirectoryBlock.getErrorMessage();
+ }
+ return m;
+ }
+
+ @Override
+ public String getMessage() {
+ String m = super.getMessage();
+ if (m == null) {
+ return fWorkingDirectoryBlock.getMessage();
+ }
+ return m;
+ }
+
+ @Override
+ public Image getImage() {
+ return LaunchImages.get(LaunchImages.IMG_VIEW_ARGUMENTS_TAB);
+ }
+
+ @Override
+ protected void updateLaunchConfigurationDialog() {
+ super.updateLaunchConfigurationDialog();
+ }
+}
diff --git a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CArgumentsTab.java b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CArgumentsTab.java
index fa27741024..14f19c582b 100644
--- a/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CArgumentsTab.java
+++ b/launch/org.eclipse.cdt.launch/src/org/eclipse/cdt/launch/ui/CArgumentsTab.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2016 QNX Software Systems and others.
+ * Copyright (c) 2005, 2019 QNX Software Systems and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
@@ -14,32 +14,6 @@
*******************************************************************************/
package org.eclipse.cdt.launch.ui;
-import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants;
-import org.eclipse.cdt.launch.internal.ui.LaunchImages;
-import org.eclipse.cdt.launch.internal.ui.LaunchMessages;
-import org.eclipse.cdt.launch.internal.ui.LaunchUIPlugin;
-import org.eclipse.cdt.launch.internal.ui.WorkingDirectoryBlock;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.ILaunchConfiguration;
-import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
-import org.eclipse.debug.ui.ILaunchConfigurationDialog;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.accessibility.AccessibleAdapter;
-import org.eclipse.swt.accessibility.AccessibleEvent;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.graphics.Font;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
/**
* A launch configuration tab that displays and edits program arguments,
* and working directory launch configuration attributes.
@@ -48,7 +22,7 @@ import org.eclipse.swt.widgets.Text;
* </p>
* @noextend This class is not intended to be subclassed by clients.
*/
-public class CArgumentsTab extends CLaunchConfigurationTab {
+public class CArgumentsTab extends CAbstractArgumentsTab {
/**
* Tab identifier used for ordering of tabs added using the
* <code>org.eclipse.debug.ui.launchConfigurationTabs</code>
@@ -58,179 +32,8 @@ public class CArgumentsTab extends CLaunchConfigurationTab {
*/
public static final String TAB_ID = "org.eclipse.cdt.cdi.launch.argumentsTab"; //$NON-NLS-1$
- // Program arguments UI widgets
- protected Label fPrgmArgumentsLabel;
- protected Text fPrgmArgumentsText;
- protected Button fArgumentVariablesButton;
-
- // Working directory
- protected WorkingDirectoryBlock fWorkingDirectoryBlock = new WorkingDirectoryBlock();
-
- @Override
- public void createControl(Composite parent) {
- Font font = parent.getFont();
- Composite comp = new Composite(parent, SWT.NONE);
- GridLayout layout = new GridLayout(1, true);
- comp.setLayout(layout);
- comp.setFont(font);
-
- GridData gd = new GridData(GridData.FILL_BOTH);
- comp.setLayoutData(gd);
- setControl(comp);
-
- LaunchUIPlugin.getDefault().getWorkbench().getHelpSystem().setHelp(getControl(),
- ICDTLaunchHelpContextIds.LAUNCH_CONFIGURATION_DIALOG_ARGUMNETS_TAB);
-
- createArgumentComponent(comp, 1);
-
- fWorkingDirectoryBlock.createControl(comp);
- }
-
- protected void createArgumentComponent(Composite comp, int horizontalSpan) {
- Font font = comp.getFont();
- Group group = new Group(comp, SWT.NONE);
- group.setFont(font);
- group.setLayout(new GridLayout());
- GridData gd = new GridData(GridData.FILL_BOTH);
- gd.horizontalSpan = horizontalSpan;
- group.setLayoutData(gd);
-
- group.setText(LaunchMessages.CArgumentsTab_C_Program_Arguments);
- fPrgmArgumentsText = new Text(group, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
- fPrgmArgumentsText.getAccessible().addAccessibleListener(new AccessibleAdapter() {
- @Override
- public void getName(AccessibleEvent e) {
- e.result = LaunchMessages.CArgumentsTab_C_Program_Arguments;
- }
- });
- gd = new GridData(GridData.FILL_BOTH);
- gd.heightHint = 40;
- gd.widthHint = 100;
- fPrgmArgumentsText.setLayoutData(gd);
- fPrgmArgumentsText.setFont(font);
- fPrgmArgumentsText.addModifyListener(new ModifyListener() {
- @Override
- public void modifyText(ModifyEvent evt) {
- updateLaunchConfigurationDialog();
- }
- });
- fArgumentVariablesButton = createVariablesButton(group, LaunchMessages.CArgumentsTab_Variables,
- fPrgmArgumentsText);
- gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
- fArgumentVariablesButton.setLayoutData(gd);
- addControlAccessibleListener(fArgumentVariablesButton, fArgumentVariablesButton.getText()); // need to strip the mnemonic from buttons
- }
-
- public void addControlAccessibleListener(Control control, String controlName) {
- // Strip mnemonic (&)
- String[] strs = controlName.split("&"); //$NON-NLS-1$
- StringBuilder stripped = new StringBuilder();
- for (int i = 0; i < strs.length; i++) {
- stripped.append(strs[i]);
- }
- control.getAccessible().addAccessibleListener(new ControlAccessibleListener(stripped.toString()));
- }
-
- private class ControlAccessibleListener extends AccessibleAdapter {
- private String controlName;
-
- ControlAccessibleListener(String name) {
- controlName = name;
- }
-
- @Override
- public void getName(AccessibleEvent e) {
- e.result = controlName;
- }
- }
-
- @Override
- public boolean isValid(ILaunchConfiguration config) {
- return fWorkingDirectoryBlock.isValid(config);
- }
-
- @Override
- public void setDefaults(ILaunchConfigurationWorkingCopy config) {
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, (String) null);
- config.setAttribute(ICDTLaunchConfigurationConstants.ATTR_WORKING_DIRECTORY, (String) null);
- }
-
- @Override
- public void initializeFrom(ILaunchConfiguration configuration) {
- try {
- fPrgmArgumentsText
- .setText(configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS, "")); //$NON-NLS-1$
- fWorkingDirectoryBlock.initializeFrom(configuration);
- } catch (CoreException e) {
- setErrorMessage(NLS.bind(LaunchMessages.Launch_common_Exception_occurred_reading_configuration_EXCEPTION,
- e.getStatus().getMessage()));
- LaunchUIPlugin.log(e);
- }
- }
-
- @Override
- public void performApply(ILaunchConfigurationWorkingCopy configuration) {
- configuration.setAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
- getAttributeValueFrom(fPrgmArgumentsText));
- fWorkingDirectoryBlock.performApply(configuration);
- }
-
- /**
- * Returns the string in the text widget, or <code>null</code> if empty.
- *
- * @return text or <code>null</code>
- */
- protected String getAttributeValueFrom(Text text) {
- String content = text.getText().trim();
- // Bug #131513 - eliminate Windows \r line delimiter
- content = content.replaceAll("\r\n", "\n"); //$NON-NLS-1$//$NON-NLS-2$
- if (!content.isEmpty()) {
- return content;
- }
- return null;
- }
-
@Override
public String getId() {
return TAB_ID;
}
-
- @Override
- public String getName() {
- return LaunchMessages.CArgumentsTab_Arguments;
- }
-
- @Override
- public void setLaunchConfigurationDialog(ILaunchConfigurationDialog dialog) {
- super.setLaunchConfigurationDialog(dialog);
- fWorkingDirectoryBlock.setLaunchConfigurationDialog(dialog);
- }
-
- @Override
- public String getErrorMessage() {
- String m = super.getErrorMessage();
- if (m == null) {
- return fWorkingDirectoryBlock.getErrorMessage();
- }
- return m;
- }
-
- @Override
- public String getMessage() {
- String m = super.getMessage();
- if (m == null) {
- return fWorkingDirectoryBlock.getMessage();
- }
- return m;
- }
-
- @Override
- public Image getImage() {
- return LaunchImages.get(LaunchImages.IMG_VIEW_ARGUMENTS_TAB);
- }
-
- @Override
- protected void updateLaunchConfigurationDialog() {
- super.updateLaunchConfigurationDialog();
- }
}
diff --git a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF
index 72245647de..589ac4a371 100644
--- a/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF
+++ b/llvm/org.eclipse.cdt.llvm.dsf.lldb.ui/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
Bundle-Vendor: %providerName
Bundle-SymbolicName: org.eclipse.cdt.llvm.dsf.lldb.ui;singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.100.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-Localization: plugin
Require-Bundle: org.eclipse.cdt.debug.ui,
@@ -16,7 +16,8 @@ Require-Bundle: org.eclipse.cdt.debug.ui,
org.eclipse.jface,
org.eclipse.cdt.llvm.dsf.lldb.core,
org.eclipse.cdt.dsf.ui,
- org.eclipse.cdt.debug.core
+ org.eclipse.cdt.debug.core,
+ org.eclipse.cdt.launch
Bundle-Activator: org.eclipse.cdt.llvm.dsf.lldb.ui.internal.LLDBUIPlugin
Bundle-ActivationPolicy: lazy
Export-Package: org.eclipse.cdt.llvm.dsf.lldb.ui.internal;x-internal:=true

Back to the top