(27)S2Flex2画像パレット コマンドクラスの実装

Cairngormでの作成方法は、前にやりましたので、
ここではデータUpdateのためのコマンドクラス、データ検索のためのコマンドクラスだけを掲載します。
省略した分は、サンプルアプリケーション公開するときに覗いてみてください。
(せっかく作ったので全部載せたかったのですが、あまりに多いので・・・)
サンプルの公開は、サーバー準備中ですので、ちょっと待ってください。

ImageUpdateCommand.as

package imagepicker.imagemanage.command
{
    import com.adobe.cairngorm.commands.SequenceCommand;
    import mx.rpc.IResponder;
    import imagepicker.common.model.ImagePickerModel;
    import imagepicker.imagemanage.command.ImageUpdateCommand;
    import imagepicker.imagemanage.event.ImageUpdateEvent;
    import imagepicker.imagemanage.event.ImageSelectAllEvent;
    import com.adobe.cairngorm.control.CairngormEvent;
    import imagepicker.imagemanage.logic.ImagePickerLogic;
    import mx.controls.Alert;
    public class ImageUpdateCommand extends SequenceCommand implements IResponder{
        public var model:ImagePickerModel = ImagePickerModel.getInstance();
        /**
         * 実行
         */
        public override function execute(cairngormEvent:CairngormEvent):void{
            var event:ImageUpdateEvent = cairngormEvent as ImageUpdateEvent;
            var logic:ImagePickerLogic = new ImagePickerLogic(this);
            logic.update(event.dto);
        }
        public function result(data:Object):void{
            var buff:String = String(data.result);
            if ( buff == "1" ){
                executeNextCommand();
            }
        }
        public function fault(info:Object):void{
            // modelにメッセージを投入するなどのエラー時処理
        }
        public override function executeNextCommand():void{
            var selectEvent : ImageSelectAllEvent = new ImageSelectAllEvent();
            nextEvent = selectEvent;
            super.executeNextCommand();
            nextEvent = null;
        }
    }
}

データ更新用コマンドクラスです。
execute()メソッドで実行し、結果がresult(),fault()に返ります。
また、更新後、データを再取得するのでSequenceCommandクラスを継承し、executeNextCommand()メソッドをオーバーライドします。

ImageSelectCommand.as

package imagepicker.imagemanage.command
{
    import imagepicker.common.model.ImagePickerModel;
    import imagepicker.imagemanage.command.ImageSelectCommand;
    import imagepicker.imagemanage.event.ImageSelectEvent;
    import com.adobe.cairngorm.commands.Command;
    import com.adobe.cairngorm.control.CairngormEvent;
    import mx.rpc.IResponder;
    import imagepicker.imagemanage.logic.ImagePickerLogic;
    public class ImageSelectCommand implements Command, IResponder{
        public var model:ImagePickerModel = ImagePickerModel.getInstance();
        /**
         * 実行
         */
        public function execute(cairngormEvent:CairngormEvent):void{
            var event:ImageSelectEvent = cairngormEvent as ImageSelectEvent;
            var logic:ImagePickerLogic = new ImagePickerLogic(this);
            logic.selectByTags(event.selectkeys);
        }
        /**
         * 実行結果
         */
        public function result(data:Object):void{
            var retObj:Array = data.result as Array;
            model.imageList.removeAll();
            for ( var i: Number = 0; i < retObj.length; i++ ){
                var buff :String;
                if( retObj[i].title.length > 12 ){
                    buff = retObj[i].title.substr(0,10) + "...";
                }else{
                    buff = retObj[i].title;
                }
                model.imageList.addItem( {
                        label:buff,
                        myUrl:"images/"+retObj[i].imagename,
                        imagename:retObj[i].imagename,
                        title:retObj[i].title,
                        tags:retObj[i].tags,
                        imageid:retObj[i].imageid
                    } );
            }
        }
        /**
         * 実行失敗
         */
        public function fault(info:Object):void{
            // modelにメッセージを投入するなどのエラー時処理
        }
    }
}

データ検索用コマンドクラス。

次回は、サービスクラスを作成します。
S2Flex2の肝の部分なのでサービスクラス・Delegateクラスは省略しません。