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; } }
private EObject getSelectedName(final ITextSelection selection, XtextResource xTextResource) { return eObjectAtOffsetHelper.resolveElementAt(xTextResource, selection.getOffset()); }
/** * @return the cross referenced EObject under, right or left to the cursor (in that order) or * <code>null</code> if there is no cross referenced object next to the offset. */ public EObject resolveCrossReferencedElementAt(XtextResource resource, int offset) { INode node = getCrossReferenceNode(resource, new TextRegion(offset, 0)); if (node != null) return getCrossReferencedElement(node); 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); }
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; }
/** * @param node a node with an associated {@link CrossReference} grammar element. * @return the {@link EObject} referenced by this node * @since 2.1 */ public EObject getCrossReferencedElement(INode node) { if (!(node.getGrammarElement() instanceof CrossReference)) throw new IllegalArgumentException("Passed node not a cross reference node."); return resolveCrossReferencedElement(node); }
final EObject containedElement = offsetHelper.resolveContainedElementAt(resource, offset);
protected boolean isRefactoringEnabled(IRenameElementContext renameElementContext, XtextResource resource) { ResourceSet resourceSet = resource.getResourceSet(); if (renameElementContext != null && resourceSet != null) { EObject targetElement = resourceSet.getEObject(renameElementContext.getTargetElementURI(), true); if (targetElement != null && !targetElement.eIsProxy()) { if(targetElement.eResource() == resource && renameElementContext.getTriggeringEditorSelection() instanceof ITextSelection) { ITextSelection textSelection = (ITextSelection) renameElementContext.getTriggeringEditorSelection(); ITextRegion selectedRegion = new TextRegion(textSelection.getOffset(), textSelection.getLength()); INode crossReferenceNode = eObjectAtOffsetHelper.getCrossReferenceNode(resource, selectedRegion); if(crossReferenceNode == null) { // selection is on the declaration. make sure it's the name ITextRegion significantRegion = locationInFileProvider.getSignificantTextRegion(targetElement); if(!significantRegion.contains(selectedRegion)) return false; } } IRenameStrategy.Provider renameStrategyProvider = globalServiceProvider.findService(targetElement, IRenameStrategy.Provider.class); try { return renameStrategyProvider.get(targetElement, renameElementContext) != null; } catch (NoSuchStrategyException e) { MessageDialog.openInformation(Display.getCurrent().getActiveShell(), "Cannot rename element", e.getMessage()); } } } return false; }
/** * @since 2.1 */ public INode getCrossReferenceNode(XtextResource resource, ITextRegion region) { IParseResult parseResult = resource.getParseResult(); if (parseResult != null) { ILeafNode leaf = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), region.getOffset()); INode crossRefNode = findCrossReferenceNode(leaf); // if not a cross reference position and the cursor is at the beginning of a node try the previous one. if (crossRefNode == null && leaf != null && region.getLength()==0 && leaf.getOffset() == region.getOffset()) { leaf = NodeModelUtils.findLeafNodeAtOffset(parseResult.getRootNode(), region.getOffset() - 1); return findCrossReferenceNode(leaf); } else if (crossRefNode != null && crossRefNode.getOffset()+crossRefNode.getLength() >= region.getOffset() + region.getLength()) { return crossRefNode; } } return null; }
/** * 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; }
@Override protected EObject resolveCrossReferencedElement(INode node) { EObject referenceOwner = NodeModelUtils.findActualSemanticObjectFor(node); if (referenceOwner != null) { EReference crossReference = GrammarUtil.getReference((CrossReference) node.getGrammarElement(), referenceOwner.eClass()); if (!crossReference.isMany()) { EObject resultOrProxy = (EObject) referenceOwner.eGet(crossReference); if (resultOrProxy != null && resultOrProxy.eIsProxy() && crossReference == XbasePackage.Literals.XCONSTRUCTOR_CALL__CONSTRUCTOR) { if (referenceOwner instanceof XConstructorCall) { JvmIdentifiableElement linkedType = batchTypeResolver.resolveTypes(referenceOwner).getLinkedFeature((XConstructorCall)referenceOwner); if (linkedType != null) return linkedType; } } return resultOrProxy; } else { return super.resolveCrossReferencedElement(node); } } return null; }
public JvmIdentifiableElement getJvmIdentifiableElement(final XtextResource resource, final int offset) { final EObject selectedElement = this.eObjectAtOffsetHelper.resolveElementAt(resource, offset); if ((selectedElement == null)) { return null; } if ((selectedElement instanceof JvmIdentifiableElement)) { return ((JvmIdentifiableElement)selectedElement); } final Set<EObject> jvmElements = this.associations.getJvmElements(selectedElement); boolean _isEmpty = jvmElements.isEmpty(); boolean _not = (!_isEmpty); if (_not) { final EObject firstElement = IterableExtensions.<EObject>head(jvmElements); if ((firstElement instanceof JvmIdentifiableElement)) { return ((JvmIdentifiableElement)firstElement); } } return null; } }
public void createHyperlinksByOffset(XtextResource resource, int offset, IHyperlinkAcceptor acceptor) { INode crossRefNode = eObjectAtOffsetHelper.getCrossReferenceNode(resource, new TextRegion(offset, 0)); if (crossRefNode == null) return; EObject crossLinkedEObject = eObjectAtOffsetHelper.getCrossReferencedElement(crossRefNode); if (crossLinkedEObject != null && !crossLinkedEObject.eIsProxy()) { createHyperlinksTo(resource, crossRefNode, crossLinkedEObject, acceptor); } }
public IRenameElementContext exec(XtextResource resource) throws Exception { EObject selectedElement = eObjectAtOffsetHelper.resolveElementAt(resource, selection.getOffset()); if (selectedElement != null) { IRenameElementContext renameElementContext = renameContextFactory.createRenameElementContext( selectedElement, editor, selection, resource); if (isRefactoringEnabled(renameElementContext, resource)) return renameElementContext; } return null; } });
final EObject selectedElement = offsetHelper.resolveElementAt(resource, offset); if (!isDocumentHighlightAvailableFor(selectedElement, resource, offset)) { return emptyList();
public List<? extends Location> getDefinitions(final XtextResource resource, final int offset, final IReferenceFinder.IResourceAccess resourceAccess, final CancelIndicator cancelIndicator) { final EObject element = this._eObjectAtOffsetHelper.resolveElementAt(resource, offset); if ((element == null)) { return CollectionLiterals.<Location>emptyList(); } final ArrayList<Location> locations = CollectionLiterals.<Location>newArrayList(); final TargetURIs targetURIs = this.collectTargetURIs(element); for (final URI targetURI : targetURIs) { { this.operationCanceledManager.checkCanceled(cancelIndicator); final Procedure1<EObject> _function = (EObject obj) -> { final Location location = this._documentExtensions.newLocation(obj); if ((location != null)) { locations.add(location); } }; this.doRead(resourceAccess, targetURI, _function); } } return locations; }
public Map<Annotation, Position> exec(final XtextResource resource) throws Exception { if(resource != null) { EObject target = eObjectAtOffsetHelper.resolveElementAt(resource, (selection).getOffset()); if (target != null && ! target.eIsProxy()) { monitor.setWorkRemaining(100);
protected void testBuildHierarchy(final Procedure1<? super AbstractHierarchyBuilderTest.HierarchyBuilderTestConfiguration> configurator) { @Extension final AbstractHierarchyBuilderTest.HierarchyBuilderTestConfiguration configuration = new AbstractHierarchyBuilderTest.HierarchyBuilderTestConfiguration(); configurator.apply(configuration); final ResourceSet resourceSet = this.createResourceSet(configuration); final IHierarchyBuilder hierarchyBuilder = configuration.hierarchyBuilderProvider.apply(resourceSet); String _xifexpression = null; if ((configuration.resourceURI == null)) { Pair<String, String> _last = IterableExtensions.<Pair<String, String>>last(configuration.models); _xifexpression = _last.getKey(); } else { _xifexpression = configuration.resourceURI; } final String resourceURI = _xifexpression; URI _createURI = URI.createURI(resourceURI); Resource _resource = resourceSet.getResource(_createURI, false); final XtextResource resource = ((XtextResource) _resource); EObject _resolveElementAt = this._eObjectAtOffsetHelper.resolveElementAt(resource, configuration.index); final URI rootURI = EcoreUtil2.getPlatformResourceOrNormalizedURI(_resolveElementAt); final String actualHierarchy = this.toExpectation(rootURI, hierarchyBuilder); Assert.assertEquals(configuration.expectedHierarchy, actualHierarchy); }
public List<? extends Location> getReferences(final XtextResource resource, final int offset, final IReferenceFinder.IResourceAccess resourceAccess, final IResourceDescriptions indexData, final CancelIndicator cancelIndicator) { final EObject element = this._eObjectAtOffsetHelper.resolveElementAt(resource, offset); if ((element == null)) { return CollectionLiterals.<Location>emptyList(); } final ArrayList<Location> locations = CollectionLiterals.<Location>newArrayList(); final TargetURIs targetURIs = this.collectTargetURIs(element); final IAcceptor<IReferenceDescription> _function = (IReferenceDescription reference) -> { final Procedure1<EObject> _function_1 = (EObject obj) -> { final Location location = this._documentExtensions.newLocation(obj, reference.getEReference(), reference.getIndexInList()); if ((location != null)) { locations.add(location); } }; this.doRead(resourceAccess, reference.getSourceEObjectUri(), _function_1); }; ReferenceAcceptor _referenceAcceptor = new ReferenceAcceptor(this.resourceServiceProviderRegistry, _function); CancelIndicatorProgressMonitor _cancelIndicatorProgressMonitor = new CancelIndicatorProgressMonitor(cancelIndicator); this.referenceFinder.findAllReferences(targetURIs, resourceAccess, indexData, _referenceAcceptor, _cancelIndicatorProgressMonitor); return locations; }
final Resource xtextResource = resourceSet.getResource(resource.getURI(), true); if ((xtextResource instanceof XtextResource)) { final EObject element = this._eObjectAtOffsetHelper.resolveElementAt(((XtextResource)xtextResource), offset); if (((element == null) || element.eIsProxy())) { StringConcatenation _builder = new StringConcatenation();