Curl Global Community
Sonntag で別画面(Screen)のイベントを呼ぶ - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: Sonntag で別画面(Screen)のイベントを呼ぶ (/showthread.php?tid=184)



Sonntag で別画面(Screen)のイベントを呼ぶ - umemura - 08-03-2011

Sonntag は ある画面(ScreenAとする)で起きるイベント等のロジックは、そのScreenA に関連付けられた Command を呼び出すことで実行できますよね。

しかし、画面を越えてイベントを起こしたい場合はどうすればよいのでしょうか。

たとえば、ScreenA とScreenB がともにScreenX のタブコンテナの中に入っている子オブジェクトだとして、
「ScreenX を閉じる」というイベントが起きたときに、ScreenA とScreenB の値が保存されているか確認して終了処理をしたい、
と言うような場合です。

もちろん、子オブジェクトのインスタンスを保持すれば可能なことは理解できていますが、
直接的な関連付けになるため、あまり気持ちのいい実装と思えません。

あるスクリーンのイベントと、別スクリーンのイベントを関連付ける良い方法はありますでしょうか。





RE: Sonntag で別画面(Screen)のイベントを呼ぶ - umemura - 08-03-2011

Sonntag には EventBus という機能があり、スクリーン間の関連付けを担ってくれます。

ヘルプに情報があまりないので見過ごされがちですが、非常に強力な機能を提供してくれます。

Sonntagフレームワークには、イベントバス(EventBus)というトポロジーが存在し、
Sonntag のScreen でインスタンス化したものは、自動的にこのEventBus に関連付けられます。

あるスクリーンからこの EventBus にメッセージを投げると、EventBus は関連付けられているScreenすべてにそのメッセージをブロードキャストします。

イベントを起こしたいScreenにあらかじめどんなメッセージがきたらどんなイベントを起こすかを記述しておけば、
キャストされたメッセージを受け取ったタイミングで、その処理が実行される、と言う形になります。

下記サイトに記事を投稿しました。
参考にしてください

■Sonntag のEventBus について
http://developers.curlap.com/re-reference/45-fw05/758-sonntag--veventbus-.html



RE: Sonntag で別画面(Screen)のイベントを呼ぶ - RobertShiplett - 08-04-2011

(08-03-2011, 07:54 PM)umemura Wrote: An English version of Sonntag-Event-Bus is now also at http://developers.curl.com/docs/DOC-1746
(08-03-2011, 07:54 PM)umemura Wrote: The same is attached below.