SWT Win32 Extension寫到現(xiàn)在的狀況,在win32 natvie上面已經(jīng)沒(méi)有太多花樣了,常用的一些功能我都已經(jīng)做得差不多了,現(xiàn)在主要是做一些自定義的控件,就目前的進(jìn)度,還只是完成了Shell,Menu,ToolBar 3個(gè)部分,還有很多內(nèi)容可以慢慢完善。不過(guò)自從發(fā)布了自定義的菜單以后,SWT Win32 Extension的用戶群大增,也對(duì)我提出了更高的要求。不過(guò)現(xiàn)在的主要任務(wù)是實(shí)現(xiàn)功能,因此代碼的質(zhì)量上肯定是差了點(diǎn)。現(xiàn)有的接口都是我自己通過(guò)Example的需求來(lái)加的,以后等功能做的完善上,再將現(xiàn)有的架構(gòu)進(jìn)行較大的重構(gòu),我想應(yīng)該是一個(gè)不錯(cuò)的步驟。畢竟就我一個(gè)人做這個(gè)東西,還要兼職寫Example,Document,測(cè)試,網(wǎng)站維護(hù),雖然每天都在加班加點(diǎn),但還是感覺時(shí)間不夠用。每天都有用戶發(fā)郵件來(lái)催進(jìn)度,所以維護(hù)這個(gè)項(xiàng)目現(xiàn)在真的是讓我廢寢忘食了,但總體來(lái)說(shuō)還是物有所值,畢竟辛辛苦苦的努力,還是有所回報(bào)的。開源嘛,本來(lái)就是一種奉獻(xiàn)精神,回饋社會(huì),讓所有人都來(lái)分享自己的成果。
這些天一直忙著寫新的Feature,今天寫的差不多了,于是回過(guò)頭來(lái)整理Example。本來(lái)上個(gè)版本我就想接管Eclipse Native的菜單,不過(guò)沒(méi)能如愿,因?yàn)镋clipse的菜單都是LazyLoad的。今天又嘗試了一下,終于成功的實(shí)現(xiàn)了這個(gè)功能。做完了才知道其實(shí)很簡(jiǎn)單,所遇到的重重障礙只不過(guò)是因?yàn)樽约旱目蚣芾鲜潜某鲂碌腷ug。唉,自己測(cè)試自己開發(fā)的東西總是有盲點(diǎn)存在,實(shí)在是無(wú)能為力呀。
從本質(zhì)上來(lái)說(shuō),我自定義的菜單和標(biāo)準(zhǔn)菜單控件的代碼及事件上的實(shí)現(xiàn)基本一致,所以接管Eclipse原生的菜單并不是一件很難的事情,當(dāng)自定義的菜單接收到一個(gè)事件的時(shí)候,只需將這個(gè)事件轉(zhuǎn)發(fā)給Eclipse的原生菜單就好了,一切就是這么簡(jiǎn)單。重點(diǎn)就是Notify SWT.Selected 和 SWT.Show 事件,前者用來(lái)觸發(fā)Action的行為,后者用來(lái)觸發(fā)Eclipse原生菜單的LazyLoad。
截圖如下: