Eclipse RCP Command的Handler设置不起作用?

网上很多种教程教我们设置Command的Handler从而可以有效的控制Command的使用状态,比如只针对某种类型文件启用Command等。

但当我们按教程上一步步试用时,却看不到期望的效果,command总是一直出现,不能随着Handler的设置而变化。如以下的Handler:

<extension        point="org.eclipse.ui.handlers">

      <handler          class="test.TestCommand"   commandId="test.command ">

         <activeWhen>

            <iterate>

               <adapt                     type="org.eclipse.core.resources.IResource">

                  <test                        property="org.eclipse.core.resources.name"                        value="*.java">

                  </test>

               </adapt>

            </iterate>

         </activeWhen>

      </handler>

理论上来说,它是只当我们选中java文件时,test.command命令才会起作用。但当我们测试运行时,command一直正常使用。

解决方法:将test.command的扩展处,将其defaultHandler内容删除。如下所示:

<extension         point="org.eclipse.ui.commands">

      <command            id="test.command "            name="Test">

      </command>

   </extension>

回过头来,我们可以理解到:如果此处定义 了defaultHandler,系统会将这个做为默认的Handler来处理,而不会执行到我们定义的Handler,因此从这里我们可以看出,sorg.eclipse.ui.handler实际上就是一层过滤器,当我们没有定义Command的defaultHandler时,会默认去寻找其它地方定义(org.eclipse.ui.handlers)里的内容,正因为这样,我们定义的这些规则也在这里起了作用。

刚接触RCP,遇到此问题,没能解决,此处文字记录下来。

转载请注明版权。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值