【Eclipse plug-in】 org.eclipse.ui.activities 的应用

【Eclipse plug-in】 org.eclipse.ui.activities 的使用

整理一下org.eclipse.ui.activities的使用

 

扩展点的定义

org.eclipse.ui.activities的定义位于org.eclipse.ui插件中,具体见

 

 

 <extension-point id="activities" name="%ExtPoint.activities" schema="schema/activities.exsd"/>
  

 

扩展点的概述

Eclipse API 写道
The org.eclipse.ui.activities extension point is used to declare activities and associated elements. Activities are used by the platform to filter certain plugin contributions from the users view until such a time that they express interest in them. This allows Eclipse to grow dynamically based on the usage pattern of a user.

 

 

看Eclipse API的描述,这个扩展点是用来声明activity的,至于activity是干什么的,这里也说不太清楚,我一般用来进行过滤插件、菜单、视图等。

 

比如一个RCP程序中,引入了一些Eclipse下面的插件,于是就多出来许多相关的菜单,尤其是工具栏菜单,在不改动代码的情况下,我们可以采用这个扩展点过滤掉它们。

 

 

扩展点的使用

这里先看看Eclipse是如何使用这个扩展点的,下面的代码位于org.eclipse.equinox.p2.ui.sdk中

 

 

   <extension
         point="org.eclipse.ui.activities">
      <activity
            description="%classicCategoryDesc"
            id="org.eclipse.equinox.p2.ui.sdk.classicUpdate"
            name="%classicCategoryName">
      </activity>
      <activityPatternBinding
            activityId="org.eclipse.equinox.p2.ui.sdk.classicUpdate"
            isEqualityPattern="false"
            pattern=".*org\.eclipse\.update\.internal.*">
      </activityPatternBinding>
      <activityPatternBinding
            activityId="org.eclipse.equinox.p2.ui.sdk.classicUpdate"
            isEqualityPattern="false"
            pattern=".*org\.eclipse\.ui\.update.*">
      </activityPatternBinding>
      <category
            description="%classicCategoryDesc"
            id="org.eclipse.equinox.p2.ui.sdk.category.classicUpdate"
            name="%classicCategoryName">
      </category>
      <categoryActivityBinding
            activityId="org.eclipse.equinox.p2.ui.sdk.classicUpdate"
            categoryId="org.eclipse.equinox.p2.ui.sdk.category.classicUpdate">
      </categoryActivityBinding>
   </extension>
 

 

主要就是用来屏蔽旧的update机制下的一些视图 菜单等。

 

示例

下面来一个示例

 

场景:在RCP中引入了org.eclipse.ui.ide插件以后,首选项里面就会多出来General这一个首选项,下面有很多首选项页面。这些页面都是跟RCP本身无关的。这里就考虑使用 org.eclipse.ui.activities 过滤掉它们。

 

 

   <extension
         point="org.eclipse.ui.activities">
          <activity
            id="org.salever.rcp.demo.preference.activity"
            name="prefFilter">
      </activity>
      <activityPatternBinding
            activityId="org.salever.rcp.demo.preference.activity"
            isEqualityPattern="false"
            pattern=".*org\.eclipse\.ui\.preferencePages.*"><!-- 这里是关键-->
      </activityPatternBinding>

 

 

其中

 

 

 pattern=".*org\.eclipse\.ui\.preferencePages.*"

 

是关键,这里的pattern就是用来过滤的,定义一定要准确,否则将无法起作用。

 

其他的过滤,依此类推就行了,不赘述了。

1 楼 wwang1234 2012-02-08  
salever兄,小弟是看你的Eclipse插件入门开始工作的,非常感谢你的充沛精力和热心
在这里有个问题。我的尝试失败了,下面这段代码可以加进自己的插件plugin.xml中么
plugin.xml中除了这段代码外,还需别的代码不呢?
   <extension
         point="org.eclipse.ui.activities">
          <activity
2 楼 wwang1234 2012-02-08  
salever兄,小弟是看你的Eclipse插件入门开始工作的
首先,非常感谢你的充沛精力和热心
我的尝试失败了,下面这段代码可以加进自己的插件plugin.xml中么
plugin.xml中除了这段代码外,还需别的代码不呢?
   <extension
         point="org.eclipse.ui.activities">
      
3 楼 wwang1234 2012-02-08  
salever兄,小弟是看你的Eclipse插件入门开始工作的
首先,非常感谢你的充沛精力和热心
4 楼 wwang1234 2012-02-08  
原来评论成功了,我还傻傻重试
5 楼 salever 2012-02-16  
wwang1234 写道
原来评论成功了,我还傻傻重试


这一段是完整的实现,
<extension 
      point="org.eclipse.ui.activities"> 
       <activity 
         id="org.salever.rcp.demo.preference.activity" 
         name="prefFilter"> 
   </activity> 
   <activityPatternBinding 
         activityId="org.salever.rcp.demo.preference.activity" 
         isEqualityPattern="false" 
         pattern=".*org\.eclipse\.ui\.preferencePages.*"><!-- 这里是关键--> 
   </activityPatternBinding> 
</extension>