package fr.inria.diverse.iot2.design.service;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.Path;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.texteditor.AbstractTextEditor;
import org.eclipse.xtext.nodemodel.ICompositeNode;
import org.eclipse.xtext.nodemodel.util.NodeModelUtils;
import org.eclipse.xtext.resource.XtextResource;
public class IoT2Services {
public EObject openTextEditor(EObject any) {
if (any != null && any.eResource() instanceof XtextResource
&& any.eResource().getURI() != null) {
String fileURI = any.eResource().getURI().toPlatformString(true);
IFile workspaceFile = ResourcesPlugin.getWorkspace().getRoot()
.getFile(new Path(fileURI));
if (workspaceFile != null) {
IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
try {
IEditorPart openEditor = IDE.openEditor(page,
workspaceFile,
"fr.inria.diverse.iot2.IoT2",
true);
if (openEditor instanceof AbstractTextEditor) {
ICompositeNode node = NodeModelUtils
.findActualNodeFor(any);
if (node != null) {
int offset = node.getOffset();
int length = node.getTotalEndOffset() - offset;
((AbstractTextEditor) openEditor).selectAndReveal(
offset, length);
System.out
.println("IoT2Services.openTextEditor()");
}
}
// editorInput.
} catch (PartInitException e) {
// Put your exception handler here if you wish to.
}
}
}
System.out.println(any);
return any;
}
}