(19)【ViewHelperの作成】
アドレス帳サンプルアプリの続きです。
続いて、ViewHelperの作成。
■4.一覧画面用ViewHelperの作成
ボタンを押した時の操作を記述するためのViewHelperを作成します。
[新規]-[ActionScriptクラス]
パッケージ:view
クラス名:AddressListViewHelper
スーパークラス:ViewHelper
クラスはこんな感じ。
package view { import com.adobe.cairngorm.view.ViewHelper; import com.adobe.cairngorm.control.CairngormEventDispatcher; import model.AddressModelLocator; import event.AddressSelectEvent; import event.AddressRemoveEvent; import vo.Address; import mx.controls.Alert; public class AddressListViewHelper extends ViewHelper{ public var model : AddressModelLocator = AddressModelLocator.getInstance(); /** * 全件取得 */ public function selectAll():void{ var dto:Address = new Address(); CairngormEventDispatcher.getInstance().dispatchEvent( new AddressSelectEvent(dto) ); } /** * 登録ボタン押下 */ public function onInsertBtn():void{ // ViewStackをAddressForm.mxmlへ切り替え this.view.parentDocument.viewstack1.selectedChild = this.view.parentDocument.vsAddressForm; // 画面の初期化 this.clearForm(); } /** * 修正ボタン押下 */ public function onUpdateBtn():void{ if (this.view.grdAddress.selectedIndex == -1) { Alert.show('修正する行が選択されていません。', 'おしらせ'); return; } // フォームに値をセット this.view.parentDocument.addressForm.lblId.text = this.view.grdAddress.selectedItem.addressid; this.view.parentDocument.addressForm.txtName.text = this.view.grdAddress.selectedItem.name; this.view.parentDocument.addressForm.txtAddress.text = this.view.grdAddress.selectedItem.address; this.view.parentDocument.addressForm.txtTelno.text = this.view.grdAddress.selectedItem.telno; this.view.parentDocument.addressForm.btnRegist.label = "修正"; // ViewStackをAddressForm.mxmlへ切り替え this.view.parentDocument.viewstack1.selectedChild = this.view.parentDocument.vsAddressForm; } /** * 削除ボタン押下 */ public function onRemoveBtn():void{ if (this.view.grdAddress.selectedIndex == -1) { Alert.show('削除する行が選択されていません。', 'おしらせ'); return; } // イベント送出 var dto:Address = new Address(); dto.addressid = this.view.grdAddress.selectedItem.addressid; dto.name = this.view.grdAddress.selectedItem.name; dto.address = this.view.grdAddress.selectedItem.address; dto.telno = this.view.grdAddress.selectedItem.telno; CairngormEventDispatcher.getInstance().dispatchEvent( new AddressRemoveEvent(dto) ); } /** * データグリッド押下 */ public function onClickDataGrid():void{ } private function clearForm():void{ // フォームの初期化 this.view.parentDocument.addressForm.lblId.text = ""; this.view.parentDocument.addressForm.txtName.text = ""; this.view.parentDocument.addressForm.txtAddress.text = ""; this.view.parentDocument.addressForm.txtTelno.text = ""; this.view.parentDocument.addressForm.btnRegist.label = "登録"; } } }
■5.登録画面用ViewHelperの作成
同様に登録画面用にViewHelperクラスを作成します。
パッケージ:view
クラス名:AddressFormViewHelper
スーパークラス:ViewHelper
クラスはこんな感じ。
package view { import com.adobe.cairngorm.view.ViewHelper; import com.adobe.cairngorm.control.CairngormEventDispatcher; import event.AddressInsertEvent; import event.AddressUpdateEvent; import model.AddressModelLocator; import vo.Address; /** * AddressForm.mxmlのHelper。 */ public class AddressFormViewHelper extends ViewHelper{ public var model : AddressModelLocator = AddressModelLocator.getInstance(); /** * 登録ボタン押下 */ public function onRegistBtn():void{ if(this.view.btnRegist.label === "登録"){ this.insert(); }else{ this.update(); } } /** * 登録処理 */ private function insert():void{ // 画面の入力値を取得 var dto:Address = new Address(); dto.name = this.view.txtName.text; dto.address = this.view.txtAddress.text; dto.telno = this.view.txtTelno.text; // イベント送出 CairngormEventDispatcher.getInstance().dispatchEvent( new AddressInsertEvent(dto) ); // 画面を一覧に戻します this.onReturnBtn(); } /** * 修正処理 */ private function update():void{ // 画面の入力値を取得 var dto:Address = new Address(); dto.addressid = this.view.lblId.text; dto.name = this.view.txtName.text; dto.address = this.view.txtAddress.text; dto.telno = this.view.txtTelno.text; // イベント送出 CairngormEventDispatcher.getInstance().dispatchEvent( new AddressUpdateEvent(dto) ); // 画面を一覧に戻します this.onReturnBtn(); } /** * 戻るボタン押下 */ public function onReturnBtn():void{ this.view.parentDocument.viewstack1.selectedChild = this.view.parentDocument.vsAddressList; } } }
・・・読めないな。これ。
次回は、ValueObject,FrontControllerの作成です。