开放主题元数据

走着路睡觉大约 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

上次编辑于:
贡献者: zhaojingbo
Loading...