/** * Copyright (c) 2013-2015 by Brainwy Software Ltda, 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.handlers; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IPath; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.model.IStackFrame; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.ui.handlers.HandlerUtil; import org.python.pydev.core.log.Log; import org.python.pydev.debug.model.PyExceptionBreakPointManager; import org.python.pydev.debug.model.PyStackFrame; public class IgnoreCaughtExceptionCommandHandler extends AbstractHandler { @Override public Object execute(ExecutionEvent event) throws ExecutionException { ISelection selection = HandlerUtil.getCurrentSelection(event); if (selection instanceof StructuredSelection) { StructuredSelection structuredSelection = (StructuredSelection) selection; Object elem = structuredSelection.getFirstElement(); if (elem instanceof IAdaptable) { IAdaptable iAdaptable = (IAdaptable) elem; elem = iAdaptable.getAdapter(IStackFrame.class); } if (elem instanceof PyStackFrame) { try { PyStackFrame pyStackFrame = (PyStackFrame) elem; IPath path = pyStackFrame.getPath(); int lineNumber = pyStackFrame.getLineNumber(); PyExceptionBreakPointManager.getInstance().ignoreCaughtExceptionsWhenThrownFrom .addIgnoreThrownExceptionIn(path.toFile(), lineNumber); } catch (DebugException e) { Log.log(e); } } } return null; } }