I am adding reference navigation using a reference navigation contributor, where I register my reference providers for framework-specific elements via the component registrar. Here are some examples:
Registration:
<psi.referenceContributor language="XML" implementation="XXXReferenceContributor"/>
Contributor:
...
class XXXReferenceContributor : PsiReferenceContributor() {
override fun registerReferenceProviders(registrar: PsiReferenceRegistrar) {
// <block name="XXX">
registrar.registerReferenceProvider(
XmlPatterns.xmlAttributeValue(
XmlPatterns.xmlAttribute("name").withParent(
XmlPatterns.xmlTag().withName("block")
)
).inFile(
PlatformPatterns.psiFile(XmlFile::class.java)
),
LayoutBlockReferencesProvider()
)
}
}
Provider:
...
class LayoutBlockReferencesProvider : PsiReferenceProvider() {
override fun getReferencesByElement(element: PsiElement, context: ProcessingContext): Array<PsiReference> {
...
return references.toTypedArray()
}
}
Problem:
In some cases, I have more than 20 navigation targets. I want to add an “Open in Find Tool Window” button to the navigation popup that displays the target results. However, I am unable to find where and how to implement this functionality.