blob: 95ebc90c5483ff3c4f59314fd0e030184c319d43 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012, 2014 Sebastian Schmidt and others.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* https://www.eclipse.org/legal/epl-2.0
*
* SPDX-License-Identifier: EPL-2.0
*
* Sebastian Schmidt - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.debug.ui;
import org.eclipse.core.resources.IMarkerDelta;
import org.eclipse.debug.core.IBreakpointsListener;
import org.eclipse.debug.core.model.IBreakpoint;
import org.eclipse.mylyn.context.core.AbstractContextStructureBridge;
import org.eclipse.mylyn.context.core.ContextCore;
import org.eclipse.mylyn.context.core.IInteractionElement;
import org.eclipse.mylyn.monitor.core.InteractionEvent;
/**
* @author Sebastian Schmidt
*/
public class BreakpointsListener implements IBreakpointsListener {
private final String ORIGIN_ID = "org.eclipse.debug.ui"; //$NON-NLS-1$
private final AbstractContextStructureBridge structureBridge = ContextCore.getStructureBridge(DebugUiPlugin.CONTENT_TYPE);
public void breakpointsAdded(IBreakpoint[] breakpoints) {
breakpointsChanged(breakpoints, new IMarkerDelta[breakpoints.length]);
}
public void breakpointsRemoved(IBreakpoint[] breakpoints, IMarkerDelta[] deltas) {
for (IBreakpoint breakpoint : breakpoints) {
IInteractionElement element = ContextCore.getContextManager().getElement(
structureBridge.getHandleIdentifier(breakpoint));
if (element != null) {
ContextCore.getContextManager().deleteElement(element);
}
}
}
public void breakpointsChanged(IBreakpoint[] breakpoints, IMarkerDelta[] deltas) {
for (int i = 0; i < breakpoints.length; i++) {
IBreakpoint breakpoint = breakpoints[i];
IMarkerDelta delta = deltas[i];
if (delta != null
&& breakpoint.getMarker().getAttribute(BreakpointsStructureBridge.ATTRIBUTE_ID, null) != null) {
if (delta.getAttribute(BreakpointsStructureBridge.ATTRIBUTE_ID, null) == null) {
// generating an unique id for this breakpoint shouldn't increase interest.
continue;
}
}
InteractionEvent editEvent = new InteractionEvent(InteractionEvent.Kind.EDIT, DebugUiPlugin.CONTENT_TYPE,
structureBridge.getHandleIdentifier(breakpoint), ORIGIN_ID);
ContextCore.getContextManager().processInteractionEvent(editEvent);
}
}
}