/** * Copyright (c) 2005-2013 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the Eclipse Public License (EPL). * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package org.python.pydev.debug.ui.actions; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.python.pydev.debug.model.PyExceptionBreakPointManager; import org.python.pydev.debug.ui.PyConfigureExceptionDialog; import org.python.pydev.editor.actions.PyAction; import org.python.pydev.shared_ui.EditorUtils; public class PyConfigureExceptionAction extends PyAction implements IWorkbenchWindowActionDelegate { @Override public void run(IAction action) { PyConfigureExceptionDialog dialog = new PyConfigureExceptionDialog(EditorUtils.getShell(), "", new PyExceptionListProvider(), new LabelProvider(), ""); PyExceptionBreakPointManager instance = PyExceptionBreakPointManager.getInstance(); dialog.setInitialElementSelections(instance.getExceptionsList()); dialog.setTitle("Add Python Exception Breakpoint"); if (dialog.open() == PyConfigureExceptionDialog.OK) { Object[] selectedItems = dialog.getResult(); String[] exceptionArray; if (selectedItems != null) { exceptionArray = new String[selectedItems.length]; System.arraycopy(selectedItems, 0, exceptionArray, 0, selectedItems.length); } else { exceptionArray = new String[0]; } //must be done before setBreakOn (where listeners will be notified). instance.setSkipCaughtExceptionsInSameFunction(dialog.getResultStopOnExceptionsHandledInSameContext()); instance.setIgnoreExceptionsThrownInLinesWithIgnoreException(dialog .getResultIgnoreExceptionsThrownInLinesWithIgnoreException()); instance.setBreakOn(dialog.getResultHandleCaughtExceptions(), dialog.getResultHandleUncaughtExceptions(), exceptionArray); } } @Override public void selectionChanged(IAction action, ISelection selection) { } @Override public void dispose() { } @Override public void init(IWorkbenchWindow window) { } }