1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

Updated UI components for launch config.

This commit is contained in:
Doug Schaefer 2007-04-17 01:53:01 +00:00
parent e6dbc5b189
commit 526c6cd618
3 changed files with 165 additions and 62 deletions

View file

@ -19,6 +19,23 @@ public class GDBJtagConstants {
public static final String DEBUGGER_ID = "org.eclipse.cdt.debug.mi.core.CDebuggerNew"; //$NON-NLS-1$ public static final String DEBUGGER_ID = "org.eclipse.cdt.debug.mi.core.CDebuggerNew"; //$NON-NLS-1$
public static final String LAUNCH_ATTR_INIT_COMMANDS = Activator.PLUGIN_ID + ".initCommands"; //$NON-NLS-1$ // Debugger
public static final String LAUNCH_ATTR_RUN_COMMANDS = Activator.PLUGIN_ID + ".runCommands"; //$NON-NLS-1$ public static final String ATTR_USE_REMOTE_TARGET = Activator.PLUGIN_ID + ".useRemoteTarget"; //$NON-NLS-1$
public static final String ATTR_IP_ADDRESS = Activator.PLUGIN_ID + ".ipAddress"; //$NON-NLS-1$
public static final String ATTR_PORT_NUMBER = Activator.PLUGIN_ID + ".portNumber"; //$NON-NLS-1$
public static final boolean DEFAULT_USE_REMOTE_TARGET = true;
public static final String DEFAULT_IP_ADDRESS = "localhost"; //$NON-NLS-1$
public static final int DEFAULT_PORT_NUMBER = 10000;
// Startup
public static final String ATTR_INIT_COMMANDS = Activator.PLUGIN_ID + ".initCommands"; //$NON-NLS-1$
public static final String ATTR_LOAD_IMAGE = Activator.PLUGIN_ID + ".loadImage"; //$NON-NLS-1$
public static final String ATTR_IMAGE_FILE_NAME = Activator.PLUGIN_ID + ".imageFileName"; //$NON-NLS-1$
public static final String ATTR_USE_DEFAULT_RUN = Activator.PLUGIN_ID + ".useDefaultRun"; //$NON-NLS-1$
public static final String ATTR_RUN_COMMANDS = Activator.PLUGIN_ID + ".runCommands"; //$NON-NLS-1$
public static final boolean DEFAULT_LOAD_IMAGE = false;
public static final boolean DEFAULT_USE_DEFAULT_RUN = true;
} }

View file

@ -12,9 +12,11 @@
package org.eclipse.cdt.debug.gdbjtag.ui; package org.eclipse.cdt.debug.gdbjtag.ui;
import org.eclipse.cdt.debug.gdbjtag.core.GDBJtagConstants; import org.eclipse.cdt.debug.gdbjtag.core.GDBJtagConstants;
import org.eclipse.cdt.debug.mi.core.IMILaunchConfigurationConstants;
import org.eclipse.cdt.debug.mi.core.MIPlugin; import org.eclipse.cdt.debug.mi.core.MIPlugin;
import org.eclipse.cdt.debug.mi.core.command.factories.CommandFactoryDescriptor; import org.eclipse.cdt.debug.mi.core.command.factories.CommandFactoryDescriptor;
import org.eclipse.cdt.debug.mi.core.command.factories.CommandFactoryManager; import org.eclipse.cdt.debug.mi.core.command.factories.CommandFactoryManager;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab; import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
@ -22,6 +24,8 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.VerifyEvent;
import org.eclipse.swt.events.VerifyListener;
import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.GridLayout;
@ -39,10 +43,15 @@ import org.eclipse.swt.widgets.Text;
public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab { public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab {
private CommandFactoryDescriptor[] cfDescs; private CommandFactoryDescriptor[] cfDescs;
private int cfSelected = -1;
private Text gdbCommand;
private Text gdbinitFile;
private Combo commandFactory;
private Combo miProtocol;
private Button verboseMode;
private Button useRemote; private Button useRemote;
private Composite remoteConnection; private Composite remoteTarget;
private Text ipAddress; private Text ipAddress;
private Text portNumber; private Text portNumber;
@ -96,10 +105,9 @@ public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab {
gd.horizontalSpan = 3; gd.horizontalSpan = 3;
label.setLayoutData(gd); label.setLayoutData(gd);
Text text = new Text(comp, SWT.SINGLE | SWT.BORDER); gdbCommand = new Text(comp, SWT.SINGLE | SWT.BORDER);
text.setText("gdb");
gd = new GridData(GridData.FILL_HORIZONTAL); gd = new GridData(GridData.FILL_HORIZONTAL);
text.setLayoutData(gd); gdbCommand.setLayoutData(gd);
Button button = new Button(comp, SWT.NONE); Button button = new Button(comp, SWT.NONE);
button.setText("Browse..."); button.setText("Browse...");
@ -122,9 +130,9 @@ public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab {
gd.horizontalSpan = 3; gd.horizontalSpan = 3;
label.setLayoutData(gd); label.setLayoutData(gd);
Text text = new Text(comp, SWT.SINGLE | SWT.BORDER); gdbinitFile = new Text(comp, SWT.SINGLE | SWT.BORDER);
gd = new GridData(GridData.FILL_HORIZONTAL); gd = new GridData(GridData.FILL_HORIZONTAL);
text.setLayoutData(gd); gdbinitFile.setLayoutData(gd);
Button button = new Button(comp, SWT.NONE); Button button = new Button(comp, SWT.NONE);
button.setText("Browse..."); button.setText("Browse...");
@ -139,21 +147,14 @@ public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab {
Label label = new Label(comp, SWT.NONE); Label label = new Label(comp, SWT.NONE);
label.setText("Command Set:"); label.setText("Command Set:");
Combo combo = new Combo(comp, SWT.READ_ONLY | SWT.DROP_DOWN); commandFactory = new Combo(comp, SWT.READ_ONLY | SWT.DROP_DOWN);
// Get the command sets // Get the command sets
CommandFactoryManager cfManager = MIPlugin.getDefault().getCommandFactoryManager(); CommandFactoryManager cfManager = MIPlugin.getDefault().getCommandFactoryManager();
CommandFactoryDescriptor defDesc = cfManager.getDefaultDescriptor(GDBJtagConstants.DEBUGGER_ID); cfDescs = cfManager.getDescriptors(GDBJtagConstants.DEBUGGER_ID);
cfDescs = cfManager.getDescriptors(
GDBJtagConstants.DEBUGGER_ID);
for (int i = 0; i < cfDescs.length; ++i) { for (int i = 0; i < cfDescs.length; ++i) {
combo.add(cfDescs[i].getName()); commandFactory.add(cfDescs[i].getName());
if (defDesc == cfDescs[i])
cfSelected = i;
} }
if (cfSelected > -1)
combo.select(cfSelected);
} }
public void createProtocolControl(Composite parent) { public void createProtocolControl(Composite parent) {
@ -163,24 +164,27 @@ public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab {
Label label = new Label(comp, SWT.NONE); Label label = new Label(comp, SWT.NONE);
label.setText("Protocol Version:"); label.setText("Protocol Version:");
Combo combo = new Combo(comp, SWT.READ_ONLY | SWT.DROP_DOWN); miProtocol = new Combo(comp, SWT.READ_ONLY | SWT.DROP_DOWN);
if (cfSelected > -1) { }
String[] vers = cfDescs[cfSelected].getMIVersions();
for (int i = 0; i < vers.length; ++i) { private void commandSetChanged() {
combo.add(vers[i]); int currsel = miProtocol.getSelectionIndex();
String currProt = miProtocol.getItem(currsel);
miProtocol.removeAll();
int cfsel = commandFactory.getSelectionIndex();
if (cfsel >= 0) {
String[] protocols = cfDescs[cfsel].getMIVersions();
for (int i = 0; i < protocols.length; ++i) {
miProtocol.add(protocols[i]);
if (protocols[i].equals(currProt))
miProtocol.select(i);
} }
} }
combo.select(0);
} }
public void createVerboseModeControl(Composite parent) { public void createVerboseModeControl(Composite parent) {
Composite comp = new Composite(parent, SWT.NONE); verboseMode = new Button(parent, SWT.CHECK);
GridLayout layout = new GridLayout(2, false); verboseMode.setText("Verbose console mode");
comp.setLayout(layout);
Button button = new Button(comp, SWT.CHECK);
Label label = new Label(comp, SWT.NONE);
label.setText("Verbose console mode");
} }
private void createRemoteControl(Composite parent) { private void createRemoteControl(Composite parent) {
@ -189,28 +193,39 @@ public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab {
group.setLayout(layout); group.setLayout(layout);
GridData gd = new GridData(GridData.FILL_HORIZONTAL); GridData gd = new GridData(GridData.FILL_HORIZONTAL);
group.setLayoutData(gd); group.setLayoutData(gd);
group.setText("Remote Connection"); group.setText("Remote Target");
useRemote = new Button(group, SWT.CHECK); useRemote = new Button(group, SWT.CHECK);
useRemote.setText("Use remote connection"); useRemote.setText("Use remote target");
useRemote.addSelectionListener(new SelectionAdapter() { useRemote.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
useRemoteChanged(); useRemoteChanged();
} }
}); });
remoteConnection = new Composite(group, SWT.NONE); remoteTarget = new Composite(group, SWT.NONE);
layout = new GridLayout(); layout = new GridLayout();
layout.numColumns = 2; layout.numColumns = 2;
remoteConnection.setLayout(layout); remoteTarget.setLayout(layout);
Label label = new Label(remoteConnection, SWT.NONE); Label label = new Label(remoteTarget, SWT.NONE);
label.setText("Host name or IP address:"); label.setText("Host name or IP address:");
ipAddress = new Text(remoteConnection, SWT.BORDER); ipAddress = new Text(remoteTarget, SWT.BORDER);
gd = new GridData();
gd.widthHint = 100;
ipAddress.setLayoutData(gd);
label = new Label(remoteConnection, SWT.NONE); label = new Label(remoteTarget, SWT.NONE);
label.setText("Port number:"); label.setText("Port number:");
portNumber = new Text(remoteConnection, SWT.BORDER); portNumber = new Text(remoteTarget, SWT.BORDER);
portNumber.addVerifyListener(new VerifyListener() {
public void verifyText(VerifyEvent e) {
e.doit = Character.isDigit(e.character) || Character.isISOControl(e.character);
}
});
gd = new GridData();
gd.widthHint = 100;
portNumber.setLayoutData(gd);
} }
private void useRemoteChanged() { private void useRemoteChanged() {
@ -220,16 +235,58 @@ public class GDBJtagDebuggerTab extends AbstractLaunchConfigurationTab {
} }
public void initializeFrom(ILaunchConfiguration configuration) { public void initializeFrom(ILaunchConfiguration configuration) {
useRemote.setSelection(true); try {
useRemoteChanged(); gdbCommand.setText(configuration.getAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, IMILaunchConfigurationConstants.DEBUGGER_DEBUG_NAME_DEFAULT));
gdbinitFile.setText(configuration.getAttribute(IMILaunchConfigurationConstants.ATTR_GDB_INIT, IMILaunchConfigurationConstants.DEBUGGER_GDB_INIT_DEFAULT));
CommandFactoryManager cfManager = MIPlugin.getDefault().getCommandFactoryManager();
CommandFactoryDescriptor defDesc = cfManager.getDefaultDescriptor(GDBJtagConstants.DEBUGGER_ID);
String cfname = configuration.getAttribute(IMILaunchConfigurationConstants.ATTR_DEBUGGER_COMMAND_FACTORY, defDesc.getName());
int cfid = 0;
for (int i = 0; i < cfDescs.length; ++i)
if (cfDescs[i].getName().equals(cfname)) {
cfid = i;
break;
}
commandFactory.select(cfid);
String protname = configuration.getAttribute(IMILaunchConfigurationConstants.ATTR_DEBUGGER_PROTOCOL, defDesc.getMIVersions()[0]);
miProtocol.removeAll();
String[] protocols = cfDescs[cfid].getMIVersions();
for (int i = 0; i < protocols.length; ++i) {
miProtocol.add(protocols[i]);
if (protocols[i].equals(protname))
miProtocol.select(i);
}
verboseMode.setSelection(configuration.getAttribute(IMILaunchConfigurationConstants.ATTR_DEBUGGER_VERBOSE_MODE, IMILaunchConfigurationConstants.DEBUGGER_VERBOSE_MODE_DEFAULT));
useRemote.setSelection(configuration.getAttribute(GDBJtagConstants.ATTR_USE_REMOTE_TARGET, GDBJtagConstants.DEFAULT_USE_REMOTE_TARGET));
ipAddress.setText(configuration.getAttribute(GDBJtagConstants.ATTR_IP_ADDRESS, GDBJtagConstants.DEFAULT_IP_ADDRESS));
portNumber.setText(String.valueOf(configuration.getAttribute(GDBJtagConstants.ATTR_PORT_NUMBER, GDBJtagConstants.DEFAULT_PORT_NUMBER)));
useRemoteChanged();
} catch (CoreException e) {
Activator.getDefault().getLog().log(e.getStatus());
}
} }
public void performApply(ILaunchConfigurationWorkingCopy configuration) { public void performApply(ILaunchConfigurationWorkingCopy configuration) {
// TODO Auto-generated method stub
} }
public void setDefaults(ILaunchConfigurationWorkingCopy configuration) { public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
// TODO Auto-generated method stub configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUG_NAME, IMILaunchConfigurationConstants.DEBUGGER_DEBUG_NAME_DEFAULT);
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_GDB_INIT, IMILaunchConfigurationConstants.DEBUGGER_GDB_INIT_DEFAULT);
CommandFactoryManager cfManager = MIPlugin.getDefault().getCommandFactoryManager();
CommandFactoryDescriptor defDesc = cfManager.getDefaultDescriptor(GDBJtagConstants.DEBUGGER_ID);
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUGGER_COMMAND_FACTORY, defDesc.getName());
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUGGER_PROTOCOL, defDesc.getMIVersions()[0]);
configuration.setAttribute(IMILaunchConfigurationConstants.ATTR_DEBUGGER_VERBOSE_MODE, IMILaunchConfigurationConstants.DEBUGGER_VERBOSE_MODE_DEFAULT);
configuration.setAttribute(GDBJtagConstants.ATTR_USE_REMOTE_TARGET, GDBJtagConstants.DEFAULT_USE_REMOTE_TARGET);
configuration.setAttribute(GDBJtagConstants.ATTR_IP_ADDRESS, GDBJtagConstants.DEFAULT_IP_ADDRESS);
configuration.setAttribute(GDBJtagConstants.ATTR_PORT_NUMBER, GDBJtagConstants.DEFAULT_PORT_NUMBER);
} }
} }

