<?xml version="1.0" encoding="utf-8"?>
<!--
チャットサンプル
-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
creationComplete="onCreationComplete()" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import jp.sourceforge.larch.core.util.LarchCollectionUtil;
import jp.sourceforge.larch.example.chat.ChatSO;
import jp.sourceforge.larch.fms.SingletonNetConnectionFactory;
import mx.controls.Alert;
import mx.events.CollectionEvent;
/** 共有オブジェクト */
[Bindable]
private var so:ChatSO;
/** メンバーリスト */
[Bindable]
private var memberList:String;
/**
* creationCompleteイベントハンドラ
*/
private function onCreationComplete():void
{
SingletonNetConnectionFactory.initConnection("larchChatExample", onNCInit);
}
/** 接続の初期化イベントのイベントハンドラ */
private function onNCInit():void
{
so = SingletonNetConnectionFactory.connection.getSharedObject(ChatSO) as ChatSO;
so.memberList.addEventListener(CollectionEvent.COLLECTION_CHANGE, onMemberListChange);
}
/** メンバーリストの変更イベントハンドラ */
private function onMemberListChange(event:CollectionEvent):void
{
memberList = so.memberList.toString();
}
/** ログインボタンのイベントハンドラ */
private function onLoginButtonClick():void
{
if(loginName.text.length == 0)
Alert.show("ログイン名を入力してください。");
else
{
so.memberList.addItem(loginName.text);
viewStack.selectedIndex = 1;
}
}
/** 送信ボタンのイベントハンドラ */
private function onSendButtonClick():void
{
if(messageText.text.length == 0)
Alert.show("発言を入力してください。");
else
{
so.messageHistory += loginName.text + ":" + messageText.text + "\n";
}
}
/** 通知ボタンのイベントハンドラ */
private function onAlertButtonClick():void
{
if(messageText.text.length == 0)
Alert.show("発言を入力してください。");
else
{
so.callAlert(loginName.text, messageText.text);
}
}
/** ログアウトボタンのイベントハンドラ */
private function onLogoutButtonClick():void
{
LarchCollectionUtil.removeItem(so.memberList, loginName.text);
viewStack.selectedIndex = 0;
}
]]>
</mx:Script>
<mx:ViewStack id="viewStack" width="100%" height="100%">
<!-- ログイン画面 -->
<mx:Form width="100%" height="100%">
<mx:FormItem label="ログイン名">
<mx:TextInput id="loginName"/>
</mx:FormItem>
<mx:FormItem>
<mx:Button label="ログイン" click="onLoginButtonClick()"/>
</mx:FormItem>
</mx:Form>
<!-- チャット画面 -->
<mx:Form width="100%" height="100%">
<mx:FormItem label="ログインメンバー">
<mx:Text text="{memberList}"/>
</mx:FormItem>
<mx:FormItem label="発言履歴">
<mx:TextArea text="{so.messageHistory}" editable="false"/>
</mx:FormItem>
<mx:FormItem label="発言" direction="horizontal">
<mx:TextInput id="messageText"/>
<mx:Button label="送信" click="onSendButtonClick()"/>
<mx:Button label="通知" click="onAlertButtonClick()"/>
</mx:FormItem>
<mx:Button label="ログアウト" click="onLogoutButtonClick()"/>
</mx:Form>
</mx:ViewStack>
</mx:Application>