1 /**********************************************************************
 
   2 Copyright (c) 2000, 2002 IBM Corp. and others.
 
   3 All rights reserved. This program and the accompanying materials
 
   4 are made available under the terms of the Common Public License v1.0
 
   5 which accompanies this distribution, and is available at
 
   6 http://www.eclipse.org/legal/cpl-v10.html
 
   9     Vicente Fernando - Initial implementation - www.alfersoft.com.ar
 
  10 **********************************************************************/
 
  11 package net.sourceforge.phpdt.internal.debug.core.breakpoints;
 
  15 import org.eclipse.core.runtime.CoreException;
 
  16 import org.eclipse.core.resources.IMarker;
 
  17 import org.eclipse.core.resources.IResource;
 
  18 import org.eclipse.core.resources.IWorkspaceRunnable;
 
  19 import org.eclipse.core.runtime.IProgressMonitor;
 
  20 import org.eclipse.debug.core.DebugException;
 
  21 import org.eclipse.debug.core.model.IBreakpoint;
 
  22 import org.eclipse.debug.core.model.ILineBreakpoint;
 
  25  * A breakpoint that can be located at a specific line of source code.
 
  27 public class PHPLineBreakpoint extends PHPBreakpoint implements IBreakpoint, ILineBreakpoint {
 
  29         private static final String PHP_LINE_BREAKPOINT = "net.sourceforge.phpeclipse.debug.core.phpLineBreakpointMarker"; //$NON-NLS-1$
 
  31         public PHPLineBreakpoint() {
 
  34         public PHPLineBreakpoint(IResource resource, int lineNumber, int charStart, int charEnd, int hitCount, boolean add, Map attributes) throws DebugException {
 
  35                 this(resource, lineNumber, charStart, charEnd, hitCount, add, attributes, PHP_LINE_BREAKPOINT);
 
  38         protected PHPLineBreakpoint(final IResource resource, final int lineNumber, final int charStart, final int charEnd, final int hitCount, final boolean add, final Map attributes, final String markerType) throws DebugException {
 
  39                 IWorkspaceRunnable wr= new IWorkspaceRunnable() {
 
  40                         public void run(IProgressMonitor monitor) throws CoreException {
 
  43                                 setMarker(resource.createMarker(markerType));
 
  46                                 addLineBreakpointAttributes(attributes, getModelIdentifier(), true, lineNumber, charStart, charEnd);
 
  49                                 ensureMarker().setAttributes(attributes);
 
  51                                 // add to breakpoint manager if requested
 
  58         public void addLineBreakpointAttributes(Map attributes, String modelIdentifier, boolean enabled, int lineNumber, int charStart, int charEnd) {
 
  59                 attributes.put(IBreakpoint.ID, modelIdentifier);
 
  60                 attributes.put(IBreakpoint.ENABLED, new Boolean(enabled));
 
  61                 attributes.put(IMarker.LINE_NUMBER, new Integer(lineNumber));
 
  62                 attributes.put(IMarker.CHAR_START, new Integer(charStart));
 
  63                 attributes.put(IMarker.CHAR_END, new Integer(charEnd));
 
  64                 attributes.put(TYPE_NAME, "typeName"); 
 
  68          * @see ILineBreakpoint#getLineNumber()
 
  70         public int getLineNumber() throws CoreException {
 
  71                 return ensureMarker().getAttribute(IMarker.LINE_NUMBER, -1);
 
  75          * @see ILineBreakpoint#getCharStart()
 
  77         public int getCharStart() throws CoreException {
 
  78                 return ensureMarker().getAttribute(IMarker.CHAR_START, -1);
 
  82          * @see ILineBreakpoint#getCharEnd()
 
  84         public int getCharEnd() throws CoreException {
 
  85                 return ensureMarker().getAttribute(IMarker.CHAR_END, -1);
 
  89          * Returns the type of marker associated with Java line breakpoints
 
  91         public static String getMarkerType() {
 
  92                 return PHP_LINE_BREAKPOINT;