(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クラスは省略しません。