当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

在Eclipse中去掉多余的UI组件的几个办法[Java编程]

赞助商链接



  本文“在Eclipse中去掉多余的UI组件的几个办法[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

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的官方定义大家可以谷歌一下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 + "/" + local-id构成.比方在插件my.example中扩大了 org.eclipse.ui.newWizards,id是mywizard,那么上面这个activityPatternBinding就会disable掉my.example的mywizard扩大,你在 GUI中就看不见这个 wizard了.pattern是支持正则表达式的,所以假若有"."的话需求用转义字符\.注意,这里的disable的意思并非说我把 mywizard这个扩大删掉了,而是屏蔽了它,mywizard仍旧在 ExtensionRegistry中.

3.用代码来动态掌握UI

办法2只是躲藏掉一些扩大,但是有一些需求并非简单的躲藏便可以了,我近来碰到的一个需求就是:有一个flag,只有当flag==1的时刻扩大是可见的,不然是不可见的,需求disable这个扩大.这时就必必要加一些代码才能实现了,还是以办法2中的mywizard为例:

IWorkbenchActivitySupport workbenchActivitySupport = PlatformUI.getWorkbench().getActivitySupport();
   IActivityManager activityManager = workbenchActivitySupport.getActivityManager();
   Set enabledActivityIds = new HashSet(activityManager.getEnabledActivityIds());
         if(flag==1)
   {
           if (enabledActivityIds.add("my.example.activity")) 
               workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);
   }
   else{
            if(enabledActivityIds.remove("my.example.activity"))
               workbenchActivitySupport.setEnabledActivityIds(enabledActivityIds);
   }

Activities可以是enable大概disable的,当你在plugin.xml中定义好了一个Activity,缺省它是disable 的,就是说activityPatternBinding 匹配的扩大是会被disable的,但你也可以把Activities设成enable的(在 plugin.xml大概用代码都可以设置),它匹配的扩大是可以正常利用的.

在上面的code sample中,我们通过activityManager.getEnabledActivityIds()得到全部enable的 Activities.假如flag==1,那my.example.activity 也应当被加入到enable Activities中,这样mywizard便可以显示在界面上,反之,就要在enable Activities中remove掉my.example.activity,它就变成

disable,会把mywizard躲藏.


  以上是“在Eclipse中去掉多余的UI组件的几个办法[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>在Eclipse中操作XMLBuddy开辟XML</b>
  • <b>在Eclipse中操纵ANT机动构建Web操纵</b>
  • <b>在Eclipse中成立新的重构功效</b>
  • 在Eclipse顶用SWT筹划界面
  • 在Eclipse中构建备忘单
  • 在Eclipse中去掉多余的UI组件的几个办法
  • 在Eclipse Galileo中轻松导航:快速找到所需内容
  • 在Eclipse上操纵XFire开辟WebService
  • 在Eclipse中轻松操纵Ant
  • 在Eclipse中开辟Apache Derby操纵程序
  • JSF在Eclipse和NetBeans操纵的对比
  • 在Eclipse顶用Java实现百灵报表(BIRT)的事件处理
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .