网上很多种教程教我们设置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,遇到此问题,没能解决,此处文字记录下来。 转载请注明版权。 |
Eclipse RCP Command的Handler设置不起作用?
最新推荐文章于 2020-07-03 19:12:22 发布