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
添加元素的詳細信息 –