/******************************************************************************* * Copyright (c) 2006 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * IBM Research *******************************************************************************/ package com.ibm.research.tagging.breakpoint; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.IBreakpointManager; import org.eclipse.debug.core.model.IBreakpoint; import org.eclipse.debug.core.model.ILineBreakpoint; import com.ibm.research.tagging.core.ITagCore; import com.ibm.research.tagging.core.IWaypoint; import com.ibm.research.tagging.core.IWaypointModelExtension; import com.ibm.research.tagging.core.TagCorePlugin; public class BreakpointWaypointModelExtension implements IWaypointModelExtension { /* * (non-Javadoc) * @see com.ibm.research.tagging.core.IWaypointModelExtension#initialize(com.ibm.research.tagging.core.ITagModel) */ public void initialize(ITagCore core) { IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); manager.addBreakpointListener(new BreakpointListener()); TagCorePlugin.getDefault().getTagCore().getTagModel().addTagModelListener(new TagModelListener()); TagCorePlugin.getDefault().getTagCore().getWaypointModel().addWaypointModelListener(new WaypointModelListener()); } /* * (non-Javadoc) * @see com.ibm.research.tagging.core.IWaypointModelExtension#loadWaypoints() */ public void loadWaypoints() { IBreakpointManager manager = DebugPlugin.getDefault().getBreakpointManager(); IBreakpoint[] breakpoints = manager.getBreakpoints(); for(IBreakpoint breakpoint : breakpoints) { BreakpointWaypoint waypoint = null; if(breakpoint instanceof ILineBreakpoint) waypoint = new LineBreakpointWaypoint((ILineBreakpoint)breakpoint); else waypoint = new BreakpointWaypoint(breakpoint); // Pull data from the breakpoint marker waypoint.load(); TagCorePlugin.getDefault().getTagCore().getWaypointModel().addWaypoint(waypoint); // we assume that this is a new waypoint that we dont know about if(waypoint.getTags().length == 0) BreakpointWaypointUtil.applyDefaults(waypoint); } } /* * (non-Javadoc) * @see com.ibm.research.tagging.core.IWaypointModelExtension#saveWaypoints() */ public void saveWaypoints() { IWaypoint[] waypoints = TagCorePlugin.getDefault().getTagCore().getWaypointModel().getWaypoints(); for(IWaypoint waypoint : waypoints) { if(waypoint instanceof BreakpointWaypoint) { try { // flush the local data to the marker ((BreakpointWaypoint)waypoint).save(); } catch (CoreException e) { e.printStackTrace(); } } } } }