隨著Eclipse的發展,很多Java項目都將告別無介面、靠ant打天下的局面,開始擁有自己美觀易用的介面。( 當然,輕便通用的ant還是應該支援。) 我覺得最典型的就是AndroMDA了,全靠build.xml和一堆設定檔產生那麼多東西,多累啊。
沒寫過Eclipse外掛程式也沒寫過SWT應用,趁這機會小試了一把。My Code產生外掛程式的需求是:
1.外掛程式讀取存放中繼資料的model.xml檔案,產生一個ListView
2.使用者從ListView中選擇要產生代碼的Domain Object,外掛程式彈出一個產生選項的對話方塊
3.使用者在對話方塊中輸入產生選項後,外掛程式進行代碼產生。
這個外掛程式很簡單,幾乎不用啃什麼書,按照CookBook來就行了。
1.file->new->plug-in development->plug-in project
2.選擇plug-in with a view作模版,產生預設代碼
3.修改xxxView.java的ViewContentProvider類的getElements()函數,該函數返回一個String[],負責產生View中對象。
4.在xxxView.java中的makeActions函數中,修改action1的run()函數,這是幹活的主要函數
5.隨便拿個sample,抄一個Dialog的例子出來。雖然有VE和SWT -Designer,但我的對話方塊比較簡單,直接編輯源碼了事。
6.繼續修改action1的run函數,開啟Dialog,並根據Dialog的傳回值產生代碼。
感想:
1. 寫Eclipse外掛程式很簡單,SWT也比原來的想象容易一點。
2. 寫一個架構超好的架構-- 使用者只需編寫最重要的代碼,其他全部由系統預設完成;而在需要改變預設做法的時候,又總能找到擴充的介面--是如此困難,因此無論 MS的VC還是 Eclipse,都需要代碼產生Wizzard來產生大量的輔助代碼。不過微軟的Visual Studio經常提供另一層次的編程介面,不需要直接改源碼,而Eclipse只在開始根據模版產生一次代碼,其他就要自己直接改源碼。
3.SWT/SWing基於匿名內部類的callback機制,還不如MS 下MFC的magic宏爽。