我正在开发一个简单的 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);
}
}