Monday, July 9, 2012

Apache Pivot 平台概論

Apache Pivot提供了許多基礎類別,以建立複雜及優美的使用者介面。主要分成四大類別:

  1. Core:非UI的共同類別。
  2. WTK:使用者介面(user interface development)相關類別,包括:windows dialogs buttons lists textinput layout drag and drop等等。
  3. Web:和遠端服務(RestFul web service soap json)進行連線相關類別。
  4. 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