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。
截图如下: