Scripting 使用者介面
平台 Scripting 外掛程式可讓您利用 JavaScript 開發各種工作台延伸項目。
提供的這個支援是使用 Rhino JavaScript 引擎。您可以使用
JavaScript 來提供下列資料給工作台:
- 動作 (actionSets)
-
編輯器
-
精靈(newWizards、exportWizards、importWizards)
- 蹦現功能表
-
喜好設定頁面
下列區段假設您熟悉 JavaScript、工作台延伸項目及 SWT。
概念
Script 在工作台內管理為一般專案檔。通常您建立一個別專案來包含您的 Script。提供專用編輯器來編輯 Script。
平台支援的 Script 有兩種類型:
-
批次 Script 使用 JavaScript 對各種工作台物件呼叫方法及操作結
果。
這些 Script 非常適合建立新的重複動作,它們不屬於基本工作台功能的一部份。
-
UI Script 類似具有 Script 型 UI 事件的從屬站端 HTML 頁面。
這些 Script 非常適合建立那些需要與使用者更詳細交談的 Script。
Script 寫出器透過一些表示為本端 JavaScript 變數的平台物件,取得工作台環境
的存取權。Script 也可使用 JavaScript 機能來建立 Java 物件及呼叫它們的方法
。
一旦建立含有 Script 的檔案後,便可透過喜好設定對話框向工作台登錄它(
視窗->喜好設定->Script)。
在喜好設定頁面展開這個項目,會顯示可 Script 的工作台延伸點清單。在喜好設定樹狀結構中選取延伸點,然後按喜好設定頁面中對應的新增按鈕
,將 Script 新增到每一個延伸點。
第一次登錄每一個 Script 後必須重
新啟動工作台。
一旦登錄後,便可修改及立刻執行 Script,而不需要重新啟動工作台。
從 Script 的所有主控台輸出,以及執行 Script 時偵測到的任何錯誤都會寫入
Script 主控台中。您可以新增 Script 主控台檢視畫面到其他任何視景,或從
Scripting 視景固定執行您的 Script(依預設包括主控台檢視畫面)。
Script 的限制
新增到工作台的 Script 只能存取下列外掛程式中定義的 API 方法:
- org.eclipse.core.runtime
- org.eclipse.core.boot
- org.eclipse.core.resources
- org.eclipse.ui
- org.eclipse.swt
- org.eclipse.scripting
未來的版次將會取消這個限制,使任何外掛程式皆可被 Script 化。
撰寫批次 Script
「批次」Script 就是呼叫平台物件的 API 方法及操作結果來使用平台物件的
JavaScript 陳述式集成。呈現給 Script 寫出器的三個平台物件:
-
工具箱 - 實作 org.eclipse.scripting.IToolkit
的公用程式物件。它提供基本工作區資源操作、提示及載入持續 Script 狀態的合適
方法。
-
外掛程式 - org.eclipse.core.runtime.Plugin
的預設實例。
它提供外掛程式方法的存取權。所有使用者 Script 執行為平台 Scripting 支援所
管理的單一外掛程式部份。
-
平台 - 具有對應於 org.eclipse.core.runtime.Platform
的方法之便利物件。它提供一般平台功能的存取權。
方法 toolkit.print(String) 用來將輸出寫入 Script 主控台。
除了預定的區域變數之外,JavaScript 語言可讓您建立 Java 物件及使用它們的
公開 API。JavaScript 內容 Packages 可作為此用途。下列
片段使用 Packages 內容來取得安裝 URL 和誇示點陣圖物件。
var install =
Packages.org.eclipse.core.boot.BootLoader.getInstallURL();
var splash = new Packages.java.net.URL(install,"splash.bmp");
撰寫使用者介面 Script
SWT 型使用者介面可透過平台 Scripting 支援建立。結果 Script 非常類似
從屬站端 HTML 頁面,但有一些異常狀況:
-
僅使用 HTML 元素和屬性的子集
-
結果 html 必須是形式完善的 xhtml
-
定義了許多「非 html」元素和屬性
Scripting 外掛程式提供 Scripting 編輯器。這個編輯器支援來源檢視和預
覽,顯示來源頁面執行時的展現方式。編輯器使用概要檢視畫面和內容檢視畫面,所以您應該在編輯 UI Script 時顯示這些檢視畫面。
UI Script 編輯器登錄為檔案類型 xhtml 的預設編輯器。
從範例中最容易瞭解 UI Script。有關特定技巧,請參閱
Scripting
範例。下列導覽圖說明 Script 中的可用元素,以及它們支援的屬性和事
件區塊。
主體
- 主體 - id、onload、onunload。定義 UI 定義的主體。
套表
- 套表 - id、onreset、onsubmit、title。定義主要
UI 群組(通常以分別的頁面展現)。
UI 元素
- 標籤 - id、value。此值為字串標籤。
- 輸入欄位 (<input type="text">) -
id、onblur、onchange、onfocus、onkeypress、value。定義
文字輸入欄位。
- 文字區 - id、onblur、onchange、onfocus、onkeypress。
定義文字區。
- 按鈕 (<input type="button">) - id
、onpush、value。定義按鈕。
- 圓鈕 (<input type="radio">) - id
、checked、onclick、value。定義圓鈕。
- 勾選框 (<input type="checkbox">) -
id、checked、onclick、value。定義勾選框。
- 組合框 (<select size="1">) -
id、onchange。定義組合框。
- 清單框 (<select size="3">) -
id、onchange。定義清單框。
- 影像 - id、source。允許影像位置作為使用者介面元素。
佈置控制項
Scripting
一般而言,所有 UI 元素皆可指定 id 屬性。這會定義相同名稱的區域
Script 變數。此 Script 可透過這些區域變數來操作 UI 元素。可用的方法
通常是那些 SWT 小組件的方法。
在 UI 元素群組間插入換行 <br /> 來啟動新佈置列,可最有效地執
行簡單 UI 佈置。Script 展現支援執行大部份簡單案例中足夠的預設佈置。
使用表格來控制 UI 元素位置,可達成更複雜的佈置。此外,個別的 UI 元素可
利用 <fieldset> 元素來分組(有效的 HTML,但不常用於網頁設計)。
實際 Script 函數本體使用 <script> 元素定義。當對應 UI 元素
(僅在 html 頁面中)的 "onXXX" 屬性(例如 onload
、onreset)內指定的呼叫結果產生,便會觸發這些函數。
以 UI Script 而言,toolkit 區域變數是 org.eclipse.scripting.IToolkitUI
介面的物件實例。它含有在呈現給批次 Script 的 toolkit 物件中不適用的
其他方法。
向工作台登錄 Script
一旦建立為工作台資源後,Script 便可使用工作台喜好設定對話框在適當的工作台
延伸點登錄。
Script 使用新增對話框來新增。此對話框提示下列資訊:
-
Script 的顯示名稱
-
Script 位置(作為工作台資源)
-
圖示(選用)
-
登錄為批次 Script 或 UI Script。某些延伸點允許其中之一。
-
登錄 Script 的副檔名。某些延伸點需要副檔名。
搭配使用 UI Scripting 與 Java
UI Scripting 機能支援 Java 作為它的 Scripting 語言,代替 JavaScript。
當 Java 作為 Scripting 語言時,您必須建立 org.eclipse.scripting.Renderer
的實例。
這個物件將用來展現 UI 且可與一或多個事件處理程式物件產生關聯,也是以 Java
撰寫。使用 render 的 addObject(String,Object) 方法來
新增事件處理程式。JavaScript 事件模型甚至可在透過 Java 來 Scripting 時
使用。如先前指定各種 "onXXX" 子句。
在這個案例中,它們實作為登錄事件處理程式上方法的反射回呼,而非「行內的」
JavaScript 函數呼叫。
明確使用 Script 配接器
我們已瞭解工作台使用者如何新增及管理 Script。Script 也可由外掛程式
提供為延伸項目。作法是指定 Script 配接器代替實作類別作為延伸項目定義
中的 class 屬性。配接器規格加入了要執行的實際 Script 名稱。
例如,下列 Scripting 範例 plugin.xml 中的標記提供動作集資料並
指定具有 Script 名稱的
ScriptAdapterWorkbenchAction
為 class。相關標記以粗體顯示。
<extension point = "org.eclipse.ui.actionSets">
<actionSet
id="scriptActionSet"
label="%S_Script_Examples"
visible="true">
...
<action id =
"scriptaction1"
menubarPath = "window/org_eclipse_scripting_examples/slot1"
toolbarPath = "%S_Script_Examples"
label
= "%S_Scripted_Action_Example"
tooltip
= "%S_Perform_Scripted_JavaScript_Action"
icon
= "icons/full/ctool16/script_scp.gif"
class=
"org.eclipse.scripting/org.eclipse.scripting.ScriptAdapterWorkbenchAction:file=platform:/plugin/org.eclipse.scripting.examples/excalibur.js
language=javascript">
</action>
...
標準 Script 配接器可直接參照為任何外掛程式的 plugin.xml 規格部份。
您可以在
org.eclipse.scripting
套件中找到支援的配接器清單。
Scripting
範例顯示這些配接器的其他用法。Script 範例外掛程式利用預先定義的
配接器實作每一個 Script 延伸項目。其他詳細資料,請參閱 plugin.xml 檔。
參照
org.eclipse.scripting
的「API 規格」含有關於 Scripting 支援的其餘資訊。
Scripting 範例也提供說明和用法資訊。如需進一步資訊,請參閱 Scripting
範例。
