- Core:非UI的共同類別。
- WTK:使用者介面(user interface development)相關類別,包括:windows dialogs buttons lists textinput layout drag and drop等等。
- Web:和遠端服務(RestFul web service soap json)進行連線相關類別。
- Charts:可以在Pivot應用程式中建立互動式圖表功能的類別。
以下將分別介紹各類別中的函式庫:
Core -- pivot-core-[version].jar
- org.apache.pivot.beans:可以和Java beans進行互動的類別。
- org.apache.pivot.collections:提供UI元件資料來源的集合物件。
- org.apache.pivot.collections.adapter:實作集合的類別。
- org.apache.pivot.collections.concurrent:支援thread-safe的集合類別。
- org.apache.pivot.collections.immutable:唯讀的集合類別。
- org.apache.pivot.io:input/output操作。
- org.apache.pivot.json:操作JSON資料。
- org.apache.pivot.serialization:資料序列化。
- org.apache.pivot.sql:操作SQL資料
- org.apache.pivot.text:操作text。
- org.apache.pivot.util:相關工具類別。
- org.apache.pivot.util.concurrent:執行背景工作。
- org.apache.pivot.xml:操作XML資料。
WTK -- pivot-wtk-[version].jar
- org.apache.pivot.wtk:定義WTK使用者介面的相關架構及行為。
- org.apache.pivot.wtk.content:用來表示元件所屬的資料,例如list items或是table rows。
- org.apache.pivot.wtk.effects:視覺效果。
- org.apache.pivot.wtk.effects.easing:用來產生natural-looking的轉換效果。
- org.apache.pivot.wtk.media:媒體來源。
- org.apache.pivot.wtk.skin:佈景主題相關或獨立的skin(外表)。
- org.apache.pivot.wtk.text:Text物件模式。
- org.apache.pivot.wtk.text.validation:驗證使用者輸入的文字。
- org.apache.pivot.wtk.skin.terra:預設的terra佈照主題(pivot-wtk-terra-[version].jar)。
Web
- org.apache.pivot.web:得以和http-based web service通訊的類別(pivot-web-[version].jar)。
- org.apache.pivot.web.server:存取並開發web query服務(pivot-web-server-[version].jar)。
Charts -- pivot-charts-[version].jar
- org.apache.pivot.charts:相關圖表類別。
- org.apache.pivot.charts.content:圖表的資料。
Architecture(架構)
WTK是以MVC架構為基礎,它的資料模式(Model)主要是由collections中所定義的類別來描述(主要是org.apache.pivot.collections.List及org.apache.pivot.collections.Map),並且以WTK元件當做是Controller,最得使用者會透過WTK元件的skin(View)來和Pivot應用程式進行互動。
因為WTK元件並不具備視覺化的呈現方式,因此在skin中定義了元件的真正視覺化呈現方式,skin也定義了元件如何回應使用者的輸入動作(包含鍵盤及滑鼠)。skin採用了類似於CSS的設定方法,吾人可以設定自己元件的外顯方式毋須重新撰寫自己的skin類別。目前Apache Pivot內建了一個terra佈景主題。
Class Hierarchy
下圖呈現的是WTK元件的類別階層圖。
window的類別
- Window:基礎的視窗類別,它可以放入各種WTK元件。
- Frame:具有標題列及邊框的視窗。
- Dialog:可以取得使用者輸入的視窗,可設定成是否具備獨占(modal)功能。
- Alert:提示使用者訊息的視窗。
- Sheet:獨立式視窗,一定要有母視窗(owner)。
- Prompt:和Alert相同。
- MenuPopup:可以是獨立的context menu或是依附在MenuBar或MenuButton底下的功能選單元件。
- SuggestionPopup:提供文字輸入時『自動完成』的功能。
- Palette:浮動式工具視窗。
- FileBrowserSheet:檔案總管。
- Tooltip:能自動消失的提示視窗。
Containers(容器)
Pivot的容器可以分為三大種類:layout containers、navigation containers及composites。
- layout containers:主要是用來放置其他WTK元件的容器。
- FlowPane:將元件安排在水平線上。
- BoxPane:可以將元件依水平或垂直的方式進行排列。
- GridPane:以二維表格的方式排列元件,每一格(cell)的大小都均等。
- TablePane:同樣是以二維表格來排列元件,不過可以指定格子的擴展值(span)。
- Border:可以在單一元件外圍畫上框線及標題。
- StackPane:以分層(layer)的方式進行元件的排列。
- SplitPane:可以將畫面進行分割(split)並且得以自由拖曳改變畫面的大小,可以有垂直及水平兩種疾果。
- Form:將元件以『表單』的方式進行排列,在元件左側會有標籤(Label),在元件左側會有提示訊息(例如:輸入錯誤)。
- Panel:以絕對定位的方式進行元件的排列。
- navigation containers:用來增加螢幕的真正顯示範圍,它可以動態隱藏或顯示子元件。
- CardPane:以卡片(card stack)的方式來組織元件,同一時間只能顯示出一個元件(在最上層)。
- TabPane:如同CardPane一般,只是多了頁籤(tab),可允許使用者以按頁籤的方式來切換。同時,它也可以收合(collapsed)起來。
- Accordion:元件會如同手風琴班的摺疊起來,只顯示標題列。
- Expander:和Border類似,但是可以收合起來只顯示出標題列。
- Rollup:如同Expander一般,只是它的標題列可以是隨意的WTK元件,也可以使用巢狀的方式來顯示出樹狀結構(tree structure)。
- Viewport:是一個抽象類別,主要功能在呈現可捲動(scrollable)的區域,包含了兩個子類別。
- ScrollPane:以捲軸()的方式來捲動畫面。
- Panorama:以上、下、左、右的箭頭來捲動畫面。
- composites:是由其他元件所組合而成的WTK元件。
- ScrollBar
- Spinner:類似下拉式選單,但是可以用上下箭頭進行循環指定預先指定(pre-define)的內容。
- Slider:可供使用者選擇某一個範圍的值。
- Menu:一系列可供使者選取的動作列表,例如context menu或是menubutton的子選單。
- MenuBar:功能表。
- Calendar:日期選擇器。
- ColorChooser:顏色選擇器。
- FileBrowser:檔案選擇器。
Components(其他WTK元件)
- Label:用來顯示文字。
- ImageView:用來顯示靜態圖片的元件,可以針對圖片進行縮放。
- Button:按鈕元件的父抽象類別。
- PushButton:可以是一般的按鈕或是切換按鈕(toggle button),切換按鈕可以群組化以提供單一選擇功能。
- Checkbox:提供勾選的方式,支援tri-states及partial的選擇。
- RadioButton:傳統的選擇按鈕,通常會將之群組化以提供單一選擇的功能。
- LinkButton:以超連結方式呈現的按鈕。
- ListButton:按下按鈕後會顯示下拉式選單供選擇。
- CalendarButton:可以提供popup的日期選擇器。
- ColorChooserButton:可提供popup的顏色選擇器。
- MenuButton:按下後可出現下拉式選單的按鈕。
- Menu.Item:功能等同menu item。
- Menu.BarItem:功能等同menu bar item
- Separator:水平的尺規元件。
- TextInput:允許輸入單行文字。
- TextArea:顯示或是輸入多行文字(格式文字亦可)。
- ActivityIndicator:顯示目前狀態未定之元件。
- Meter:以百分比顯示的進度狀態。
- ListView:以垂直的方式來條列各個選項。
- TableView:以行列來顯示資料的元件,可排序及改變欄位大小。
Web Queries:Apache Pivot用來操作遠端資料服務的原生工具集(native means)。
基本上,Web queries就如同http-request一般,但是它操作的資料是以JSON的方式來呈現,Web qureies的相關操作方法和其他方式的對應如下表:
Behavior | SQL Query | HTTP Method |
Create | INSERT | POST |
Read | SELECT | GET |
Update | UPDATE | PUT |
Delete | DELETE | DELETE |
原則上,Pivot是設計用來操作以JSON資料交換為主的Rest web services,但是它也可以用來處理XML資料,例如SOAP web services。
No comments:
Post a Comment