2013-10-14 43 views
0

我按照this forum中的建议步骤操作,通过从org.eclipse.platform复制css和images文件夹来获取不同操作系统的CSS主题。Eclipse RCP CSS样式在导出后不起作用

当我从Eclipse启动它时工作正常,但当我导出产品文件(无论是从Eclipse还是通过Maven)时,根本没有CSS样式。

我检查了build.properties,并将css和images文件夹标记为导出,所以我不明白为什么它没有找到它们。

我上了3.x RCP工作软迁移到4.x的

<extension 
    id="liteproduct" 
    point="org.eclipse.core.runtime.products"> 
    <product 
     application="com.xyzide.rcp.application" 
     name="XYZ IDE"> 
    <property 
     name="applicationXMI" 
     value="com.xyzide.rcp/LegacyIDE.e4xmi"> 
    </property> 
    <property 
      name="cssTheme" 
      value="com.xyzide.ui.css.theme.e4_default"> 
    </property> 
    <property 
     name="applicationCSSResources" 
     value="platform:/plugin/com.xyzide.rcp/images/"> 
    </property> 
    </product> 

<extension 
point="org.eclipse.e4.ui.css.swt.theme"> 
    <theme 
     basestylesheeturi="css/e4_default.css" 
     id="com.xyzide.ui.css.theme.e4_default.noos" 
     label="Default Theme"> 
     </theme> 
    <theme 
     basestylesheeturi="css/e4_classic_winxp.css" 
     id="com.xyzide.ui.css.theme.e4_classic" 
     label="Classic"> 
    </theme> 
    <theme 
     basestylesheeturi="css/e4_default_gtk.css" 
     id="com.xyzide.ui.css.theme.e4_default" 
     label="GTK" 
     os="linux"> 
    </theme> 
    <theme 
     basestylesheeturi="css/e4_default_mac.css" 
     id="com.xyzide.ui.css.theme.e4_default" 
     label="Mac" 
     os="macosx"> 
    </theme> 
    <theme 
     basestylesheeturi="css/e4_default_win7.css" 
     id="com.xyzide.ui.css.theme.e4_default" 
     label="Windows 7" 
     os="win32" 
     os_version="6.1"> 
    </theme> 
    <theme 
     basestylesheeturi="css/e4_default_winxp_blu.css" 
     id="com.xyzide.ui.css.theme.e4_default" 
     label="Windows XP Blue" 
     os="win32"> 
    </theme> 
    <theme 
     basestylesheeturi="css/e4_default_winxp_olv.css" 
     id="com.xyzide.ui.css.theme.e4_default.xpolive" 
     label="Windows XP Olive" 
     os="win32"> 
    </theme> 
    <theme 
     basestylesheeturi="css/e4_classic_win7.css" 
     id="com.xyzide.ui.css.theme.e4_classic" 
     label="Windows 7 Classic" 
     os="win32" 
     os_version="6.1"> 
    </theme> 
    <theme 
     basestylesheeturi="css/e4_default_gtk.css" 
     id="com.xyzide.ui.css.theme.e4_default" 
     label="Solaris" 
     os="solaris"> 
    </theme> 
    <theme 
     basestylesheeturi="css/e4_default_gtk.css" 
     id="com.xyzide.ui.css.theme.e4_default" 
     label="AIX" 
     os="aix"> 
    </theme> 
    <theme 
     basestylesheeturi="css/e4_classic_winxp.css" 
     id="com.xyzide.ui.css.theme.e4_default" 
     label="HPUX" 
     os="hpux"> 
    </theme> 
</extension> 

我省略了从产品扩展,不相关的一些属性。

+0

你在定义产品的plugin.xml中有什么? –

+0

我已经用代码更新了这个问题。 – nbz

+1

plugin.xml看起来不错。检查导出的产品插件是否包含css目录。 –

回答

0

所以在greg-449的帮助下,我能够识别出当RCP被导出时,它需要将包含css和images文件夹的插件打包为一个目录。

添加以下到我的Manifest.MF

Eclipse-BundleShape: dir 

当我出口,造型工作的罚款。我至少在Windows上测试过它,它似乎没问题。还需要检查其他操作系统。

+2

我认为如果在'basestylesheeturi'值(至少这就是我所拥有的和它的工作原理)的开始处包含'platform:/ plugin/com.xyzide.rcp /',就可以在jar中工作。 –

+0

对不起,这可能是一个愚蠢的问题,但有什么原因,我想保持它作为一个罐子,而不是一个目录? – nbz

+0

你说得对!我怎么会这么愚蠢......我回头看看我的旧ApplicationCSS代码,这就是我如何拥有它。我想我刚刚使用这个代码直接论坛,并没有意识到。你可以发表你的评论作为答案,我会接受它。 – nbz

2

我认为如果在basestylesheeturi值的开始处包含platform:/plugin/com.xyzide.rcp/,这将在jar中工作。

使用jar使用少一点的空间,但我注意到Eclipse安装确实使用了一个目录(这可能只是为了更容易地访问这些文件)。 Eclipse有时会将jar扩展到它的缓存中,但我认为这不是为CSS和图像文件完成的。

+0

所以不幸的是,这似乎没有工作,我不得不恢复到目录设置。这可能与此有关 - http://www.eclipse.org/forums/index.php/t/457837/ – nbz

+0

可能。我不在我的样式表中使用CSS导入。 –

+0

我在所有的操作系​​统上测试过它,它只能用于一个目录中的软件包....对不起,我将不得不不接受你的答案,但我一定会投它! – nbz