class="MsoNormal" style="margin: 0cm 0cm 0pt;">使用Intellij IDEA的时候,用户可以根据自身需求定义所支持的语言和文件类型,下面我们就对这一过程进行详细的解释和说明。
?
1 定义语言
package com.simpleplugin; import com.intellij.lang.Language; public class SimpleLanguage extends Language { public static final SimpleLanguage INSTANCE = new SimpleLanguage(); private SimpleLanguage() { super("Simple"); } }
?
?
2 定义图标
将图标复制到com.simple.plugin.icons程序包中。
package com.simpleplugin; import com.intellij.openapi.util.IconLoader; import javax.swing.*; public class SimpleIcons { public static final Icon FILE = IconLoader.getIcon("/com/simpleplugin/icons/jar-gray.png"); }
?
?
3 定义文件类型
package com.simpleplugin; import com.intellij.openapi.fileTypes.LanguageFileType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; public class SimpleFileType extends LanguageFileType { public static final SimpleFileType INSTANCE = new SimpleFileType(); private SimpleFileType() { super(SimpleLanguage.INSTANCE); } @NotNull @Override public String getName() { return "Simple file"; } @NotNull @Override public String getDescription() { return "Simple language file"; } @NotNull @Override public String getDefaultExtension() { return "simple"; } @Nullable @Override public Icon getIcon() { return SimpleIcons.FILE; } }
?
?
4 定义一个文件类型
factory
package com.simpleplugin; import com.intellij.openapi.fileTypes.FileTypeConsumer; import com.intellij.openapi.fileTypes.FileTypeFactory; import org.jetbrains.annotations.NotNull; public class SimpleFileTypeFactory extends FileTypeFactory{ @Override public void createFileTypes(@NotNull FileTypeConsumer fileTypeConsumer) { fileTypeConsumer.consume(SimpleFileType.INSTANCE, "simple"); } }
?
?
5 注册文件类型
factory
<fileTypeFactory implementation="com.simpleplugin.SimpleFileTypeFactory"/>
?
?
6 运行项目
创建一个扩展名为.simple的文件,IntelliJ IDEA将自动将其与定义的语言联系起来。
?
?