plugin: delete duplicated code from CDT
[zylincdt.git] / com.zylin.embeddedcdt / src / com / zylin / embeddedcdt / gui / EmbeddedDebuggerTab.java
blobe8e9e44b40a1b3c2210f932cf427aca34117bb4d
1 package com.zylin.embeddedcdt.gui;
3 import org.eclipse.cdt.debug.core.ICDebugConfiguration;
4 import org.eclipse.cdt.launch.internal.ui.LaunchMessages;
5 import org.eclipse.cdt.launch.ui.CDebuggerTab;
6 import org.eclipse.swt.SWT;
7 import org.eclipse.swt.events.ModifyEvent;
8 import org.eclipse.swt.events.ModifyListener;
9 import org.eclipse.swt.layout.GridData;
10 import org.eclipse.swt.layout.GridLayout;
11 import org.eclipse.swt.widgets.Combo;
12 import org.eclipse.swt.widgets.Composite;
13 import org.eclipse.swt.widgets.Label;
16 public class EmbeddedDebuggerTab extends CDebuggerTab {
18 public EmbeddedDebuggerTab(boolean attachMode) {
19 super(attachMode);
21 private Combo fDCombo;
22 private boolean fPageUpdated;
24 /* (non-Javadoc)
25 * @see org.eclipse.cdt.launch.internal.ui.AbstractCDebuggerTab#createDebuggerCombo(org.eclipse.swt.widgets.Composite, int)
27 protected void createDebuggerCombo(Composite parent, int colspan) {
28 Composite comboComp = new Composite(parent, SWT.NONE);
29 GridLayout layout = new GridLayout(2, false);
30 comboComp.setLayout(layout);
31 GridData gd = new GridData(GridData.FILL_HORIZONTAL);
32 gd.horizontalSpan = colspan;
33 comboComp.setLayoutData(gd);
34 Label dlabel = new Label(comboComp, SWT.NONE);
35 dlabel.setText(LaunchMessages.getString("Launch.common.DebuggerColon")); //$NON-NLS-1$
36 fDCombo = new Combo(comboComp, SWT.READ_ONLY | SWT.DROP_DOWN);
37 fDCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
38 fDCombo.addModifyListener(new ModifyListener() {
40 public void modifyText(ModifyEvent e) {
41 if (!isInitializing()) {
42 setInitializeDefault(true);
43 updateComboFromSelection();
46 });
47 fDCombo.setEnabled(false); // ghost it. It has only one approperiate setting.
49 /* (non-Javadoc)
50 * @see org.eclipse.cdt.launch.internal.ui.AbstractCDebuggerTab#loadDebuggerCombo(org.eclipse.cdt.debug.core.ICDebugConfiguration[], java.lang.String)
52 protected void loadDebuggerCombo(ICDebugConfiguration[] debugConfigs,
53 String current) {
54 fDCombo.removeAll();
55 current="com.zylin.embeddedcdt.EmbeddedCDebugger";
56 int select = -1;
57 for (int i = 0; i < debugConfigs.length; i++) {
58 fDCombo.add(debugConfigs[i].getName());
59 fDCombo.setData(Integer.toString(i), debugConfigs[i]);
60 if (debugConfigs[i].getID().equalsIgnoreCase(current)) {
61 select = i;
65 fPageUpdated = false;
66 if (select != -1) {
67 fDCombo.select(select);
69 //The behaviour is undefined for if the callbacks should be triggered
70 // for this,
71 //so force page update if needed.
72 if (!fPageUpdated) {
73 updateComboFromSelection();
75 fPageUpdated = false;
76 getControl().getParent().layout(true);
78 /**
79 * Return the class that implements <code>ICDebuggerPage</code>
80 * that is registered against the debugger id of the currently selected
81 * debugger.
83 protected ICDebugConfiguration getConfigForCurrentDebugger() {
84 int selectedIndex = fDCombo.getSelectionIndex();
85 return (ICDebugConfiguration)fDCombo.getData(Integer.toString(selectedIndex));
87 public String getDebugger()
89 return ((EmbeddedGDBDebuggerPage)getDynamicTab()).getDebugger();