SelfElementInfo( @NotNull Project project, @Nullable ProperTextRange range, @NotNull AnchorTypeInfo info, @NotNull PsiFile containingFile, boolean forInjected) { myForInjected = forInjected; myType = info; myManager = (SmartPointerManagerImpl) SmartPointerManager.getInstance(project); myMarkerCache = myManager.getMarkerCache(containingFile.getViewProvider().getVirtualFile()); setRange(range); myMarkerCache.rangeChanged(); }
@Override @Nullable public Segment getRange() { if (hasRange()) { Document document = getDocumentToSynchronize(); if (document != null) { PsiDocumentManagerBase documentManager = myManager.getPsiDocumentManager(); List<DocumentEvent> events = documentManager.getEventsSinceCommit(document); if (!events.isEmpty()) { return myMarkerCache.getUpdatedRange( this, (FrozenDocument) documentManager.getLastCommittedDocument(document), events); } } } return calcPsiRange(); }
/** * Get the ClusterItem from a marker * * @param marker which you will obtain its ClusterItem * @return a ClusterItem from a marker or null if it does not exists */ public T getClusterItem(Marker marker) { return mMarkerCache.get(marker); }
/** * Get the marker from a ClusterItem * * @param clusterItem ClusterItem which you will obtain its marker * @return a marker from a ClusterItem or null if it does not exists */ public Marker getMarker(T clusterItem) { return mMarkerCache.get(clusterItem); }
@Override @NotNull public final VirtualFile getVirtualFile() { return myMarkerCache.getVirtualFile(); }