| /******************************************************************************* |
| * Copyright (c) 2006, 2010, 2015 PalmSource, Inc. and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Ewa Matejska (PalmSource) |
| * |
| * Referenced GDBDebuggerPage code to write this. |
| * Anna Dushistova (Mentor Graphics) - moved to org.eclipse.cdt.launch.remote.tabs |
| * Red Hat Inc. - modified to work with CDT Container Launcher |
| *******************************************************************************/ |
| |
| package org.eclipse.cdt.internal.docker.launcher; |
| |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.debug.core.ILaunchConfiguration; |
| import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.ModifyEvent; |
| import org.eclipse.swt.events.ModifyListener; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Label; |
| import org.eclipse.swt.widgets.TabFolder; |
| import org.eclipse.swt.widgets.TabItem; |
| import org.eclipse.swt.widgets.Text; |
| |
| /** |
| * The dynamic debugger tab for Docker Container launches using gdb server. The |
| * gdbserver settings are used to start a gdbserver session in the Docker |
| * Container and then to connect to it from the host. |
| */ |
| public class RemoteDebuggerPage extends GdbDebuggerPage { |
| |
| protected Text fGDBServerCommandText; |
| |
| protected Text fGDBServerPortNumberText; |
| |
| @Override |
| public String getName() { |
| return Messages.Remote_GDB_Debugger_Options; |
| } |
| |
| @Override |
| public void setDefaults(ILaunchConfigurationWorkingCopy configuration) { |
| super.setDefaults(configuration); |
| configuration.setAttribute(ILaunchConstants.ATTR_GDBSERVER_COMMAND, |
| ILaunchConstants.ATTR_GDBSERVER_COMMAND_DEFAULT); |
| configuration.setAttribute(ILaunchConstants.ATTR_GDBSERVER_PORT, |
| ILaunchConstants.ATTR_GDBSERVER_PORT_DEFAULT); |
| } |
| |
| @Override |
| public void initializeFrom(ILaunchConfiguration configuration) { |
| super.initializeFrom(configuration); |
| String gdbserverCommand = null; |
| String gdbserverPortNumber = null; |
| try { |
| gdbserverCommand = configuration.getAttribute( |
| ILaunchConstants.ATTR_GDBSERVER_COMMAND, |
| ILaunchConstants.ATTR_GDBSERVER_COMMAND_DEFAULT); |
| } catch (CoreException e) { |
| } |
| try { |
| gdbserverPortNumber = configuration.getAttribute( |
| ILaunchConstants.ATTR_GDBSERVER_PORT, |
| ILaunchConstants.ATTR_GDBSERVER_PORT_DEFAULT); |
| } catch (CoreException e) { |
| } |
| fGDBServerCommandText.setText(gdbserverCommand); |
| fGDBServerPortNumberText.setText(gdbserverPortNumber); |
| } |
| |
| @Override |
| public void performApply(ILaunchConfigurationWorkingCopy configuration) { |
| super.performApply(configuration); |
| String str = fGDBServerCommandText.getText(); |
| str.trim(); |
| configuration |
| .setAttribute(ILaunchConstants.ATTR_GDBSERVER_COMMAND, str); |
| str = fGDBServerPortNumberText.getText(); |
| str.trim(); |
| configuration.setAttribute(ILaunchConstants.ATTR_GDBSERVER_PORT, str); |
| } |
| |
| protected void createGdbserverSettingsTab(TabFolder tabFolder) { |
| TabItem tabItem = new TabItem(tabFolder, SWT.NONE); |
| tabItem.setText(Messages.Gdbserver_Settings_Tab_Name); |
| |
| Composite comp = new Composite(tabFolder, SWT.NULL); |
| comp.setLayout(new GridLayout(1, true)); |
| comp.setLayoutData(new GridData(GridData.FILL_BOTH)); |
| ((GridLayout) comp.getLayout()).makeColumnsEqualWidth = false; |
| comp.setFont(tabFolder.getFont()); |
| tabItem.setControl(comp); |
| |
| Composite subComp = new Composite(comp, SWT.NULL); |
| subComp.setLayout(new GridLayout(2, true)); |
| subComp.setLayoutData(new GridData(GridData.FILL_BOTH)); |
| ((GridLayout) subComp.getLayout()).makeColumnsEqualWidth = false; |
| subComp.setFont(tabFolder.getFont()); |
| |
| Label label = new Label(subComp, SWT.LEFT); |
| label.setText(Messages.Gdbserver_name_textfield_label); |
| GridData gd = new GridData(); |
| label.setLayoutData(gd); |
| |
| fGDBServerCommandText = new Text(subComp, SWT.SINGLE | SWT.BORDER); |
| GridData data = new GridData(); |
| fGDBServerCommandText.setLayoutData(data); |
| fGDBServerCommandText.addModifyListener(new ModifyListener() { |
| |
| public void modifyText(ModifyEvent evt) { |
| updateLaunchConfigurationDialog(); |
| } |
| }); |
| label = new Label(subComp, SWT.LEFT); |
| label.setText(Messages.Port_number_textfield_label); |
| gd = new GridData(); |
| label.setLayoutData(gd); |
| |
| fGDBServerPortNumberText = new Text(subComp, SWT.SINGLE | SWT.BORDER); |
| data = new GridData(); |
| fGDBServerPortNumberText.setLayoutData(data); |
| fGDBServerPortNumberText.addModifyListener(new ModifyListener() { |
| |
| public void modifyText(ModifyEvent evt) { |
| updateLaunchConfigurationDialog(); |
| } |
| }); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see |
| * org.eclipse.cdt.debug.mi.internal.ui.GDBDebuggerPage#createTabs(org.eclipse |
| * .swt.widgets.TabFolder) |
| */ |
| @Override |
| public void createTabs(TabFolder tabFolder) { |
| super.createTabs(tabFolder); |
| createGdbserverSettingsTab(tabFolder); |
| } |
| } |