package com.mobilesorcery.sdk.html5.debug.jsdt; import java.net.URI; import java.net.URISyntaxException; import java.util.Collections; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IPath; 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.VirtualMachine; import com.mobilesorcery.sdk.html5.debug.ReloadVirtualMachine; public class SimpleScriptReference implements ScriptReference { private final ReloadVirtualMachine vm; private final IPath path; public SimpleScriptReference(ReloadVirtualMachine vm, IFile file) { this(vm, file.getFullPath()); } public SimpleScriptReference(ReloadVirtualMachine vm, IPath path) { this.vm = vm; this.path = path; } @Override public VirtualMachine virtualMachine() { return vm; } @Override public List allLineLocations() { return Collections.EMPTY_LIST; } @Override public Location lineLocation(int lineNumber) { return new SimpleLocation(vm, path, lineNumber); } @Override public List allFunctionLocations() { return null; } @Override public Location functionLocation(String functionName) { return null; } @Override public String source() { return null; } @Override public URI sourceURI() { try { URI result = new URI("file://" + path.toString()); return result; } catch (URISyntaxException e) { return null; } } public IPath sourcePath() { return getFile().getLocation(); } public IFile getFile() { return ResourcesPlugin.getWorkspace().getRoot().getFile(path); } public String toString() { return getFile().toString(); } public static IPath getFile(Location location) { ScriptReference ref = location.scriptReference(); if (ref instanceof SimpleScriptReference) { return ((SimpleScriptReference) ref).sourcePath(); } return null; } }