データをコミットする実装をおこなう
最後に、定義したメソッドを利用して、ボタンを押した時に実際にデータをコミットさせる実装を行います。
まず、「新規スレッドを立てる」ボタンを押した時、openSubmitWindow()がコールされますが、この時に新規Messageオブジェクトのインスタンスを生成し、SubmitWindowにバインドさせます。ユーザが入力し終わってOKボタンを押したら、先ほど実装したbbs.mxml中のinsertNewMessage()をコールするようにします。
SubmitWindowにmessageというプロパティを持たせます。さらにハードコーディングされている部分をこのmessageのプロパティに置き換えます。
SubmitWindow.mxml(抜粋)
<mx:Script> <![CDATA[ var message:MessageBean; ]]></mx:Script><mx:FormItem label="タイトル"> <mx:TextInput id="subjectInput" width="150" text="{message.subject}"/> </mx:FormItem> <mx:FormItem label="お名前"> <mx:TextInput id="nameInput" width="100" text="{message.userName}"/> </mx:FormItem> <mx:FormItem label="削除用パスワード"> <mx:TextInput id="passInput" width="50" text="{message.userPass}"/> </mx:FormItem> <mx:FormItem label="Mail"> <mx:TextInput id="mailInput" width="150" text="{message.mail}"/> </mx:FormItem> <mx:FormItem label="URL"> <mx:TextInput id="urlInput" width="150" text="{message.url}"/> </mx:FormItem> <mx:FormItem label="内容"> <mx:TextArea id="contentInput" width="250" height="150" text="{message.content}"/> </mx:FormItem>
次にbbs.mxmlのopenSubmitWindow()メソッドを下記の様に変更します。
bbs.mxml(抜粋)
function openSubmitWindow():Void { var newMessage = new MessageBean(); var popUp:SubmitWindow = SubmitWindow(PopUpManager.createPopUp(this,SubmitWindow,true)); popUp.message = newMessage; }
SubmitWindowが開く直前でMessageオブジェクトのインスタンスを生成し、SubmitWindowのインスタンスにセットします。
そしてSubmitWindowのOKボタンがクリックされた時の実装を行います。
SubmitWindow.mxml(抜粋)
function applyChanges() : Void { message.subject=subjectInput.text; message.userName=nameInput.text; message.userPass=passInput.text; message.mail=mailInput.text; message.url=urlInput.text; message.content=contentInput.text; } function insertNewMessage():Void { applyChanges(); parentDocument.insertNewMessage(message); deletePopUp(); }<mx:ControlBar horizontalAlign="right"> <mx:Button id="cancelButton" label="キャンセル" click="deletePopUp()" /> <mx:Button id="addMessageButton" label="OK" click="insertNewMessage()"/> </mx:ControlBar>
OKボタンが押されたらinsertNewMessage()メソッドが呼ばれます。messageオブジェクトにユーザが入力した値をセットして、それをbbs.mxmlのinsertNewMessage()メソッドの引数として渡しています。SubmitWindowはbbs.mxmlから生成されたウインドウなので、parentDocumentとしてbbs.mxmlを参照する事が可能です。
deletePopUp()メソッドはポップアップされたウインドウを閉じるメソッドです。
以上をまとめたソースです。
bbs.mxmlを別ウインドウで表示
SubmitWindow.mxmlを別ウインドウで表示
MessageBean.asを別ウインドウで表示