Package | jp.co.fujitsu.reffi.client.flex.controller |
Class | public class BaseController |
Inheritance | BaseController ![]() |
Implements | mx.core.IMXMLObject, IController |
[概 要]
アクションとモデルを制御する基底コントローラクラスです.[詳 細]
コントローラは大きく分けて二つの役割を担います。実行順序 | BaseAction | BaseController | BaseModel |
1 | handlerFacade() | ||
2 | invoke() | ||
3 | runAction() | ||
4 | run() | ||
5 | runModels() | ||
5´ | runModelsAndNoWait() | ||
6 | run() | ||
7 | モデル処理監視リスナ(成功) | ||
8 | successForward() | ||
7´ | モデル処理監視リスナ(失敗) | ||
8´ | failureForward() | ||
9 | trap() | ||
10 | handlerFinalize() | ||
11 | modelsDone() | ||
12 | complete() |
[備 考]
Property | Defined By | ||
---|---|---|---|
application : Application
[概 要]
このコントローラが制御するmx:Applicationインスタンスです. | BaseController | ||
clientConfig : ClientConfig [static]
[概 要]
フレームワークの挙動情報を保持するオブジェクトです. | BaseController | ||
controllers : Dictionary [static]
[概 要]
AVMにロードされているBaseController継承オブジェクト群を保持するオブジェクトです. | BaseController | ||
eventBinder : EventBinder
[概 要]
一アプリケーション(一SWF)内のイベント定義情報が格納されたオブジェクトです. | BaseController | ||
name : String
[概 要]
このコントローラの名前です。デフォルトではクラス型名が入ります. | BaseController | ||
permanent : Dictionary
[概 要]
nアプリケーション(nSWF)間で共有可能な恒久領域です. | BaseController |
Method | Defined By | ||
---|---|---|---|
[概 要]
デフォルトコンストラクタです. | BaseController | ||
getController(application:Application):BaseController [static]
[概 要]
引数applicationを管理しているBaseControllerインスタンスを返却します. | BaseController | ||
handlerFacade(event:Event):void
[概 要]
全ユーザ定義イベントをハンドルする入り口になるメソッドです. | BaseController | ||
initialized(document:Object, id:String):void
[概 要]
このコントローラタグがApplicationの子要素としてパースされた時点でAVMによってコールバックされるメソッドです. | BaseController | ||
invoke(actionClass:Class, parameterMapping:ParameterMapping, completeHandler:Function = null, failureHandler:Function = null):void
[概 要]
コントローラの主幹メソッドです. | BaseController | ||
removeEvents(event:Event):void
[概 要]
削除された画面コンポーネントに付与されているイベントリスナを削除します. | BaseController | ||
[概 要]
イベントに対応するアクションを実行します. | BaseController | ||
[概 要]
機能モデルを単体実行します. | BaseController | ||
runModels(models:Array, mapping:ParameterMapping, index:int = 0, modelProcessEvent:ModelProcessEvent = null):void
[概 要]
アクションで予約されたモデル群をインスタンス化して連続実行します. | BaseController | ||
runModelsAndNoWait(models:Array, mapping:ParameterMapping):void
[概 要]
アクションで予約されたモデル群をインスタンス化して連続実行します. | BaseController | ||
trap(error:*):void
[概 要]
Controller、Action、Model各レイヤで発生したエラーを最終的に一元ハンドルするメソッドです. | BaseController |
Method | Defined By | ||
---|---|---|---|
bind(eventBinder:EventBinder):void
[概 要]
MXMLで定義されたコンポーネントと、アクションを紐付けるメソッドです. | BaseController | ||
createParameterMapping(event:Event):ParameterMapping
[概 要]
MVC各レイヤを巡回するParameteraMappingオブジェクトを生成、初期化します. | BaseController | ||
handlerFinalize(parameterMapping:ParameterMapping):void
[概 要]
各ユーザ定義イベントハンドリングの最後にテンプレートコールされるメソッドです. | BaseController | ||
initialize(clientConfig:ClientConfig):void
[概 要]
初期化処理が記述可能なメソッドです. | BaseController | ||
modelsDone(parameterMapping:ParameterMapping):void
[概 要]
1アクションに登録されている機能モデル群が全て終了した契機でコールされます. | BaseController |
application | property |
application:Application
[概 要]
このコントローラが制御するmx:Applicationインスタンスです.[詳 細]
このコントローラを記述したタグの親ノードとなるApplicationを示すプロパティです。<?xml version="1.0" encoding="utf-8"?> <mx:Application name="testApp" xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:controller="demo.client.controller.*"> <controller:TestController name="testController" /> : :
[備 考]
public function get application():Application
public function set application(value:Application):void
clientConfig | property |
clientConfig:ClientConfig
[概 要]
フレームワークの挙動情報を保持するオブジェクトです.[詳 細]
コントローラ初期化時(BaseController#initilize())に引数として渡るオブジェクトです。 initialize内で動作の制御を設定します。[備 考]
public static function get clientConfig():ClientConfig
public static function set clientConfig(value:ClientConfig):void
controllers | property |
controllers:Dictionary
[概 要]
AVMにロードされているBaseController継承オブジェクト群を保持するオブジェクトです.[詳 細]
A.swf(AControllerクラスが管理)とB.swf(BControllerクラスが管理)が読み込まれている場合、 以下のようにコントローラインスタンスが保持されます。controllers:Dictionary "AControllerのnameプロパティ値" = AController instance "BControllerのnameプロパティ値" = BController instance
[備 考]
public static function get controllers():Dictionary
public static function set controllers(value:Dictionary):void
See also
eventBinder | property |
eventBinder:EventBinder
[概 要]
一アプリケーション(一SWF)内のイベント定義情報が格納されたオブジェクトです.[詳 細]
[備 考]
public function get eventBinder():EventBinder
public function set eventBinder(value:EventBinder):void
See also
name | property |
name:String
[概 要]
このコントローラの名前です。デフォルトではクラス型名が入ります.[詳 細]
AVM上に複数のSWF(Application)がロードされる場合、Applicationを管理する コントローラを識別する為のキーとして使用されます。[備 考]
読み込まれる各SWFを管理するコントローラクラス名が同一である場合、 コントローラを識別することが出来ません。 作成する具象コントローラは可能な限り別クラス名にするか、 もしくはinitialize時にユニークなnameプロパティを設定してください。 public function get name():String
public function set name(value:String):void
See also
permanent | property |
permanent:Dictionary
[概 要]
nアプリケーション(nSWF)間で共有可能な恒久領域です.[詳 細]
A.swfとB.swfが読み込まれている場合、AControllerとBControllerで同じ領域が参照されます。[備 考]
public function get permanent():Dictionary
public function set permanent(value:Dictionary):void
BaseController | () | Constructor |
public function BaseController()
[概 要]
デフォルトコンストラクタです.[詳 細]
describeType(this)の結果、取得するXMLのtypeノードからname属性を取り出します。 取り出したname属性はクラス型名のみ切り出します。 取得されたクラス名はnameプロパティに設定されます。[備 考]
nameプロパティに設定された名前は、BaseController#controllersに格納される、 このコントローラオブジェクトのキーになります。bind | () | method |
protected function bind(eventBinder:EventBinder):void
[概 要]
MXMLで定義されたコンポーネントと、アクションを紐付けるメソッドです.[詳 細]
具象コントローラでこのメソッドをオーバーライドして、コンポーネントのイベント発生時に 実行するアクションクラスを紐付けます。 eventBinder.addEventBinding("name属性値", "イベントタイプ", BaseAction継承クラス); のように紐付け処理を列挙して下さい。 紐付け情報を保持するEventBinderオブジェクトは、BaseControllerのeventBinderプロパティ として保持されます。[備 考]
Parameters
eventBinder:EventBinder — イベント紐付け情報保持オブジェクト
|
See also
eventBinder.addEventBinding("login", MouseEvent.CLICK, Class(LoginAction));
createParameterMapping | () | method |
protected function createParameterMapping(event:Event):ParameterMapping
[概 要]
MVC各レイヤを巡回するParameteraMappingオブジェクトを生成、初期化します.[詳 細]
イベント発生の際、Controller、Action、Modelを流れるデータマップを作成します。 このメソッドが呼ばれるフロー段階では発生したEventオブジェクト、 イベント発生させたオブジェクト等が初期値として設定されます。[備 考]
Parameters
event:Event |
ParameterMapping — MVC各レイヤを巡回するパラメータオブジェクト
|
getController | () | method |
public static function getController(application:Application):BaseController
[概 要]
引数applicationを管理しているBaseControllerインスタンスを返却します.[詳 細]
controllersプロパティを走査して引数applicationと同じapplicationを持つ コントローラを返却します。[備 考]
Parameters
application:Application — コントローラを識別する為のApplicationオブジェクト
|
BaseController |
handlerFacade | () | method |
public function handlerFacade(event:Event):void
[概 要]
全ユーザ定義イベントをハンドルする入り口になるメソッドです.[詳 細]
発生したイベントタイプ、イベントを起こしたコンポーネント名を元に、 イベント紐付けオブジェクト(EventBinder)から対応するアクションクラス型を取得します。 取得したアクションクラス型を引数にしてinvoke(Class, ParameterMapping)に処理委譲します。[備 考]
bind(EventBinder)で定義したイベントは全てこのメソッドがハンドリングします。Parameters
event:Event — 発生イベント
|
handlerFinalize | () | method |
protected function handlerFinalize(parameterMapping:ParameterMapping):void
[概 要]
各ユーザ定義イベントハンドリングの最後にテンプレートコールされるメソッドです.[詳 細]
デフォルト処理は有りません。[備 考]
このメソッドを具象コントローラでオーバーライドすると、全イベントアクションの 共通実行後処理を実装出来ます。Parameters
parameterMapping:ParameterMapping — MVC各レイヤを伝播するパラメータオブジェクト
|
initialize | () | method |
protected function initialize(clientConfig:ClientConfig):void
[概 要]
初期化処理が記述可能なメソッドです.[詳 細]
具象コントローラがApplicationの子要素として認識されたタイミングでテンプレートコールされます。 デフォルトの処理は有りません。[備 考]
業務固有の初期化処理が必要な場合は、具象コントローラ内でこのメソッドをオーバーライドして下さい。 又、フレームワークの挙動設定をこのタイミングで設定することが出来ます。Parameters
clientConfig:ClientConfig — フレームワーク挙動情報を保持するオブジェクトです
|
override protected function initialize(clientConfig:ClientConfig):void { // アクションでモデル予約が無かった場合に動作させるデフォルトモデルクラスを設定 clientConfig.defaultModelClass = Class(DemoSystemDefaultModel); // エラー発生時にコントローラによるエラー表示を抑止する clientConfig.showAlertOnError = false; }
initialized | () | method |
public final function initialized(document:Object, id:String):void
[概 要]
このコントローラタグがApplicationの子要素としてパースされた時点でAVMによってコールバックされるメソッドです.[詳 細]
このコントローラの親要素であるApplication、及びApplicationを管理するSystemManagerに対して、 ADDEDイベント(ハンドラ:bindEvents)、REMOVEDイベント(ハンドラ:removeEvents)リスナを追加します。 その他、nameプロパティへの値設定(クラス名を設定)、initializeメソッドのテンプレートコールを行います。[備 考]
Parameters
document:Object — このコントローラがタグとして配置されたApplication
| |
id:String — タグとして配置されたコントローラのid属性値
|
invoke | () | method |
public function invoke(actionClass:Class, parameterMapping:ParameterMapping, completeHandler:Function = null, failureHandler:Function = null):void
[概 要]
コントローラの主幹メソッドです.[詳 細]
コントローラ処理フローの幹を形成します。 このメソッドのtryスコープで以下が行われます。[備 考]
Parameters
actionClass:Class — 画面コンポーネントから発生したイベントオブジェクト
| |
parameterMapping:ParameterMapping — MVC各レイヤを伝播するパラメータオブジェクト
| |
completeHandler:Function (default = null ) — invoke成功時に呼ばれる関数(デフォルト:null)
| |
failureHandler:Function (default = null ) — invoke失敗時に呼ばれる関数(デフォルト:null)
|
modelsDone | () | method |
protected function modelsDone(parameterMapping:ParameterMapping):void
[概 要]
1アクションに登録されている機能モデル群が全て終了した契機でコールされます.[詳 細]
アクションでの登録モデル群が全て完了した時の共通処理を記述します。[備 考]
Parameters
parameterMapping:ParameterMapping — MVC各レイヤを伝播するパラメータオブジェクト
|
removeEvents | () | method |
public function removeEvents(event:Event):void
[概 要]
削除された画面コンポーネントに付与されているイベントリスナを削除します.[詳 細]
削除されたコンポーネントがeventBinderプロパティに登録されているname属性を持つ場合、 this.handlerFacade(event:Event)を呼ぶイベントリスナを削除します。[備 考]
Parameters
event:Event — このコントローラが管理するAppicationからコンポーネントが削除されたremovedイベント
|
runAction | () | method |
public function runAction(actionClass:Class, parameterMapping:ParameterMapping):ParameterMapping
[概 要]
イベントに対応するアクションを実行します.[詳 細]
引数で指定されたアクションクラス型をインスタンス化、 実行(BaseAction#run(ParameterMapping))します。 execute実行後、結果戻り値であるParameterMappingを返却します。[備 考]
この結果がnullだった場合はコントローラの以降の処理は中止されます。 BaseAction#run(ParameterMapping)がnullを返却するのは、 prepareがfalseを返却、もしくはvalidate結果がエラーだった場合があります。Parameters
actionClass:Class — 実行するアクションクラスの型
| |
parameterMapping:ParameterMapping — MVCを巡回するパラメータマッピング
|
ParameterMapping — アクション実行後のParameterMappingオブジェクト
|
runModel | () | method |
public function runModel(model:BaseModel, parameterMapping:ParameterMapping):void
[概 要]
機能モデルを単体実行します.[詳 細]
BaseAction#reserveModels等で登録した以外のモデルを実行する際に使用します。[備 考]
Parameters
model:BaseModel — 実行する機能モデルインスタンス
| |
parameterMapping:ParameterMapping — MVC各レイヤを伝播するパラメータオブジェクト
|
runModels | () | method |
public function runModels(models:Array, mapping:ParameterMapping, index:int = 0, modelProcessEvent:ModelProcessEvent = null):void
[概 要]
アクションで予約されたモデル群をインスタンス化して連続実行します.[詳 細]
BaseAction#reserveModels(Array)で予約されたBaseModel実装モデル群を実行します。 登録モデルが複数有る場合、前回モデルの実行終了を待ってから次回モデルが実行されます。 モデル実行直前にBaseAction#nextModel(int, ModelProcessEvent, Model)がコールバックされます。 実行モデルへのパラメータ設定を上記メソッドで行うことが出来ます。 モデル実行後、成功時はBaseAction#successForward(int, Model, Object)が、 失敗時はBaseAction#failureForward(int, Model, Exception)がコールバックされます。 モデルの実行結果は上記メソッドで取得することが出来ます。[備 考]
BaseAction#isRunModelsAndNoWait() がfalseの場合、同期モードで実行されます。 同メソッドはデフォルトでfalseを返却します。Parameters
models:Array — BaseAction#reserveModels(Array) で予約されたモデルクラス群
| |
mapping:ParameterMapping — MVC各レイヤを伝播するパラメータ
| |
index:int (default = 0 ) — モデル実行順序インデックス
| |
modelProcessEvent:ModelProcessEvent (default = null ) — 直前に実行したモデルの処理結果イベントオブジェクト
|
See also
runModelsAndNoWait | () | method |
public function runModelsAndNoWait(models:Array, mapping:ParameterMapping):void
[概 要]
アクションで予約されたモデル群をインスタンス化して連続実行します.[詳 細]
BaseAction#reserveModels(Array)で予約されたBaseModel実装モデル群を実行します。 登録モデルが複数有る場合、前回モデルの実行終了を待たずに次回モデルが実行されます。 モデル実行直前にBaseAction#nextModel(int, ModelProcessEvent, Model)がコールバックされます。 実行モデルへのパラメータ設定を上記メソッドで行うことが出来ます。 非同期モードでモデル実行した場合は前回モデルの結果を待たずに次回モデルを実行する為、 第二引数prev:ModelProcessEventが常時nullになります。 前回モデルの結果を判断して、次回モデルのパラメータ設定をすることは出来ません。 モデル実行後、成功時はBaseAction#successForward(int, Model, Object)が、 失敗時はBaseAction#failureForward(int, Model, Exception)がコールバックされます。 モデルの実行結果は上記メソッドで取得することが出来ます。[備 考]
BaseAction#isRunModelsAndNoWait() がtrueの場合、非同期モードで実行されます。 非同期モードで実行する場合は、BaseAction#isRunModelsAndNoWait()を オーバーライドしてtrueを返却して下さい。Parameters
models:Array — BaseAction#reserveModels(Array) で予約されたモデルクラス群
| |
mapping:ParameterMapping — MVC各レイヤを伝播するパラメータオブジェクト
|
See also
override protected function isRunModelsAndNoWait():Boolean { return true; }
trap | () | method |
public function trap(error:*):void
[概 要]
Controller、Action、Model各レイヤで発生したエラーを最終的に一元ハンドルするメソッドです.[詳 細]
MVC各レイヤで発生したエラーが最終的にキャッチされます。 ClientConfigオブジェクトのshowAlertOnErrorプロパティがtrueの場合、 発生したエラーの情報を画面表示します。[備 考]
Parameters
error:* — 発生したエラー、またはエラーイベント
|
package demo.client.controller { import demo.client.chat.action.ChannelStartAction; import demo.client.chat.action.ChannelStopAction; import demo.client.chat.action.ChatWindowCloseAction; import demo.client.chat.action.EnterChannelAction; import demo.client.chat.action.LeaveChannelAction; import demo.client.chat.action.RemarkSendAction; import demo.client.componentSearch.action.ComponentSearchCreationCompleteAction; import demo.client.componentSearch.action.SearchAction; import demo.client.custom.action.AbortRowDataAction; import demo.client.custom.action.ChangeColumnAction; : : : import flash.events.Event; import flash.events.FocusEvent; import flash.events.MouseEvent; import jp.co.fujitsu.reffi.client.flex.controller.BaseController; import jp.co.fujitsu.reffi.client.flex.controller.EventBinder; import mx.events.CloseEvent; import mx.events.FlexEvent; import mx.events.IndexChangedEvent; public class DemoController extends BaseController { // コントローラ(アプリケーション)初期化処理を実装します override protected function initialize(clientConfig:ClientConfig):void { } // コンポーネントイベントとアクションの紐付けを定義します override protected function bind(eventBinder:EventBinder):void { // メニュー画面アクション eventBinder.addEventBinding("Index.openTop", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openChat", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openForm", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openWindowGroupMenu", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.lineupWindows", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openServerPush", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openPDF", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openDataGrid", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openWSRequest", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openUserInteractive", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openComponentSearch", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.openSpring", MouseEvent.CLICK, Class(demo.client.index.action.ViewStackChangeAction)); eventBinder.addEventBinding("Index.blackStyleRadioButton", MouseEvent.CLICK, Class(demo.client.index.action.StyleRadioButtonClickAction)); eventBinder.addEventBinding("Index.blueStyleRadioButton", MouseEvent.CLICK, Class(demo.client.index.action.StyleRadioButtonClickAction)); eventBinder.addEventBinding("Index.greenStyleRadioButton", MouseEvent.CLICK, Class(demo.client.index.action.StyleRadioButtonClickAction)); eventBinder.addEventBinding("Index.grayStyleRadioButton", MouseEvent.CLICK, Class(demo.client.index.action.StyleRadioButtonClickAction)); // トップ画面 eventBinder.addEventBinding("Top.menuLogoImage", FlexEvent.CREATION_COMPLETE, Class(demo.client.top.action.ImageCreationCompleteAction)); // チャットデモ画面アクション eventBinder.addEventBinding("chat.channelStartButton", MouseEvent.CLICK, Class(demo.client.chat.action.ChannelStartAction)); eventBinder.addEventBinding("chat.channelStopButton", MouseEvent.CLICK, Class(demo.client.chat.action.ChannelStopAction)); eventBinder.addEventBinding("chat.enterChannel", MouseEvent.CLICK, Class(demo.client.chat.action.EnterChannelAction)); eventBinder.addEventBinding("chat.handleName", FlexEvent.ENTER, Class(demo.client.chat.action.EnterChannelAction)); eventBinder.addEventBinding("chat.leaveChannel", MouseEvent.CLICK, Class(demo.client.chat.action.LeaveChannelAction)); eventBinder.addEventBinding("chat.remarkSend", MouseEvent.CLICK, Class(demo.client.chat.action.RemarkSendAction)); eventBinder.addEventBinding("chat.chatRemark", FlexEvent.ENTER, Class(demo.client.chat.action.RemarkSendAction)); eventBinder.addEventBinding("chat.chatWindow", Event.CLOSE, Class(demo.client.chat.action.ChatWindowCloseAction)); } // 毎イベント最終共通処理を実装します override protected function handlerFinalize(parameterMapping:ParameterMapping):void { } } }
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:controller="demo.client.controller.*"> <controller:DemoController name="demoController" /> : :
Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.