blob: 1fe25e236ca374c32e78428cdb34a1e73baa496f [file] [log] [blame]
package org.eclipse.emf.refactor.metrics.xtext.managers;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.text.TextSelection;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.xtext.resource.EObjectAtOffsetHelper;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.ui.editor.XtextEditor;
import org.eclipse.xtext.ui.editor.model.IXtextDocument;
import org.eclipse.xtext.ui.editor.model.XtextDocumentUtil;
import org.eclipse.xtext.ui.editor.utils.EditorUtils;
import org.eclipse.xtext.util.concurrent.IUnitOfWork;
public class XtextSelectionManager {
public static List<EObject> getESelection(ISelection selection) {
List<EObject> list = new ArrayList<EObject>();
if (null != selection && selection instanceof TextSelection) {
TextSelection tSelection = (TextSelection) selection;
XtextEditor xEditor = EditorUtils.getActiveXtextEditor();
if (null != xEditor) {
IXtextDocument doc = XtextDocumentUtil.get(xEditor);
if (null != doc) {
XtextResource resource;
resource = doc.readOnly(new IUnitOfWork<XtextResource, XtextResource>() {
public XtextResource exec(XtextResource state) throws Exception {
return state;
}
});
EObjectAtOffsetHelper helper = new EObjectAtOffsetHelper();
EObject eObject = helper.resolveElementAt(resource , tSelection.getOffset());
System.out.println("EObject: " + eObject);
if (eObject != null) {
list.add(eObject);
}
}
}
}
return list;
}
}