SWT Win32 Extension寫到現在的狀況,在win32 natvie上面已經沒有太多花樣了,常用的一些功能我都已經做得差不多了,現在主要是做一些自定義的控件,就目前的進度,還只是完成了Shell,Menu,ToolBar 3個部分,還有很多內容可以慢慢完善。不過自從發布了自定義的菜單以后,SWT Win32 Extension的用戶群大增,也對我提出了更高的要求。不過現在的主要任務是實現功能,因此代碼的質量上肯定是差了點。現有的接口都是我自己通過Example的需求來加的,以后等功能做的完善上,再將現有的架構進行較大的重構,我想應該是一個不錯的步驟。畢竟就我一個人做這個東西,還要兼職寫Example,Document,測試,網站維護,雖然每天都在加班加點,但還是感覺時間不夠用。每天都有用戶發郵件來催進度,所以維護這個項目現在真的是讓我廢寢忘食了,但總體來說還是物有所值,畢竟辛辛苦苦的努力,還是有所回報的。開源嘛,本來就是一種奉獻精神,回饋社會,讓所有人都來分享自己的成果。
這些天一直忙著寫新的Feature,今天寫的差不多了,于是回過頭來整理Example。本來上個版本我就想接管Eclipse Native的菜單,不過沒能如愿,因為Eclipse的菜單都是LazyLoad的。今天又嘗試了一下,終于成功的實現了這個功能。做完了才知道其實很簡單,所遇到的重重障礙只不過是因為自己的框架老是蹦出新的bug。唉,自己測試自己開發的東西總是有盲點存在,實在是無能為力呀。
從本質上來說,我自定義的菜單和標準菜單控件的代碼及事件上的實現基本一致,所以接管Eclipse原生的菜單并不是一件很難的事情,當自定義的菜單接收到一個事件的時候,只需將這個事件轉發給Eclipse的原生菜單就好了,一切就是這么簡單。重點就是Notify SWT.Selected 和 SWT.Show 事件,前者用來觸發Action的行為,后者用來觸發Eclipse原生菜單的LazyLoad。
截圖如下: