• 沒有找到結果。

4.2 平台專屬導引精靈

4.2.2 Java 導引精靈模型

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

39

最後圖 4.4 為利用 Xtext 建構而成的平台專屬的網頁應用程式導引精靈 Ecore 模 型。

圖 4.4:平台專屬的網頁應用程式導引精靈 Ecore 模型。

4.2.2 Java 導引精靈模型

Java 導引精靈程式主要是透過現有的 Java 導引精靈 API[22]來進行建構,執行方式與 一般 Java 應用程式相同。Java 導引精靈 API 是以 Swing 為基礎來進行導引精靈結構與 圖形使用者介面的描述,並且對於收集資料的讀取與儲存方式也與 Swing 元件進行結合,

使得導引精靈程式可以自動抓取 Swing 元件收集到的資料,並存入 Java 導引精靈 API 所預設的 map 資料結構中,藉此提高程式開發者對於讀取收集資料的便利性。最後對於 圖形使用者介面的排版,我們加入了 MigLayout[23]來取代原本 Swing 所提供的排版方 式,藉此增加排版的靈活性。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

40

圖 4.5:平台專屬的 Java 導引精靈超模型。

Java 導引精靈結構模型主要以 JWizard、JPage、JPageName、WidgetDeclaration 與 JComponentSet 五個類別進行定義,JWizard 為描述一個 Java 導引精靈的基本框架,在 JWizard 裡會包含一至多個用來進行資料收集的 JPage 導引精靈頁面,每一個 JPage 裡儲 存的是多個 JComponentSet 與 WidgetDeclaration 的集合。在此定義的 JComponentSet 主 要是用來收集在 JPage 上,描述一個資料收集問題所需的元件集合,所以 JComponentSet 裡 包 含 的 是 多 個 以 JComponent 作 為 父 類 別 的 使 用 者 介 面 元 件 集 合 。 接 著 在 JComponentSet 裡的使用者介面元件都必須進行宣告過後才可使用,但為了讓程式對於 宣告過的變數有比較大的使用彈性,使得有些使用者介面元件必須以全域變數的方式進 行宣告,所以 WidageDeclaration 的主要目的是用來收集必須宣告成全域變數的使用者 介面元件的名稱與宣告型態。最後是 JPage 之間連接關係的建立,每一個 JPage 的名稱 都必須以 JPageName 進行宣告並且是唯一的,接著 JWizard 會有順序的對每一個 JPageName 進行收集,當作是每一個 JPage 的執行順序。

Java 使用者介面元件

Java 使用者介面元件主要以 JComponent、JLabel、JTextField、JTextArea、ButtonGroup、

JRadioButton、JCheckBox、JComboBox、Item、Border 與 FileBrowser 十一個類別進行定義,

其中 JComponent 是定義一個 Java 使用者介面元件的父類別,因此除了 Item 類別之外 其餘的類別都必須繼承 JComponent。在此定義的使用者介面元件主要是用來具體呈現 Java 導引精靈頁面上進行資料收集的方法,並且以 Swing 裡常被使用到的元件為主,以 下將會介紹幾個我們定義的 Java 使用者介面元件類別:

JTextField:定義一個允許使用者進行編輯的單一行數文字區塊,區塊長度可以透過 JTextField 的屬性加以定義,此類別必須宣告成全域變數。

JTextArea:定義一個只允許進行無樣式文字編輯的多行文字區塊,區塊的大小可以 透過 JTextArea 的屬性加以定義,此類別必須宣告成全域變數。

JRadioButton:定義一個 radiobutton 的物件,提供使用者可以對此物件進行選取 或取消選取的選擇,此類別必須宣告成全域變數。

JCheckBox:定義一個 checkbox 的物件,提供使用者可以對此物件進行選取或取消 選取的選擇,此類別必須宣告成全域變數。

ButtonGroup:上述提到的 JRadioButton 與 JCheckBox 兩個類別,對於彼此之間是否 已被選取的互斥關係,並沒有做任何的規則限制,因此為了區別這兩個類別在我們 模型上的不同,我們使用 ButtonGroup 來進行選取限制的定義,ButtonGroup 主要用 來產生一個多重互斥的按鈕集合,在我們的模型裡以收集 JRadioButton 為主,目的 是希望 JRadioButton 集合只能選擇其中一個,無法重複進行選取,藉此與 JCheckBox 類別產生的集合作區別。

JComboBox:定義一個下拉式選單的框架,但在 JComboBox 裡的每一個選項都必須 再以 Item 類別進行個別的宣告,此類別必須宣告成全域變數。

Border:定義一個區域並繪製邊界將其包圍,主要用來收集 Swing 元件的集合,但 在我們的模型裡我們將他定義成一個用來收集相同性質 JComponentSet 的集合。

FileBrowser:與上述的幾個類別不同,此類別並不屬於 Swing 元件的任何一部份,

但 還 是 以 Swing 的 JButton 元 件 來 進 行設 計 , 主 要 功能 是 當使 用 者 觸 發 此 FileBrowser 的按鈕事件時,會即時產生一個文件瀏覽器供使用者進行檔案資料的選 擇。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

43

輔助方法

輔助方法主要以 JHelp 與 ErrorMsg 兩個類別進行定義,在 Java 導引精靈 API 裡對 於資料的驗證有一套自己的驗證機制存在,輔助方法是以此機制作為基礎進行建立,此 驗證機制包含了輔助訊息的提示、資料收集的驗證與判斷是否可以進行到下一個導引精 靈頁面。在我們的模型裡每一個 JComponentSet 都會包含一個 JHelp 類別,JHelp 裡包含 了建立驗證機制所需的內容與一至多個利用 ErrorMsg 類別定義的錯誤訊息,因此將導引 精靈頁面裡每一個 JHelp 集合起來,就可以建構一個完整的導引精靈頁面驗證機制。

最後圖 4.6 為利用 Xtext 建構而成的平台專屬的 Java 導引精靈 Ecore 模型。

圖 4.6:平台專屬的 Java 導引精靈 Ecore 模型。

Eclipse 導引精靈主要是利用 Eclipse 的 SWT(Standard Widget Toolkit) 與 JFace 來 進行建構。SWT 是由 IBM 所開發的圖形使用者介面元件資料庫,也是目前 Eclipse 平台 用來建構相關 Plug-ins 與 Eclipse RCP 應用程式的重要工具。JFace 是一種建立在 SWT 基礎上的 Java 應用程式框架,對於 JFace 的實作主要呈現的是一種獨立的視窗系統,

• org.eclipse.jface_3.7.0.jar

• org.eclipse.swt.win32.win32_x86_3.7.1.jar

• org.eclipse.core.commands_3.6.0.jar

• org.eclipse.equinox.common_3.6.0.jar

圖 4.7 為建構好的平台專屬的 Eclipse 導引精靈超模型,超模型主要分成三個部分 其中包含 Eclipse 導引精靈結構模型、Eclipse 使用者介面模型與輔助方法模型:

Eclipse 導引精靈結構

Eclipse 導引精靈結構主要以 EWizard、EPage、EPageName、Composite 與 WidgetDeclaration 五個類別進行定義,EWizard 為描述一個 Eclipse 導引精靈的基本框 架,EWizard 會包含一至多個用來進行資料收集的 EPage 導引精靈頁面,每一個 EPage 裡 會 包 含 多 個 C o m p o s i t e 與 W i d g e t D e c l a r a t i o n 的 集 合 。 在 此 定 義 的