zoukankan      html  css  js  c++  java
  • 右键菜单的过滤和启动(转载)

    一、添加右键菜单步骤: 

          1、扩展org.eclipse.ui.popupMenus扩展点

          2、添加一个objectContribution节点。其中的objectClass用于过滤对象,nameFilter用于条件匹配

          3、在objectContribution节点下添加menu节点。Menu节点下可添加separator节点,用于菜单下的菜单项分组

          4、在objectContribution节点下根据需要添加action。该action通常实现IObjectActionDelegate接口。 其中的menubarPath用于指定菜单项的路径(通常为:菜单id/seperator,无分组时seperatort可以为additions)

    二、action的过滤和启动

          菜单过滤:

                方法一:通过上面提到的objectClass和nameFilter来实现简单的菜单过滤

                方法二:菜单右键添加visibility节点,visibility包括了not, and和or逻辑表达式节点以及adapt等Boolean表达式节点

                  and节点只有下级子节点表达式都返回true才为true
                  not节点只有在下级节点返回false才为true
                  objectClass看上面的例子就知道了
                  objectState 比较选中的对象的状态是否指定的值

                  or节点只要下级节点中有一个为true就返回为true
                  pluginState节点对指定的插件的状态进行检测, 这里的状态有两种:installed或者actived

                 其中:objectState节点要求object对象必须实现IActionFilter接口或者能适配为IActionFilter, 然后调用testAttribute()方法来跟指定的name/value进行比对。如:对Resource来说, 它提供了下列属性让我们来进行比对
                 name,表示对文件名进行比对, 可使用*这种正则表达式
                 extension表示后缀名比对
                 path路径比对, 可使用*
                 readOnly只读比对
                 projectNature 对nature比对
                 persistentProperty 对选择的资源的持久属性进行比对, 如果他的值只是一个字符串,那么就对该资源已有的属性值拿出来进行比对, 如果是propertyName=propertyValue这种形式,那么先根据name从选择的对象中取出值,然后再跟指定的value进行比对
                 projectPersistentProperty 对选中对象所在工程的持久性属性进行比对
                 sessionProperty 对对象中对的session属性进行比对
                 projectSessionProperty 选中对象所在工程的session属性进行比对

         

          菜单项启动:

          方法一:action右键点击selection,用于指定什么时候启动操作

          方法二:action右键添加enablement节点,用法于visibility基本一致。例:

           

          <objectContribution objectClass="java.lang.Object" id="com.qualityeclipse.favorites.popupMenu">  

               <action label="Add to Favorites" tooltip="Add  to the Favorites view"   

                      class="com.qualityeclipse.favorites.actions.AddToFavoritesActionDelegate"   

                      menubarPath="additions"  

                      enablesFor="+"  

                      id="com.qualityeclipse.favorites.addToFavorites">  

                   <enablement>  

                      <and>  

                         <objectClass name="org.eclipse.core.resources.IResource"/>  

                         <objectState name="name" value="*.java"/>  

                      </and>  

                   </enablement>  

              </action>  

            </objectContribution>  

    转载自:

    http://blog.csdn.net/mwbin0219/article/details/4506816

  • 相关阅读:
    [Leetcode] Distinct Subsequences
    [Leetcode] Restore IP Addresses
    [Leetcode] Substring with Concatenation of All Words
    [Leetcode] Palindrome Partitioning II
    [Leetcode] Palindrome Partitioning
    [Leetcode] Maximal Rectangle
    [Jobdu] 题目1493:公约数
    [Leetcode] Merge k Sorted Lists
    [Leetcode] Gray Code
    opencv2-新特性及Mat
  • 原文地址:https://www.cnblogs.com/wuhenke/p/2423169.html
Copyright © 2011-2022 走看看