Eclipse RCP:如何在文本编辑器中为选择创建弹出菜单?

时间:2015-04-20 11:59:29

标签: eclipse eclipse-plugin eclipse-rcp

使用Eclipse模板生成此示例,当我在项目资源管理器中选择文件时,该示例工作正常。但是,当我右键单击文本编辑器或甚至选择了一些文本时,我也希望它可用。

objectcontribution 中使用的 objectClass 是什么?

<extension point="org.eclipse.ui.popupMenus">
  <objectContribution
                      id="com.example.popup-cli.contribution1"
                      objectClass="org.eclipse.core.resources.IFile">
    <menu
          id="com.example.popup.menu1"
          label="New Submenu"
          path="additions">
      <separator
                 name="group1">
      </separator>
    </menu>
    <action
            class="com.example.popup.actions.NewAction"
            enablesFor="1"
            id="com.example.popup.newAction"
            label="New Action"
            menubarPath="com.example.popup.menu1/group1">
    </action>
  </objectContribution>
</extension>

2 个答案:

答案 0 :(得分:0)

使用org.eclipse.ui.menus扩展点,您可以使用activeEditorInput变量来测试当前编辑器输入(正在编辑的文件)。

例如:

<extension point="org.eclipse.ui.menus">
  <menuContribution
     locationURI="popup:#AbstractTextEditorRulerContext?after=QuickDiff.Toggle">
     <command
        commandId="org.eclipse.team.cvs.ui.showAnnotation"
        label="%ShowAnnotationAction.label"
        style="push">
        <visibleWhen
           checkEnabled="false">
           <with variable="activeEditorInput">
              <test
                 property="org.eclipse.team.internal.ccvs.ui.isManaged"
                 value="true">
              </test>
           </with>
        </visibleWhen>
     </command>
  </menuContribution>
</extension>

以上内容来自CVS插件

答案 1 :(得分:0)

我不确定这是否是理想的解决方案,但它确实有效,当我按下项目浏览器中的资源并在<中>时,它会使弹出菜单可见strong>编辑器,如果它与Project Explorer中的资源相关联。

这不完美,因为它仍然在非文本编辑器编辑器/视图中显示,但我可以忽略对这些情况的操作。如果有人提出改进建议,请发表评论。

&#13;
&#13;
<extension point="org.eclipse.core.expressions.definitions">
    <definition id="com.example.definitions.resourceDefinition">
       <adapt type="org.eclipse.core.resources.IResource"/>
    </definition>
</extension>
<extension point="org.eclipse.ui.menus">
    <menuContribution locationURI="popup:org.eclipse.ui.popup.any?after=additions">
        <command commandId="com.example.commands.myCommand">
            <visibleWhen checkEnabled="false">
                <or>
                    <with variable="activeEditorInput">
                        <reference definitionId="com.example.definitions.resourceDefinition"/>
                    </with>
                    <iterate>
                        <reference definitionId="com.example.definitions.resourceDefinition"/>
                    </iterate>
                </or>
            </visibleWhen>
        </command>
    <menuContribution>
</extension>
&#13;
&#13;
&#13;