我有兩個單獨的視圖,都顯示多個值列表。兩種觀點都是同時開放的。Eclipse RCP命令框架:我迷路了
我有一個通用命令AddNewItemInList
,我想添加到兩個視圖的工具欄。該命令應該將新項目添加到當前具有焦點的列表中。如果用戶尚未選擇列表,則應禁用該命令。
我目前使用以下命令來執行該命令。
public class MyViewPart extends ViewPart {
[...]
public Object getAdapter(Class clazz) {
if(clazz.equals(List.class))
return getListInFocus(); // can be null if no list in focus
return null;
}
}
public class AddNewItemInList extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
MyList list = HandlerUtil.getActivePart(event).getAdapter(MyList.class);
list.add(new Item());
return null;
}
}
到目前爲止好,但我不知道如何啓用或禁用相應的處理程序。我已閱讀了關於Eclipse Core Commands框架。我很迷茫。
回答的問題: 我如何創建一個表達式,確定視圖的getAdapter()方法沒有返回null? - >回答如下
如何獲得配置了此命令的視圖(而不是當前活動的視圖)? - >我可以添加viewId爲命令參數
剩下的問題: 我應該配置兩個單獨的處理程序實例在我的plugin.xml(每個視圖)? - > enabledWhen條件只能使用當前的評估上下文。看來我不能使用該命令提供的任何參數。這意味着根據完整工作臺的狀態,可以啓用或禁用處理程序。
re:實際上,它是啓用或不是整個工作臺的命令,因爲在3.x中只有全局應用程序狀態。它是在3.x中設計的,我們試圖在4.x中修復它,因爲啓用是相對於上下文而不是該命令的全局狀態。 – 2012-02-06 18:33:51