0
我正在开发一个简单的Eclipse插件。我添加了一个弹出式窗口作为扩展,并为其分配了一个Action类。一切正常,除非在第一次打开弹出窗口时禁用该操作。Eclipse插件弹出窗口的动作初始可用性
我检查动作是否可以在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在第一次没有被调用。因此我不能在MyAction对象中进行第一次验证和设置启用。 – Zacateras
添加元素的详细信息 –