以前在做Eclipse插件的時(shí)候,習(xí)慣一個(gè)功能定義一個(gè)操作項(xiàng)。比如說(shuō)在org.eclipse.ui.popupMenus擴(kuò)展點(diǎn)上,如果有添加這個(gè)功能,但是添加的類(lèi)型有多樣,我們假定現(xiàn)在有添加A、B、C、D四個(gè)元素,在擴(kuò)展點(diǎn)上添加一個(gè)viewerContribution擴(kuò)展,添加四個(gè)Action,分別為A、B、C、D。因?yàn)檫@四個(gè)添加功能非常相近,所以我們可以只寫(xiě)一個(gè)ActionDelegate,把這四個(gè)Action的代理類(lèi)都指向同一個(gè)。但是ID必須區(qū)分。聲明定義如下:
上面的主要區(qū)別是在id,在所有的代理ActionDelegate中的run(IAction action)方法中都帶有一個(gè)參數(shù)action,這個(gè)參數(shù)有個(gè)用途就是可以在運(yùn)行時(shí)區(qū)別是對(duì)應(yīng)的那個(gè)action。下面我們看一下AddTestDelegate類(lèi)的定義:
我們可以在運(yùn)行時(shí)通過(guò)action.getId()在識(shí)別是對(duì)應(yīng)的那個(gè)Action。 總結(jié):這個(gè)途徑可以為插件開(kāi)發(fā)中避免寫(xiě)過(guò)多的ActionDelegate,把一些功能較為接近實(shí)現(xiàn)代碼又比較少的操作合并在一起。當(dāng)然,對(duì)于操作步驟比較多的,為了代碼維護(hù)的方便,還是建議單獨(dú)為它定義一個(gè)代理。
Powered by: BlogJava Copyright © 寒武紀(jì)