1 /******************************************************************************* 2 * Copyright (c) 2000, 2008 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.jsp.launching; 15 16 import org.eclipse.jdt.debug.core.IJavaStratumLineBreakpoint; 17 import org.eclipse.jdt.debug.core.JDIDebugModel; 18 19 import org.eclipse.core.runtime.CoreException; 20 21 import org.eclipse.core.resources.IFile; 22 import org.eclipse.core.resources.IResource; 23 24 import org.eclipse.jface.action.Action; 25 26 import org.eclipse.jface.text.source.IVerticalRulerInfo; 27 28 import org.eclipse.ui.IEditorInput; 29 30 import org.eclipse.ui.texteditor.ITextEditor; 31 32 import org.eclipse.debug.core.DebugPlugin; 33 import org.eclipse.debug.core.IBreakpointManager; 34 import org.eclipse.debug.core.model.IBreakpoint; 35 36 /** 37 * ToggleJspBreakpointAction 38 */ 39 public class ToggleJspBreakpointAction extends Action { 40 41 private ITextEditor fEditor; 42 private IVerticalRulerInfo fRulerInfo; 43 44 @Override run()45 public void run() { 46 IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); 47 IResource resource = getResource(); 48 int lineNumber = fRulerInfo.getLineOfLastMouseButtonActivity() + 1; 49 for (IBreakpoint bp : manager.getBreakpoints()) { 50 if (bp instanceof IJavaStratumLineBreakpoint) { 51 IJavaStratumLineBreakpoint breakpoint = (IJavaStratumLineBreakpoint)bp; 52 if (breakpoint.getMarker().getResource().equals(resource)) { 53 try { 54 if (breakpoint.getLineNumber() == lineNumber) { 55 // remove 56 breakpoint.delete(); 57 return; 58 } 59 } catch (CoreException e) { 60 e.printStackTrace(); 61 } 62 } 63 } 64 } 65 createBreakpoint(); 66 } 67 createBreakpoint()68 protected void createBreakpoint() { 69 IResource resource = getResource(); 70 int lineNumber = fRulerInfo.getLineOfLastMouseButtonActivity() + 1; 71 try { 72 JDIDebugModel.createStratumBreakpoint(resource, null, resource.getName(), null, null, lineNumber, -1, -1, 0, true, null); // 73 } catch (CoreException e) { 74 e.printStackTrace(); 75 } 76 } 77 ToggleJspBreakpointAction(ITextEditor editor, IVerticalRulerInfo rulerInfo)78 public ToggleJspBreakpointAction(ITextEditor editor, IVerticalRulerInfo rulerInfo) { 79 super(LaunchingMessages.ToggleJspBreakpointAction_2); 80 fEditor = editor; 81 fRulerInfo = rulerInfo; 82 } 83 getResource()84 protected IResource getResource() { 85 IEditorInput input= fEditor.getEditorInput(); 86 IResource resource= input.getAdapter(IFile.class); 87 if (resource == null) { 88 resource= input.getAdapter(IResource.class); 89 } 90 return resource; 91 } 92 } 93