在進行RCP開發的時候,有一個可視化編輯器,當然可以起到事半功倍的效果。對於進銷存管理系統這 樣簡單的程序來說,視圖加對話框就可以搞定所有的程序功能,然而對於視圖和對話框中的控件,如果沒 有可視化編輯器的幫助,足以讓開發者焦頭爛額。然而選擇可視化編輯器的道路卻坎坷曲折,我在這裡把 我的經歷寫出來,希望對大家有一點幫助。
先來說說VE,我想大家一想到可視化編輯器的時候,第一個就會想到VE。我在這裡告訴大家,這個編 輯器你們根本不用考慮,不用浪費時間在它上面。為什麼這麼說呢?第一,這個編輯器的官方版本還是 2007年1月30日發布的1.2.3_jem版,這個版本只支持Eclipse3.2,不支持3.4。當然還有一個非官方的1.4 版可以用,它的安裝地址為http://update.soyatec.org/Ganymede/ve/1.4,可以通過Eclispe的Update功 能進行安裝。然而,這個1.4版的表現比1.2.3版還要差,它居然在編輯ViewPart的時候會出錯,編輯 Dialog倒是沒有什麼問題,不過實在是很不好用,改個布局都難。
所以我覺得大家首選的考慮對象應該還是SWT-Designer,不過要錢,而且很貴,是239美元,如果是 239元人民幣,我會毫不猶豫地買下來,但是是美元,那就另當別論了。不過如果是專做RCP開發的公司, 可以考慮,不過我想大部分做RCP開發的,都應該是我們這樣的玩票吧。對於我來講,基本上就是能不花 錢就不花錢,先不注冊和激活,用起來吧,雖然只有三天時間,但是三天後刪掉用戶目錄下的 Instantiations.license文件,又可以從頭再來了。
不過別高興得太早,免費版本居然有功能限制。比如說,想創建一個對話框,創建不了。但是我發現 ,如果我手動寫一個對話框的代碼,卻可以用SWT-Designer編輯,對於Eclispe自動生成的View類,也可 以編輯。這功能對我來說,已經足夠了。
並不是你隨便寫個對話框類都可以用SWT-Designer編輯的,要想它能夠被可視化編輯器解析,對話框 類必須具備如下的形式:
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
public class LoginDialog extends Dialog {
protected Shell shell;
private int result;
public LoginDialog(Shell parent, int style) {
super(parent, style);
}
public LoginDialog(Shell parent) {
super(parent);
}
public int open(){
createContents();
return result;
}
protected void createContents(){
//注意下面這一行創建Shell時的參數,想一想我前面講的模式對話框的概念
shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
}
}
如果我們在這個對話框中自己處理事件循環,就更完美了,代碼如下:
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class LoginDialog extends Dialog {
protected Shell shell;
private int result;
public LoginDialog(Shell parent, int style) {
super(parent, style);
}
public LoginDialog(Shell parent) {
super(parent);
}
public int open() {
createContents();
Display display = getParent().getDisplay();
//注意下面這幾行,想一想我前面講的事件循環的概念
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
return result;
}
protected void createContents(){
//注意下面這一行創建Shell時的參數,想一想我前面講的模式對話框的概念
shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
}
}
雖然我們不能用JFace裡面的Dialog類,只能用swt.widgets裡面的Dialog類,但是已經滿足了。剩下 的功能,就全部交給可視化編輯器了,如下圖:
也就是說,只要我們探索出什麼樣的源代碼可以被可是化編輯器分析並編輯,我們就可以省掉幾百美 元的注冊費。目前在網上,有人致力於SWT-Designer的破解,但是對於最新的7.0版,還是沒有破解的資 料,再說,公然使用盜版也是不對的。
只要不嫌麻煩肯發送郵件,獲取一個Evaluate版用用也是不錯的,該版本沒有任何功能限制,但是只 有十四天的時間,十四天以後,想再用就不可能了,除非你換一台機器,因為你激活的時候那邊已經把你 的機器信息記錄下來了。下面看看Evaluate版的截圖,所有的控件都是可用的,沒有灰色按鈕,而且創建 對話框的向導也是可以用的:
十四天以後怎麼辦?這是一個問題。所以,如果免費的版本能夠滿足我們的要求,就盡量用免費的吧 ,怎麼說它比VE要強多了。