NetBeans 7.0中的「New Action」嚮導生成一個類,該類實現了ActionListener
接口並具有多個註釋。這些註釋將向此操作的引用放置在嚮導中指定的工具欄/菜單中。大部分內容在NetBeans wiki中進行了解釋,並按預期工作。NetBeans聲明式操作註冊與節點彈出式菜單
當我想要將這樣的動作添加到節點的上下文菜單時,就會出現問題。在此暴露操作意味着您必須從Node.getActions(..)方法返回您的操作的具體實例。這裏缺失的是我有一個ActionListener
與一些奇特的註釋,但相反,我需要一個Action
實例,這是由此偵聽器支持。當試圖填補這一空白,我偶然發現了一個博客post by Geertjan,這看起來有點相關,並導致了一個靜態方法,我添加到我的ActionListener
:
public static Action findAction() throws Exception {
final FileObject fo = FileUtil.getConfigFile(
"Actions/Tools/foo-bar-Action.instance");
final DataObject dob = DataObject.find(fo);
final InstanceCookie ic = dob.getLookup().lookup(InstanceCookie.class);
if (ic != null) {
final Object instance = ic.instanceCreate();
if (instance instanceof Action) {
return (Action) instance;
}
}
return null;
}
雖然這個工作,它肯定不是最美麗的一塊代碼與所有通過文件系統API和醜陋的行爲名稱字符串常量。這對我來說似乎非常脆弱。
所以我想知道什麼是讓我的嚮導生成的動作進入節點的上下文菜單的首選方式是什麼?如果這很重要,我想提一下,我的操作是上下文感知的(所以它需要啓用查找中的特定接口)。