進(jìn)一步深入Snippets。
在Script頭里面有一個(gè)DOM屬性,他確實(shí)是庫(kù)的引入功能。如DOM:http://download.eclipse.org/technology/dash/update/org.eclipse.eclipsemonkey.lang.javascript就是引入了在plug-in中org.eclipse.eclipsemonkey.lang.javascript_0.1.10.15171.jar中所包函的類庫(kù),他是DOM的一個(gè)擴(kuò)展,所以帶給了我們了一些內(nèi)置的變量來提高我們的開發(fā)效率,如:resources,views,io,editors。在Eclipse Monkey Example中,這些內(nèi)置變量出現(xiàn)的用法為
resources//資源對(duì)象
var files = resources.filesMatching(".*\\.java"); \\找到所有.java文件
views//視圖對(duì)象
var webView = views.getView("GooleWebView"); \\生成一個(gè)視圖
editors//編輯器對(duì)象
var editor = editores.activeEditor;\\得到一個(gè)活動(dòng)的編輯器
具體這些變量還有什么屬性和方法,我參考了在org.eclipse.eclipsemonkey.lang.javascript_0.1.10.15171中的原代碼,如resources類,找到org.eclipse.eclipsemonkey.lang.javascript_0.1.10.15171\src\org\eclipse\eclipsemonkey\lang\javascript\doms\resources下的Resources.java,可以發(fā)現(xiàn)類里面就對(duì)應(yīng)有一個(gè)filesMatching方法,而對(duì)于editores,在其構(gòu)造函數(shù)中找到如下代碼:
String[] names = new String[] {
//"open",
"toString"
};
this.defineFunctionProperties(names, Editors.class, PERMANENT | READONLY);
this.defineProperty("all", Editors.class, PERMANENT | READONLY);
this.defineProperty("activeEditor", Editors.class, PERMANENT | READONLY);
這就告訴我們這個(gè)變量里面,我們可以使用all,activeEditor屬性和toString方法。
另外在plugins\com.aptana.ide.scripting_0.2.8.15171\docs中,提供了部分的js的接口,里面有描述部份變量和對(duì)象的使用,如Editors.js,F(xiàn)ile.js,Global.js等。
在上一節(jié)中,我提到了一個(gè)問題就是在我編寫的打開程序所在的文件夾時(shí)候,只能打開aptana方式打開的視圖的文件,通過追查源碼,我發(fā)現(xiàn),aptana中提供的editor有css,html,js,php,xml這些編輯器類中都有提供了一個(gè)getFileContext()方法,而這是eclipse原來的視圖所不一定具有的,所以提示錯(cuò)誤為找不到getFileContext()方法。
Snippets是一個(gè)輔助工具,靈活簡(jiǎn)單,特別是在文本處理上能提供很好的幫助。但是他的功能還是受到局限,開發(fā)復(fù)雜的操作還是選用eclipse的plug-in功能為好。其待Snippets有很好的發(fā)展。