如何在Eclipse插件样式表中导入资源?

时间:2013-12-08 15:27:27

标签: css eclipse eclipse-plugin

要创建Eclipse插件,我需要将一些资源导入/使用到样式表中。 所有必要的文件都驻留在插件包中,并且在最终的.jar中没有错误地正确构建。

我在插件包中有这个文件夹/文件:

> my.plugin.package.name
    > META-INF/
        > MANIFEST.MF
    > resources/
        > css/
            > base-stylesheet.css
            > win-stylesheet.css
            > linux-stylesheet.css
            > ...
        > images/
            > mytexture.png
            > ...
    > plugin.xml
    > ...
win-stylesheet.css 中的

我要导入 base-stylesheet.css 并使用 mytexture.png ,所以进入CSS我做:

@import url("base-stylesheet.css");
#elemId {
    background-image: url(../images/mytexture.png);
}

不幸的是,这些提供了 MalformedURLException ,我也注意到了:

  • 使用字符'或者没有任何内容来分隔url字符串会产生相同的错误;
  • 在将插件运行/调试到第二个Eclipse实例时,使用@import url("/base-stylesheet.css")@import url("./base-stylesheet.css")完全正常工作,但是当在Eclipse中安装插件jar时,静默失败并出现相同的错误;
  • 使用@import url("platform:/plugin/my.plugin.id/resources/css/base-stylesheet.css")@import url("platform://plugin/my.plugin.id/resources/css/base-stylesheet.css")其中my.plugin.id MANIFEST.MF 中指定的 Bundle-SymbolicName ,同样会产生同样的错误在运行/调试插件时以及在安装jar后使用它时。

我怀疑工作区目录会自动分配到platform:/plugin/org.eclipse.platform/

我该如何解决?

2 个答案:

答案 0 :(得分:2)

现有的Eclipse样式表只使用

@import url("base-stylesheet.css");

表示同一目录中的css。

对于资源,您可以在产品扩展点属性的applicationCSSResources属性中指定位置:

<extension
     id="product"
     point="org.eclipse.core.runtime.products">
  <product
        name="%product.name"
        application="org.eclipse.e4.ui.workbench.swt.E4Application">
      <property
           name="applicationCSSResources"
           value="platform:/plugin/my.plugin.package.name/images/">
      </property>

答案 1 :(得分:2)

来自Lars Vogel的博客文章“Import CSS files in Eclipse Luna M6”似乎暗示导入现在有效,这意味着您至少需要一个Eclipse 4.4 Luna M6。

不仅4.4 M6版本附带dark theme for the IDE,它还列出:

  

CSS包含

     

Eclipse的CSS文件现在可以通过@import url("platform:/plugin/Bundle-Symbolic-Name/path/file.extension");语句包含其他CSS文件   这样可以轻松重复使用现有样式表。

例如(沃格尔的帖子):

  

在您的RCP应用程序中,只用一条指令创建一个/css/default.css文件:

@import url(“platform:/plugin/org.eclipse.ui.themes/css/e4-dark.css”);
  

org.eclipse.ui.themes添加到您的RCP产品,并在applicationCSS扩展点中添加指向platform:/plugin/test/css/default.css的{​​{1}}媒体资源。

相关问题