快速业务通道

在Eclipse中去掉多余的UI组件的几个方法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20

在Eclipse中去掉多余的UI组件的几个方法

时间:2011-01-21 BlogJava 小牛小虾

Eclipse的扩展机制是其一个重要特色,但随着Eclipse功能越做越强,插件越来越多,你会发现GUI上的图标越来越多,Menu,toolbar,context menu都被占满了,其实很多item并不是我们需要的,但是contribute这些item的插件我们是需要的,那怎么去掉它们扩展的那些菜单项呢?

1.在Plugin.xml中定制

这是最简单的办法,很多时候我们自己想写代码来去掉一些菜单项,但效果并不好.所以能在Plugin.xml中定制的,我们就 尽量写在plugin.xml里面.下面举一个右键菜单的例子:

扩展右键菜单需要扩展org.eclipse.ui.popupMenus扩展点,我们一般都在它下面new一个action,但这个action扩展之后不管在  任何界面都会出现,如果我们想在某些条件下隐藏掉它该怎么办?仔细观察下org.eclipse.ui.popupMenus扩展点,其实我们还可以新建 objectContribution扩展

<extension point="org.eclipse.ui.popupMenus">     <objectContribution              id="my.example.objectContribution"              nameFilter="*example*"              objectClass="java.io.File">           <action                 class="my.example.MyAction"                 id="my.example.MyAction"                 label="Exe"                 menubarPath="additional">           </action>        </objectContribution>      </extension>

objectContribution里面也包含一个action,但这个action在popupmenu里出现是有条件的:我们给它定义了一个 nameFilter, 只有当selection()的path中包含了"example"才会显示,否则这个action是不会出现在 popupmenu里的.这里的selection假设选中的是一个File,如果选中的是你自己写的类,那namefilter会在你的类的 toString方法里面找keyword.

2.使用Eclipse的Activities扩展

plugin.xml并不能解决所有问题,当我们实在没有办法在plugin.xml中限制某些extension的出现的时候,可以考虑使用 Eclipse的Activities.Activities的官方定义大家可以google一下eclipse的help.我个人的理解就是它可以和 perspective一样控制UI的显示,但是Perspective设计的太易于扩展了,假如Plugin A在perspective上扩展了一个UI,那么Plugin B在每次进入这个perspective的时候就一定可以看得见它,而且在Eclipse的扩展机制下,Plugin B是没有权利去删了Plugin A的contribution的(Eclipse的ExtensionRegistry倒是提供了一个removeExtension方法,但运行的时候会报错).在这样的情况下,Activities的价值就体现出来了,你只要给它一个Extension的id,它就可以帮你把这个Extension disable掉.例如:

<extension           point="org.eclipse.ui.activities">        <activity              id="my.example.activity"              name="WizardActivity">        </activity>        <activityPatternBinding              activityId="my.example.activity"              pattern="my\.example/mywizard">        </activityPatternBinding>   </extension>

比较重要的是activityPatternBinding中的pattern属性,它是由plugin id + &quo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号