データをコミットする実装をおこなう

最後に、定義したメソッドを利用して、ボタンを押した時に実際にデータをコミットさせる実装を行います。
まず、「新規スレッドを立てる」ボタンを押した時、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を別ウインドウで表示