View file

@ -41,8 +41,11 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
Text initCommands; Text initCommands;
Button loadImage; Button loadImage;
Text imageFileName; Text imageFileName;
Button imageFileBrowse;
Button imageFileWorkspace;
Button defaultRun; Button defaultRun;
Text runCommands; Text runCommands;
Button runVarsButton;
public String getName() { public String getName() {
return "Startup"; return "Startup";
@ -94,7 +97,7 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
varsButton.setText("Variables..."); varsButton.setText("Variables...");
varsButton.addSelectionListener(new SelectionAdapter() { varsButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
handleVarsButtonSelected(initCommands); varsButtonSelected(initCommands);
} }
}); });
} }
@ -130,14 +133,18 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
gd = new GridData(GridData.FILL_HORIZONTAL); gd = new GridData(GridData.FILL_HORIZONTAL);
imageFileName.setLayoutData(gd); imageFileName.setLayoutData(gd);
Button button = new Button(group, SWT.NONE); imageFileBrowse = new Button(group, SWT.NONE);
button.setText("Browse..."); imageFileBrowse.setText("Browse...");
button = new Button(group, SWT.NONE);
button.setText("Workspace..."); imageFileWorkspace = new Button(group, SWT.NONE);
imageFileWorkspace.setText("Workspace...");
} }
private void loadImageChanged() { private void loadImageChanged() {
imageFileName.setEnabled(loadImage.getSelection()); boolean enabled = loadImage.getSelection();
imageFileName.setEnabled(enabled);
imageFileBrowse.setEnabled(enabled);
imageFileWorkspace.setEnabled(enabled);
} }
public void createRunGroup(Composite parent) { public void createRunGroup(Composite parent) {
@ -150,6 +157,11 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
defaultRun = new Button(group, SWT.CHECK); defaultRun = new Button(group, SWT.CHECK);
defaultRun.setText("Use default run command"); defaultRun.setText("Use default run command");
defaultRun.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
defaultRunChanged();
}
});
runCommands = new Text(group, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL); runCommands = new Text(group, SWT.MULTI | SWT.WRAP | SWT.BORDER | SWT.V_SCROLL);
gd = new GridData(GridData.FILL_BOTH); gd = new GridData(GridData.FILL_BOTH);
@ -161,18 +173,24 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
} }
}); });
Button varsButton = new Button(group, SWT.NONE); runVarsButton = new Button(group, SWT.NONE);
gd = new GridData(GridData.HORIZONTAL_ALIGN_END); gd = new GridData(GridData.HORIZONTAL_ALIGN_END);
varsButton.setLayoutData(gd); runVarsButton.setLayoutData(gd);
varsButton.setText("Variables..."); runVarsButton.setText("Variables...");
varsButton.addSelectionListener(new SelectionAdapter() { runVarsButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) { public void widgetSelected(SelectionEvent e) {
handleVarsButtonSelected(runCommands); varsButtonSelected(runCommands);
} }
}); });
} }
private void handleVarsButtonSelected(Text text) { private void defaultRunChanged() {
boolean enabled = !defaultRun.getSelection();
runCommands.setEnabled(enabled);
runVarsButton.setEnabled(enabled);
}
private void varsButtonSelected(Text text) {
StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(getShell()); StringVariableSelectionDialog dialog = new StringVariableSelectionDialog(getShell());
dialog.open(); dialog.open();
text.append(dialog.getVariableExpression()); text.append(dialog.getVariableExpression());
@ -180,21 +198,32 @@ public class GDBJtagStartupTab extends AbstractLaunchConfigurationTab {
public void initializeFrom(ILaunchConfiguration configuration) { public void initializeFrom(ILaunchConfiguration configuration) {
try { try {
initCommands.setText(configuration.getAttribute(GDBJtagConstants.LAUNCH_ATTR_INIT_COMMANDS, "")); //$NON-NLS-1$ initCommands.setText(configuration.getAttribute(GDBJtagConstants.ATTR_INIT_COMMANDS, "")); //$NON-NLS-1$
runCommands.setText(configuration.getAttribute(GDBJtagConstants.LAUNCH_ATTR_RUN_COMMANDS, "")); //$NON-NLS-1$) loadImage.setSelection(configuration.getAttribute(GDBJtagConstants.ATTR_LOAD_IMAGE, GDBJtagConstants.DEFAULT_LOAD_IMAGE));
loadImageChanged();
imageFileName.setText(configuration.getAttribute(GDBJtagConstants.ATTR_IMAGE_FILE_NAME, "")); //$NON-NLS-1$
defaultRun.setSelection(configuration.getAttribute(GDBJtagConstants.ATTR_USE_DEFAULT_RUN, GDBJtagConstants.DEFAULT_USE_DEFAULT_RUN));
defaultRunChanged();
runCommands.setText(configuration.getAttribute(GDBJtagConstants.ATTR_RUN_COMMANDS, "")); //$NON-NLS-1$)
} catch (CoreException e) { } catch (CoreException e) {
Activator.getDefault().getLog().log(e.getStatus()); Activator.getDefault().getLog().log(e.getStatus());
} }
} }
public void performApply(ILaunchConfigurationWorkingCopy configuration) { public void performApply(ILaunchConfigurationWorkingCopy configuration) {
configuration.setAttribute(GDBJtagConstants.LAUNCH_ATTR_INIT_COMMANDS, initCommands.getText()); configuration.setAttribute(GDBJtagConstants.ATTR_INIT_COMMANDS, initCommands.getText());
configuration.setAttribute(GDBJtagConstants.LAUNCH_ATTR_RUN_COMMANDS, runCommands.getText()); configuration.setAttribute(GDBJtagConstants.ATTR_LOAD_IMAGE, loadImage.getSelection());
configuration.setAttribute(GDBJtagConstants.ATTR_IMAGE_FILE_NAME, imageFileName.getText());
configuration.setAttribute(GDBJtagConstants.ATTR_USE_DEFAULT_RUN, defaultRun.getSelection());
configuration.setAttribute(GDBJtagConstants.ATTR_RUN_COMMANDS, runCommands.getText());
} }
public void setDefaults(ILaunchConfigurationWorkingCopy configuration) { public void setDefaults(ILaunchConfigurationWorkingCopy configuration) {
configuration.setAttribute(GDBJtagConstants.LAUNCH_ATTR_INIT_COMMANDS, ""); //$NON-NLS-1$ configuration.setAttribute(GDBJtagConstants.ATTR_INIT_COMMANDS, ""); //$NON-NLS-1$
configuration.setAttribute(GDBJtagConstants.LAUNCH_ATTR_RUN_COMMANDS, ""); //$NON-NLS-1$ configuration.setAttribute(GDBJtagConstants.ATTR_LOAD_IMAGE, GDBJtagConstants.DEFAULT_LOAD_IMAGE);
configuration.setAttribute(GDBJtagConstants.ATTR_IMAGE_FILE_NAME, ""); //$NON-NLS-1$
configuration.setAttribute(GDBJtagConstants.ATTR_USE_DEFAULT_RUN, true);
configuration.setAttribute(GDBJtagConstants.ATTR_RUN_COMMANDS, ""); //$NON-NLS-1$
} }
} }