void (@NotNull AnActionEvent e) { boolean plural = false; boolean enabled; boolean paths = false; DataContext dataContext = e.getDataContext(); Editor editor = CommonDataKeys.EDITOR.getData(dataContext); boolean fileWithDocument = editor != null && FileDocumentManager.getInstance().getFile(editor.getDocument()) != null; boolean calcQualifiedName = ActionPlaces.COPY_REFERENCE_POPUP.equals(e.getPlace()); try { List<PsiElement> elements = !fileWithDocument || calcQualifiedName ? getPsiElements(dataContext, editor) : null; if (fileWithDocument) { enabled = true; } else { enabled = !elements.isEmpty(); plural = elements.size() > 1; paths = ContainerUtil.and(elements, el -> el instanceof PsiFileSystemItem && getQualifiedNameFromProviders(el) == null); } if (calcQualifiedName) { e.getPresentation().putClientProperty(CopyPathProvider.QUALIFIED_NAME, getQualifiedName(editor, elements)); } } catch (IndexNotReadyException ex) { enabled = false; } e.getPresentation().setEnabled(enabled); if (ActionPlaces.isPopupPlace(e.getPlace())) { e.getPresentation().setVisible(enabled); } else { e.getPresentation().setVisible(true); } e.getPresentation().setText( paths ? plural ? IdeBundle.message("copy.relative.paths") : IdeBundle.message("copy.relative.path") : plural ? IdeBundle.message("copy.references") : IdeBundle.message("copy.reference")); if (paths) { e.getPresentation().setEnabledAndVisible(false); } }