簡體   English   中英

IntelliJ IDEA插件:將源psi文件與軟件包結構中的圖標相關聯

[英]IntelliJ IDEA plugin: associating a source psi file with a icon in the package structure

我正在構建一個創意插件,該插件需要創建擴展名為“ .java”的源文件。 我已經創建了一個文件模板,並在JavaCreateTemplateInPackageAction<PsiElement>類的實現中使用了它。 在上述類的構造函數中,我用一個圖標調用了超類的構造函數(我之前使用IconLoader.getIcon加載了IconLoader.getIcon

protected JavaCreateTemplateInPackageAction(String text, String description, Icon icon, boolean inSourceOnly) {
    super(text, description, icon, inSourceOnly ? JavaModuleSourceRootTypes.SOURCES : null);
}

最后,我將實現作為操作注冊在plugin.xml中。 該代碼起到了用給​​定模板創建源文件的作用,但是問題出在包結構中,它沒有顯示給定的自定義圖標,而是顯示了Java類的默認圖標(字母'c')。 但是,右鍵單擊源包以創建源文件時,給定的圖標將出現在新菜單中。 有人可以幫我嗎? 謝謝。

PS:我嘗試更改文件擴展名而不是.java,但它仍然沒有顯示預期的圖標,而是顯示了Java的通用圖標(字母'j'圖標)

您在JavaCreateTemplateInPackageAction提供的圖標用於該操作。 可以使用IconProvider覆蓋項目視圖中的圖標,您可以使用plugin.xml<iconProvider>標記進行注冊:

<iconProvider implementation="org.intellij.plugins.ceylon.ide.presentation.CeylonIconProvider"/>

Java代碼:

public class CeylonIconProvider extends IconProvider {
    @Nullable
    @Override
    public Icon getIcon(@NotNull PsiElement element, int flags) {
        if (element instanceof CeylonFile) {
            return ...
        }

        if (element instanceof CeyLightClass) {
            ...
        }
        return null;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM