开放主题元数据
大约 1 分钟
开放主题元数据
自定义UI主题 时所使用的key必须在***.themeMetadata.json** 文件中定义,并在 /resources/META-INF/plugin.xml里注册为 com.intellij.themeMetadataProvider 类型的扩展点
/resources/META-INF/plugin.xml 配置如下:
<idea-plugin>
<extensions defaultExtensionNs="com.intellij">
<themeMetadataProvider path="/META-INF/MyPlugin.themeMetadata.json"/>
</extensions>
</idea-plugin>
/resources/META-INF/MyPlugin.themeMetadata.json 配置如下:
{
"name": "My Plugin", //名称
"fixed": false, //默认false,如果元数据描述外部元素,则可设置为true (如 UI library)
"ui": [ //所有的自定义key
{
"key": "MyComponent.border", //key
"description": "The border for my component. Not used anymore.", //描述,建议配置
"deprecated": true, //是否过期,如果设置为true,建议在description中描述原因及提供替代方案,
//如果一个key无效了,不要轻易删除,可以设置deprecated为true
"source": "com.example.MyComponent", //ui组件的实现类
"since": "2019.2" //公开此key时IDE的版本,早于这个版本的IDE都能使用该key
},
{
[more keys...]
}
]
}
颜色的key可以使用 JBColor.namedColor() 定义
private static final Color SECTION_HEADER_FOREGROUND = JBColor.namedColor(
"Plugins.SectionHeader.foreground",
new JBColor(0x787878, 0x999999));
其他key可以通过 javax.swing.UIManager#getXXX() 方法获取
key的命名格式
所有的key都要符合命名格式: Object[.SubObject].[state][Part]Property ([.SubObject].[state][Part] 为可选)
属性
属性 | 作用 | 示例 |
---|---|---|
foreground | 文本颜色 | Label.foreground |
background | 包含文本对象的背景颜色 | Label.background |
<part>Color | 具有单一颜色的对象(没有foreground/background)。不要单独使用“Color”属性,需要与“part”一起使用 | Popup.borderColor Group.separatorColor |
状态
详情可以查看原文档 https://plugins.jetbrains.com/docs/intellij/themes-metadata.html
Loading...