package com.mobilesorcery.sdk.html5.debug.jsdt.requests;
import java.util.HashMap;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.wst.jsdt.debug.core.breakpoints.IJavaScriptLineBreakpoint;
import org.eclipse.wst.jsdt.debug.core.jsdi.Location;
import org.eclipse.wst.jsdt.debug.core.jsdi.ScriptReference;
import org.eclipse.wst.jsdt.debug.core.jsdi.ThreadReference;
import org.eclipse.wst.jsdt.debug.core.jsdi.request.BreakpointRequest;
import org.eclipse.wst.jsdt.debug.core.model.JavaScriptDebugModel;
import com.mobilesorcery.sdk.core.CoreMoSyncPlugin;
import com.mobilesorcery.sdk.html5.Html5Plugin;
import com.mobilesorcery.sdk.html5.debug.JSODDSupport;
import com.mobilesorcery.sdk.html5.debug.ReloadVirtualMachine;
import com.mobilesorcery.sdk.html5.debug.jsdt.JavaScriptBreakpointDesc;
import com.mobilesorcery.sdk.html5.debug.jsdt.SimpleScriptReference;
public class ReloadBreakpointRequest extends ReloadEventRequest implements
BreakpointRequest {
private final Location location;
private ThreadReference thread;
private String condition;
private int hitcount;
public ReloadBreakpointRequest(ReloadVirtualMachine vm, Location location) {
super(vm);
this.location = location;
}
@Override
public Location location() {
return location;
}
@Override
public void addThreadFilter(ThreadReference thread) {
this.thread = thread;
}
@Override
public void addConditionFilter(String condition) {
this.condition = condition;
}
@Override
public void addHitCountFilter(int hitcount) {
this.hitcount = hitcount;
}
@Override
public synchronized void setEnabled(boolean enabled) {
if (enabled != isEnabled()) {
super.setEnabled(enabled);
ScriptReference scriptRef = location.scriptReference();
if (scriptRef instanceof SimpleScriptReference) {
IFile file = ((SimpleScriptReference) scriptRef).getFile();
// NOTE: This breakpoint will be modified to reflect properties
// of the breakpoint
// that are difficult to reliable get at this point (condition
// enablement etc).
JavaScriptBreakpointDesc bp = new JavaScriptBreakpointDesc(
file, location.lineNumber(), condition,
JavaScriptBreakpointDesc.SUSPEND_ON_TRUE, hitcount);
Html5Plugin.getDefault().getReloadServer()
.setLineBreakpoint(enabled, bp);
}
}
}
}