package tern.eclipse.ide.jsdt.internal.ui;
import org.eclipse.core.resources.IFile;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.ide.ResourceUtil;
import org.eclipse.ui.navigator.ILinkHelper;
import org.eclipse.wst.jsdt.core.IJavaScriptElement;
import org.eclipse.wst.jsdt.core.JavaScriptCore;
import org.eclipse.wst.jsdt.internal.ui.javaeditor.EditorUtility;
import org.eclipse.wst.jsdt.ui.JavaScriptUI;
import tern.eclipse.ide.ui.utils.EditorUtils;
import tern.server.protocol.outline.JSNode;
public class JSDTTernLinkHelper implements ILinkHelper {
public void activateEditor(IWorkbenchPage page, IStructuredSelection selection) {
if (!selection.isEmpty()) {
if (selection.getFirstElement() instanceof JSNode) {
JSNode node = (JSNode) selection.getFirstElement();
IFile file = null; //ternFile.getFile();
Long start = node.getStart();
Long end = node.getEnd();
EditorUtils.openInEditor(
file,
start != null ? start.intValue() : -1,
start != null && end != null ? end.intValue()
- start.intValue() : -1, true);
}
}
}
public IStructuredSelection findSelection(IEditorInput input) {
IJavaScriptElement element= JavaScriptUI.getEditorInputJavaElement(input);
if (element == null) {
IFile file = ResourceUtil.getFile(input);
if (file != null) {
element= JavaScriptCore.create(file);
}
}
return (element != null) ? new StructuredSelection(element) : StructuredSelection.EMPTY;
}
}