com.nokia.cdt.internal.debug.launch.ui.ExceptionsTab.java Source code

Java tutorial

Introduction

Here is the source code for com.nokia.cdt.internal.debug.launch.ui.ExceptionsTab.java

Source

/*
* 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();
    }

}