/** * Copyright (c) 2005-2011 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; import java.util.List; import org.eclipse.core.resources.IMarker; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget; import org.eclipse.debug.ui.actions.IToggleBreakpointsTargetExtension; import org.eclipse.jface.text.TextSelection; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IWorkbenchPart; import org.python.pydev.debug.ui.actions.PyBreakpointRulerAction; import org.python.pydev.editor.PyEdit; public class PyToggleBreakpointsTarget implements IToggleBreakpointsTarget, IToggleBreakpointsTargetExtension { PyToggleBreakpointsTarget() { } // --------------- All others point to this 2 methods! public void toggleBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException { if (part instanceof PyEdit && selection instanceof TextSelection) { TextSelection textSelection = (TextSelection) selection; PyEdit pyEdit = (PyEdit) part; int startLine = textSelection.getStartLine(); List<IMarker> markersFromCurrentFile = PyBreakpointRulerAction.getMarkersFromCurrentFile(pyEdit, startLine); if (markersFromCurrentFile.size() > 0) { PyBreakpointRulerAction.removeMarkers(markersFromCurrentFile); } else { PyBreakpointRulerAction.addBreakpointMarker(pyEdit.getDocument(), startLine + 1, pyEdit); } } } public boolean canToggleBreakpoints(IWorkbenchPart part, ISelection selection) { return selection instanceof TextSelection && part instanceof PyEdit; } public void toggleLineBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException { toggleBreakpoints(part, selection); } public boolean canToggleLineBreakpoints(IWorkbenchPart part, ISelection selection) { return canToggleBreakpoints(part, selection); } public void toggleMethodBreakpoints(IWorkbenchPart part, ISelection selection) throws CoreException { toggleBreakpoints(part, selection); } public boolean canToggleMethodBreakpoints(IWorkbenchPart part, ISelection selection) { return canToggleBreakpoints(part, selection); } public void toggleWatchpoints(IWorkbenchPart part, ISelection selection) throws CoreException { toggleBreakpoints(part, selection); } public boolean canToggleWatchpoints(IWorkbenchPart part, ISelection selection) { return canToggleBreakpoints(part, selection); } }