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; } }