java - Eclipse 插件弹出窗口的操作初始可用性

标签 java eclipse popup eclipse-kepler

我正在开发一个简单的 Eclipse 插件。我添加了一个弹出窗口作为扩展,并为其分配了一个 Action 类。除了在打开弹出窗口时第一次禁用该操作之外,一切正常。

我检查是否可以在selectionChanged方法中执行该操作。但在构造 MyAction 对象之前不能调用它。它仅在单击菜单按钮后执行(如果未满足先决条件,则应禁用它)。

遇到这样的问题怎么处理?在打开弹出窗口之前如何构造MyAction?

我在我的项目中附上了基本代码的示例(plugin.xml、MyAction.java):

<plugin>
   <extension
         point="org.eclipse.ui.popupMenus">
      <objectContribution
            id="action.contribution1"
            objectClass="myobject">
         <menu
            id="action.menu1"
            label="Menu"
            path="additions">
         </menu>
         <actionm
               class="action.popup.actions.MyAction"
               enablesFor="1"
               id="action.newAction"
               label="Play"
               menubarPath="action.menu1">
         </action>
      </objectContribution>
   </extension>
</plugin>
public class MyAction implements IObjectActionDelegate {
    public MyAction() {
        super();
    }

    public void setActivePart(IAction action, IWorkbenchPart targetPart) {}

    public void run(IAction action) {
        //some logic
    }

    @Override
    public void selectionChanged(IAction action, ISelection selection) {
        boolean enabled = false;

        //some logic concerning enabled variable

        action.setEnabled(enabled);
    }

}

最佳答案

setActivePart应该在菜单显示之前调用。您可以在其中设置操作启用。

您可以使用 <enablement> 指定操作的初始启用plugin.xml 中的元素,例如:

<action
     class="action.popup.actions.MyAction"
     enablesFor="1"
     id="action.newAction"
     label="Play"
     menubarPath="action.menu1">
   <enablement>
       <with variable="selection">
           ... tests
       </with>
    </enablement>
</action>

通过测试当前选择来设置启用。

注意:扩展点org.eclipse.ui.popupMenus现已弃用,您应该移至 org.eclipse.ui.menus扩展点。

关于java - Eclipse 插件弹出窗口的操作初始可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19745543/

相关文章:

popup - AppleScript 填写文本字段

java - JFrame.setBounds 不适用于小值

java - 如何在 ArrayList 之间移动项目? java

eclipse - 如何在 clojure 中开发 Eclipse 插件?

eclipse - 安装 Eclipse IDE 时出错

javascript - 如何在悬停事件上打开包含可点击内容的弹出窗口

java - 最近更新了R/RStudio,rJava无法加载。

java - 为什么在使用java命令调用程序时没有使用java Xmx选项?

eclipse - 配置 "serve modules without publishing"时出错

javascript - jQuery 只弹出一次