public EObject getElementAt(final XtextResource resource, final int offset) { EObject crossLinkedEObject = this._eObjectAtOffsetHelper.resolveCrossReferencedElementAt(resource, offset); if ((crossLinkedEObject != null)) { return crossLinkedEObject; } else { EObject containedEObject = this._eObjectAtOffsetHelper.resolveContainedElementAt(resource, offset); if ((containedEObject != null)) { final ITextRegion nameRegion = this._iLocationInFileProvider.getSignificantTextRegion(containedEObject); boolean _contains = nameRegion.contains(offset); if (_contains) { return containedEObject; } } } return null; } }
protected EObject internalResolveElementAt(XtextResource resource, int offset, boolean containment) { if(!containment) { EObject crossRef = resolveCrossReferencedElementAt(resource, offset); if (crossRef != null) return crossRef; } IParseResult parseResult = resource.getParseResult(); if (parseResult != null) { ILeafNode leaf = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), offset); if (leaf != null && leaf.isHidden() && leaf.getOffset() == offset) { leaf = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), offset - 1); } if (leaf != null) { return NodeModelUtils.findActualSemanticObjectFor(leaf); } } return null; }
protected HoverContext createContext(final Document document, final XtextResource resource, final int offset) { final EObject crossLinkedEObject = this._eObjectAtOffsetHelper.resolveCrossReferencedElementAt(resource, offset); if ((crossLinkedEObject != null)) { boolean _eIsProxy = crossLinkedEObject.eIsProxy(); if (_eIsProxy) { return null; } final IParseResult parseResult = resource.getParseResult(); if ((parseResult == null)) { return null; } ILeafNode leafNode = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), offset); if ((((leafNode != null) && leafNode.isHidden()) && (leafNode.getOffset() == offset))) { leafNode = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), (offset - 1)); } if ((leafNode == null)) { return null; } final ITextRegion leafRegion = leafNode.getTextRegion(); return new HoverContext(document, resource, offset, leafRegion, crossLinkedEObject); } final EObject element = this._eObjectAtOffsetHelper.resolveElementAt(resource, offset); if ((element == null)) { return null; } final ITextRegion region = this._iLocationInFileProvider.getSignificantTextRegion(element); return new HoverContext(document, resource, offset, region, element); }
/** * Call this method only from within an IUnitOfWork */ protected Pair<EObject, IRegion> getXtextElementAt(XtextResource resource, final int offset) { // check for cross reference EObject crossLinkedEObject = eObjectAtOffsetHelper.resolveCrossReferencedElementAt(resource, offset); if (crossLinkedEObject != null) { if (!crossLinkedEObject.eIsProxy()) { IParseResult parseResult = resource.getParseResult(); if (parseResult != null) { ILeafNode leafNode = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), offset); if(leafNode != null && leafNode.isHidden() && leafNode.getOffset() == offset) { leafNode = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), offset - 1); } if (leafNode != null) { return Tuples.create(crossLinkedEObject, (IRegion) new Region(leafNode.getOffset(), leafNode.getLength())); } } } } else { EObject o = eObjectAtOffsetHelper.resolveElementAt(resource, offset); if (o != null) { ITextRegion region = locationInFileProvider.getSignificantTextRegion(o); final IRegion region2 = new Region(region.getOffset(), region.getLength()); if (TextUtilities.overlaps(region2, new Region(offset, 0))) return Tuples.create(o, region2); } } return null; }