debuggercdi/com.nokia.cdt.debug.launch/src/com/nokia/cdt/internal/debug/launch/ui/ExceptionsTab.java
stop mode PlatSim using remote connections; don't overwrite user-chosen PlatSim connection names
/*
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
package com.nokia.cdt.internal.debug.launch.ui;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.debug.ui.AbstractLaunchConfigurationTab;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
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.Group;
import org.eclipse.ui.PlatformUI;
import com.nokia.cdt.debug.cw.symbian.SettingsData;
import com.nokia.cdt.internal.debug.launch.LaunchPlugin;
public class ExceptionsTab extends AbstractLaunchConfigurationTab {
private Button[] m_buttons = new Button[24];
private String[] m_buttonPropertyNames = new String[24];
private Button checkAll;
private Button clearAll;
final static String s_cwPanelName = Messages.getString("ExceptionsTab.0"); //$NON-NLS-1$
private int m_buttAddIndex = 0;
private final String[] m_exceptionNames = {
"0x40010005 Control-C", //$NON-NLS-1$
"0xC000008F Float Inexact", //$NON-NLS-1$
"0x40010008 Control-Break", //$NON-NLS-1$
"0xC0000090 Float Invalid Op", //$NON-NLS-1$
"0x80000002 Data Misaligned", //$NON-NLS-1$
"0xC0000092 Float Stack", //$NON-NLS-1$
"0xC0000005 Access Violation", //$NON-NLS-1$
"0xC0000091 Float Overflow", //$NON-NLS-1$
"0xC0000006 In Page Error", //$NON-NLS-1$
"0xC0000093 Float Underflow", //$NON-NLS-1$
"0xC0000017 No Memory", //$NON-NLS-1$
"0xC0000094 Int Div by Zero", //$NON-NLS-1$
"0xC000001D Illegal Instruction", //$NON-NLS-1$
"0xC0000095 Int Overflow", //$NON-NLS-1$
"0xC0000025 Noncontinuable", //$NON-NLS-1$
"0xC0000096 Privileged Instr", //$NON-NLS-1$
"0xC0000026 Invalid Disposition", //$NON-NLS-1$
"0xC00000FD Stack Overflow", //$NON-NLS-1$
"0xC000008C Array Bounds", //$NON-NLS-1$
"0xC0000135 DLL Not Found", //$NON-NLS-1$
"0x0000008D Float Denormal", //$NON-NLS-1$
"0xC0000142 DLL Init Failed", //$NON-NLS-1$
"0xC000008E Float Div by Zero", //$NON-NLS-1$
"0xE06D7363 C++ Exception" //$NON-NLS-1$
};
private void addCheckBox(Composite parent, int exceptionIndex)
{
m_buttons[m_buttAddIndex] = new Button(parent, SWT.CHECK);
m_buttons[m_buttAddIndex].setText(m_exceptionNames[exceptionIndex]);
m_buttons[m_buttAddIndex].setToolTipText(Messages.getString("ExceptionsTab.1")); //$NON-NLS-1$
m_buttons[m_buttAddIndex].addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
updateLaunchConfigurationDialog();
}
});
m_buttonPropertyNames[m_buttAddIndex] = SettingsData.getExceptionPropertyNames()[exceptionIndex];
m_buttAddIndex++;
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.ILaunchConfigurationTab#createControl(org.eclipse.swt.widgets.Composite)
*/
public void createControl(Composite parent) {
Composite comp = new Composite(parent, SWT.NONE);
setControl(comp);
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), LaunchTabHelpIds.EMULATION_EXCEPTIONS);
GridLayout topLayout = new GridLayout();
topLayout.numColumns = 1;
comp.setLayout(topLayout);
createVerticalSpacer(comp, 1);
Group group = new Group(comp, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 3;
group.setLayout(layout);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 3;
group.setLayoutData(gd);
group.setText(Messages.getString("ExceptionsTab.25")); //$NON-NLS-1$
group.setFont(comp.getFont());
group.setToolTipText(Messages.getString("ExceptionsTab.1")); //$NON-NLS-1$
for (int i = 0; i < m_exceptionNames.length; i++) {
addCheckBox(group, i);
}
Composite buttonsComp = new Composite(comp, SWT.NONE);
GridLayout buttonsLayout = new GridLayout();
buttonsLayout.numColumns = 3;
buttonsLayout.marginHeight = 0;
buttonsLayout.marginWidth = 0;
buttonsComp.setLayout(buttonsLayout);
GridData buttonsGd = new GridData(GridData.FILL_HORIZONTAL);
gd.horizontalSpan = 3;
buttonsComp.setLayoutData(buttonsGd);
checkAll = createPushButton(buttonsComp, Messages.getString("ExceptionsTab.26"), null); //$NON-NLS-1$
checkAll.setToolTipText(Messages.getString("ExceptionsTab.2")); //$NON-NLS-1$
checkAll.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent evt) {
for (int i=0; i<m_buttons.length; i++) {
m_buttons[i].setSelection(true);
}
updateLaunchConfigurationDialog();
}
});
clearAll = createPushButton(buttonsComp, Messages.getString("ExceptionsTab.27"), null); //$NON-NLS-1$
clearAll.setToolTipText(Messages.getString("ExceptionsTab.3")); //$NON-NLS-1$
clearAll.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent evt) {
for (int i=0; i<m_buttons.length; i++) {
m_buttons[i].setSelection(false);
}
updateLaunchConfigurationDialog();
}
});
Dialog.applyDialogFont(parent);
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.ILaunchConfigurationTab#setDefaults(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
*/
public void setDefaults(ILaunchConfigurationWorkingCopy config) {
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.ILaunchConfigurationTab#initializeFrom(org.eclipse.debug.core.ILaunchConfiguration)
*/
public void initializeFrom(ILaunchConfiguration configuration) {
for (int i=0; i<m_buttons.length; i++) {
try {
m_buttons[i].setSelection(configuration.getAttribute(m_buttonPropertyNames[i], false));
} catch (CoreException e) {
LaunchPlugin.log(e);
}
}
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.ILaunchConfigurationTab#performApply(org.eclipse.debug.core.ILaunchConfigurationWorkingCopy)
*/
public void performApply(ILaunchConfigurationWorkingCopy configuration) {
for (int i=0; i<m_buttons.length; i++) {
configuration.setAttribute(m_buttonPropertyNames[i], m_buttons[i].getSelection());
}
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.ILaunchConfigurationTab#getName()
*/
public String getName() {
return Messages.getString("ExceptionsTab.28"); //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.debug.ui.ILaunchConfigurationTab#getImage()
*/
public Image getImage() {
return LaunchImages.get(LaunchImages.IMG_VIEW_EXCEPTIONS_TAB);
}
@Override
public void activated(ILaunchConfigurationWorkingCopy workingCopy) {
super.activated(workingCopy);
// forces page to get focus so that help works without having to select some control first.
getControl().setFocus();
}
}