Products 扩展点
参见:Eclipse官方文档 。
基于Eclipse平台定义产品的首选机制是org.eclipse.core.runtime.products扩展点。为此,插件只需声明其产品的名称和id,以及调用产品时应运行的应用程序扩展的id。这是Eclipse平台本身在定义Eclipse产品时使用的技术。以下是在org.eclipse.platform中找到的扩展定义:
<extension id="ide" point="org.eclipse.core.runtime.products">
<product name="%productName" application="org.eclipse.ui.ide.workbench" description="%productBlurb">
<property name="windowImages" value="eclipse.png,eclipse32.png"/>
<property name="aboutImage" value="eclipse_lg.png"/>
<property name="aboutText" value="%productBlurb"/>
<property name="appName" value="Eclipse"/>
<property name="preferenceCustomization" value="plugin_customization.ini"/>
</product>
</extension>
定义了一个产品扩展,其应用程序id为“org.eclipse.ui.ide.workbench". 这是插件定义的应用程序org.eclipse.ui.ide对org.eclipse.core.runtime.applications的扩展。
<extension
id="workbench"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="org.eclipse.ui.internal.ide.IDEApplication">
</run>
</application>
</extension>
此扩展定义的id与产品扩展的应用程序属性中引用的id相同。(当从其他插件引用应用程序id时,使用带有插件前缀的完全限定名。)使用此机制,单独的插件可以定义所有特定于产品的品牌,然后将现有插件的应用程序引用为产品启动时实际运行的应用程序。
除了应用程序之外,org.eclipse.core.runtime.products扩展描述用于配置产品品牌信息的产品自定义属性。此信息称为命名属性。让我们再看看平台插件的标记部分。
<property name="windowImages" value="eclipse.png,eclipse32.png"/>
<property name="aboutImage" value="eclipse_lg.png"/>
<property name="aboutText" value="%productBlurb"/>
<property name="appName" value="Eclipse"/>
<property name="preferenceCustomization" value="plugin_customization.ini"/>
在IProductConstants中定义了产品定制平台可能使用的属性名。有关这些属性及其值的完整描述,请参见javadoc。我们将在定制产品时进一步研究这些问题。
其他平台服务(如配置通用的 Welcome/Intro)也使用产品自定义属性。
org.eclipse.core.runtime.products扩展点说明
ID: org.eclipse.core.runtime.products
描述: 产品是品牌的Eclipse单元。产品扩展由希望定义一个或多个产品的插件提供。每个扩展必须有一个产品,因为扩展标识用于处理和标识产品。 产品扩展有两种可能的形式,静态的和动态的。静态产品扩展直接包含产品的所有相关信息。动态产品扩展标识一个类(IProductProvider),该类在查询时能够定义一个或多个产品。
配置标记:
<!ELEMENT extension ((product | provider))>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT product (property*)>
<!ATTLIST product
application CDATA #REQUIRED
name CDATA #REQUIRED
description CDATA #IMPLIED>
-
application - 当运行产品时候的默认应用。
-
name - 产品的可读名称。
-
description - 产品的可读描述。
<!ELEMENT property EMPTY> <!ATTLIST property name CDATA #REQUIRED value CDATA #REQUIRED>
-
name - 属性存储时候的键。
-
value - 属性存储时候的值。
<!ELEMENT provider (run)>
-
产品提供者详情。
<!ELEMENT run EMPTY> <!ATTLIST run class CDATA #REQUIRED>
-
class - 全路径名,实现org.eclipse.core.runtime.IProductProvider。
示例: 下面是一个静态产品声明的示例:
<extension id="coolProduct" point="org.eclipse.core.runtime.products">
<product name="%coolName" application="coolApplication" description="%coolDescription">
<property name="windowImages" value="window.gif"/>
<property name="aboutImage" value="image.gif"/>
<property name="aboutText" value="%aboutText"/>
<property name="appName" value="CoolApp"/>
<property name="welcomePage" value="$nl$/welcome.xml"/>
<property name="preferenceCustomization" value="plugin_customization.ini"/>
</product>
</extension>
下面是动态产品声明 (product provider) : 下面是一个应用声明:
<extension id="coolProvider" point="org.eclipse.core.runtime.products">
<provider>
<run class="com.example.productProvider"/>
</provider>
</extension>
API 信息: 这里提供的静态产品扩展在运行时由IProduct的实例表示。动态产品扩展必须标识IProductProvider的实现者。见org.eclipse.ui.branding.IProductConstants有关由Eclipse UI定义的品牌相关产品属性的详细信息。
产品属性——IProductConstants中定义支持的产品属性
名称 | 说明 |
---|---|
appName | 应用名称。 |
aboutText | About对话框中的产品说明文字。 |
aboutImage | About对话框中的产品说明图片。完整大小产品,如果不大于500x330像素则展示aboutText;一半大小产品,如果不大于250x330像素,则将说明文字展示在图片下方。 |
preferenceCustomization | 用于提供客户化的产品配置,内部值为格式为qualifier/key=value,其中qualifier指代bundle的id,key表示键,value表示值。 |
windowImages | 用于提供产品的不同大小下的图标。例如16x16,32x32等等。 |
welcomePage | 欢迎界面,基于XML格式,值相对于定义产品的bundle。在3.0后不再鼓励使用,而推荐通过org.eclipse.ui.intro扩展点的方式。 |
startupProgressRect | 相对于启动图片的左上角,用于提供进度条位置和大小。4个参数依次表示x,y,width,height。 |
startupMessageRect | 相对于启动图片的左上角,用于提供进度条消息位置和大小。4个参数依次表示x,y,width,height。 |
startupForegroundColor | 启动前景色。该前景色用于进度条中报告进度,应提供6位16进制数做作为颜色。 |
常用在preferenceCustomization文件中的配置
理论上,任何平台的相关配置,只要程序有支持,均可以自行配置。需要注意的是,这些配置的键前面一般带有插件id。初始透视图,往往在我们定义RCP产品的时候能够用到。
配置 | 说明 |
---|---|
org.eclipse.ui/SHOW_PROGRESS_ON_STARTUP = true | 表示启动的时候展示进度条。 |
org.eclipse.ui/defaultPerspectiveId = org.eclipse.ui.resourcePerspective | 用于表示第一次启动的时候默认的透视图ID为org.eclipse.ui.resourcePerspective,该透视图ID可以替换为用户自定义的透视图ID。 |
基本的产品启动配置
我使用的Eclipse版本为2019.12 Windows 64位版本,自定义产品基于feature构建,如下图所示的例子,在配置产品,加入一系列的feature,下图中红色方块部分为我自定义的feature,用户可以根据需要加入自己的。其他加入平台的功能部件如下:
在加入这些功能部件,并通过不断启动产品界面的debug测试,在自定义功能部件之中,加入缺失的部分插件。然后,需要配置这些插件默认的启动级别,可以采用下图所示的启动级别:
在完成以后,切换到Overview界面,点击Launch an Eclipse application in Debug mode,一般可以启动自定义的产品程序。