(10)【ViewHelper】役割と実装例

com.adobe.cairngorm.view.ViewHelper;の説明です。(Cairngorm 2.1)

役割
Viewからコマンドクラスを切り離すためのクラスです。
具体的には、mxmlにはUI部品のみを記述し、イベントリスナーはViewHelperに記述することで、それぞれ役割分担しましょうということだと思います。


com.adobe.cairngorm.view.ViewHelperは、mx.core.IMXMLObjectを実装しており、initialized()メソッドによってMXMLドキュメント(及びid)を取得します。
initialized()メソッドは、実装オブジェクトが作成され、MXML タグに指定されたすべてのコンポーネントプロパティが初期化された後に呼び出されます。
MXMLドキュメントは、クラス変数である、protected view : Objectに格納されますので、ViewHelperを継承したクラスはこのクラス変数(view)を使用してMXMLドキュメントにアクセスすることが可能になります。
また、initialized()メソッド内で、Event.ADDED, Event.REMOVEDそれぞれのイベントリスナーを登録し、イベント発生時に、privateメソッドによって、ViewLocatorに自身を登録または削除しています。
ViewHelperが作成されるとき、idは、特定のViewの(TabNavigatorの特定のタブ、またはViewStackの特定のスクリーンなどの)部品に対して登録するのに使用されます。

実装例
ログインアプリケーションにおけるViewHelperの実装例
ログインボタンの記述(mxmlファイル)

<mx:Application xmlns:view="sample.view.*" ・・・>
    <view:LoginViewhelper id="loginViewhelper" />
    ・・・
    <mx:Button label="ログイン" id="login_btn" click="loginViewhelper.onLoginBtn()"/>
    ・・・

ViewHelperクラスの作成

package sample.view{
    import sample.control.LoginControl;
    import sample.vo.AccountVO;
    import com.adobe.cairngorm.view.ViewHelper;
    import com.adobe.cairngorm.control.CairngormEventDispatcher;
    import sample.event.*;
    public class LoginViewhelper extends ViewHelper{
        /**
         * ログインボタン押下の処理メソッド
         */
        public function onLoginBtn():void{
            var dto : AccountVO = new AccountVO();
            dto.userid = view.userid_txt.text;
            dto.passwd = view.passwd_txt.text;
            
            CairngormEventDispatcher.getInstance().dispatchEvent( new LoginEvent(dto) );
        }
}

かなりこのシリーズ飽きてきましたね。。
次回は【ViewLocator】役割と実装例です