Ho un formato XML personalizzato che si collega alle risorse Java. Per semplicità supponiamo che il mio file XML sarà simile a questa:Rendi IntelliJ consapevole dei collegamenti agli elementi Java nei file XML
<root>
<java-class>my.fully.qualified.class.name</java-class>
</root>
Alla fine i miei riferimenti sarà un po 'più complicato. Non conterrà direttamente il nome classe completo e avrò bisogno di una logica per risolvere la classe corretta, ma voglio mantenere l'esempio il più semplice possibile qui.
Ora voglio che sia possibile a Strg + Fare clic sul testo dell'elemento e voglio che IntelliJ mi porti nel file .java, proprio come è possibile nei file Spring-XML. Nel numero IDEA Plugin Development FAQ c'è un collegamento chiamato "How do I add custom references to Java elements in XML files?" che suona così esattamente come quello che mi serve. Sfortunatamente si collega a una discussione in cui qualcuno ha più o meno fatto implementare qualcosa di simile, avendo alcuni problemi minori. Tuttavia ho capito che probabilmente ho bisogno di scrivere un'implementazione dell'interfaccia com.intellij.psi.PsiReference. Googling per "PsiReference" e "IntelliJ" o "IDEA" sfortunatamente non ha portato alcun tutorial su come usarlo, ma ho trovato la classe XmlValueReference che sembra utile. Ancora una volta googling per "XmlValueReference" non ha rivelato nulla di utile su come utilizzare la classe. Almeno il PSI Cookbook mi dice che posso trovare la classe Java usando JavaPsiFacade.findClass()
. Sarei grato per qualsiasi tutorial, suggerimento e simili, che dica l'uso corretto.
La discussione sopra citata menziona che devo chiamare registry.registerReferenceProvider(XmlTag.class, provider)
per registrare il mio provider una volta che sono riuscito a implementarlo, ma di quale tipo è "registro" e da dove lo prendo?