1) Fixed breakpoint with skip count (or hit count).
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / php / model / XDebugLineBreakpoint.java
index a626e8c..c50b626 100644 (file)
@@ -1,9 +1,5 @@
-
 /*
  * Created on 25.11.2004
- *
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
  */
 package net.sourceforge.phpeclipse.xdebug.php.model;
 
@@ -19,8 +15,10 @@ import org.eclipse.core.resources.IWorkspaceRunnable;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.debug.core.DebugPlugin;
+//import org.eclipse.debug.core.model.Breakpoint;
 import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.debug.core.model.LineBreakpoint;
+import org.eclipse.debug.core.model.ILineBreakpoint;
+//import org.eclipse.debug.core.model.LineBreakpoint;
 
 
 /**
@@ -29,8 +27,8 @@ import org.eclipse.debug.core.model.LineBreakpoint;
  * TODO To change the template for this generated type comment go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
-public class XDebugLineBreakpoint  extends LineBreakpoint {
-       
+public class XDebugLineBreakpoint  extends XDebugBreakpoint implements ILineBreakpoint /*extends LineBreakpoint*/ {
+
        /**
         * Default constructor is required for the breakpoint manager
         * to re-create persisted breakpoints. After instantiating a breakpoint,
@@ -44,7 +42,7 @@ public class XDebugLineBreakpoint  extends LineBreakpoint {
         * this breakpoint is located in.
         * (value <code>"net.sourceforge.phpeclipse.debug.typeName"</code>). This attribute is a <code>String</code>.
         */
-       protected static final String TYPE_NAME = "net.sourceforge.phpeclipse.debug.typeName"; //$NON-NLS-1$            
+       protected static final String TYPE_NAME = "net.sourceforge.phpeclipse.debug.typeName"; //$NON-NLS-1$
 
 //     public PHPLineBreakpoint() {
 //     }
@@ -52,37 +50,30 @@ public class XDebugLineBreakpoint  extends LineBreakpoint {
 //     public PHPLineBreakpoint(IResource resource, int lineNumber, int charStart, int charEnd, int hitCount, boolean add, Map attributes) throws DebugException {
 //             this(resource, lineNumber, charStart, charEnd, hitCount, add, attributes, PHP_LINE_BREAKPOINT);
 //     }
-//     
+//
 //     public PHPLineBreakpoint(IResource resource, int lineNumber, int hitCount, boolean add, Map attributes) throws DebugException {
 //             this(resource, lineNumber, -1, -1, hitCount, add, attributes, PHP_LINE_BREAKPOINT);
 //     }
 
-       
+
        public static final String BREAKPOINT_ID ="XDebugLineBreakpointID";
-       
+
        public XDebugLineBreakpoint() {
        }
-       
+
        /**
         * Constructs a line breakpoint on the given resource at the given
         * line number. The line number is 1-based (i.e. the first line of a
         * file is line number 1).
-        * 
+        *
         * @param resource file on which to set the breakpoint
         * @param lineNumber 1-based line number of the breakpoint
         * @throws CoreException if unable to create the breakpoint
         */
        public XDebugLineBreakpoint(final IResource resource, final int lineNumber) throws CoreException {
-//             IMarker marker = resource.createMarker("net.sourceforge.phpeclipse.xdebug.core.XDebugLineBreakpoint");
-//             setMarker(marker);
-//             setEnabled(true);
-//             XDebugCorePlugin.log(IStatus.INFO,"Markertype: "+ marker.getType());
-//             ensureMarker().setAttribute(IMarker.LINE_NUMBER, lineNumber);
-//             ensureMarker().setAttribute(IBreakpoint.ID, IXDebugConstants.ID_PHP_DEBUG_MODEL);
-//             ensureMarker().setAttribute(BREAKPOINT_ID,-1);
-               IWorkspaceRunnable wr= new IWorkspaceRunnable() {
+               IWorkspaceRunnable wr = new IWorkspaceRunnable() {
                        public void run(IProgressMonitor monitor) throws CoreException {
-       
+
                                // create the marker
                                setMarker(resource.createMarker(XDEBUG_LINE_BREAKPOINT));
 
@@ -92,15 +83,15 @@ public class XDebugLineBreakpoint  extends LineBreakpoint {
 
                                // set attributes
                                ensureMarker().setAttributes(attributes);
-                               
+
                                // add to breakpoint manager if requested
-                               register(true);         
+                               register(true);
                        }
                };
                run(getMarkerRule(resource), wr);
 
        }
-       
+
        protected void register(boolean register) throws CoreException {
                if (register) {
                        DebugPlugin.getDefault().getBreakpointManager().addBreakpoint(this);
@@ -108,7 +99,7 @@ public class XDebugLineBreakpoint  extends LineBreakpoint {
                        setRegistered(false);
                }
        }
-       
+
        public void addLineBreakpointAttributes(Map attributes, String modelIdentifier, boolean enabled, int lineNumber, int charStart, int charEnd) {
                attributes.put(IBreakpoint.ID, modelIdentifier);
                attributes.put(IBreakpoint.ENABLED, new Boolean(enabled));
@@ -120,22 +111,67 @@ public class XDebugLineBreakpoint  extends LineBreakpoint {
                }
                attributes.put(TYPE_NAME, "typeName");
                attributes.put(BREAKPOINT_ID,new Integer(-1));
-       }               
+       }
+
 
-       
        /* (non-Javadoc)
         * @see org.eclipse.debug.core.model.IBreakpoint#getModelIdentifier()
         */
        public String getModelIdentifier() {
                return IXDebugConstants.ID_PHP_DEBUG_MODEL;
        }
-       
-       public void setID(int id) throws CoreException
-       {
+
+       public void setID(int id) throws CoreException {
                ensureMarker().setAttribute(BREAKPOINT_ID,id);
        }
-       public int getID() throws CoreException
-       {
+
+       public int getID() throws CoreException {
                return ensureMarker().getAttribute(BREAKPOINT_ID,-1);
        }
+
+       public int getHitCount() throws CoreException {
+               return ensureMarker().getAttribute(HIT_COUNT,-1);
+               //return fHitCount;
+       }
+
+       public int getChangeID() throws CoreException {
+               return ensureMarker().getAttribute(CHANGE_ID, 1);
+       }
+
+       public void setHitCount(int newHitCount) throws CoreException {
+               ensureMarker().setAttribute(HIT_COUNT,newHitCount);
+               //fHitCount = newHitCount;
+       }
+       /**
+        * @see ILineBreakpoint#getLineNumber()
+        */
+       public int getLineNumber() throws CoreException {
+               IMarker m = getMarker();
+               if (m != null) {
+                       return m.getAttribute(IMarker.LINE_NUMBER, -1);
+               }
+               return -1;
+       }
+
+       /**
+        * @see ILineBreakpoint#getCharStart()
+        */
+       public int getCharStart() throws CoreException {
+               IMarker m = getMarker();
+               if (m != null) {
+                       return m.getAttribute(IMarker.CHAR_START, -1);
+               }
+               return -1;
+       }
+
+       /**
+        * @see ILineBreakpoint#getCharEnd()
+        */
+       public int getCharEnd() throws CoreException {
+               IMarker m = getMarker();
+               if (m != null) {
+                       return m.getAttribute(IMarker.CHAR_END, -1);
+               }
+               return -1;
+       }
 }