我有一種鏈接到Java資源的自定義XML格式。爲了簡單起見,我們假設我的XML文件如下所示:使IntelliJ知道指向XML文件中Java元素的鏈接
<root>
<java-class>my.fully.qualified.class.name</java-class>
</root>
最終,我的引用會稍微複雜一些。它不會直接包含完全限定的類名,而且我需要一些邏輯來解決正確的類,但是我希望在此儘可能簡化示例。
現在我希望它可以Strg +單擊元素的文本,並希望IntelliJ將我帶到.java文件,就像在Spring-XML文件中可能。在IDEA Plugin Development FAQ有一個名爲「How do I add custom references to Java elements in XML files?」的鏈接,這聽起來很像我所需要的。不幸的是,它引發了一個討論,在這個討論中,某個人或多或少地做了這樣的事情,並且有一些小問題。不過,我明白我可能需要編寫一個接口com.intellij.psi.PsiReference的實現。不幸的是,搜索「PsiReference」和「IntelliJ」或「IDEA」沒有提供關於如何使用它的任何教程,但是我發現類XmlValueReference聽起來很有用。然而,再次搜索「XmlValueReference」並沒有發現任何有關如何使用該類的有用信息。至少PSI Cookbook告訴我,我可以通過使用JavaPsiFacade.findClass()
找到Java類。我會很感激任何教程,提示等等,它們會告訴我們正確的用法。
上面的鏈接討論提到,我需要調用registry.registerReferenceProvider(XmlTag.class, provider)
爲了註冊我的提供者,一旦我最終設法實現它,但哪種類型是「註冊表」,我從哪裏得到它?