flash/src/com/caucho/games/sudoku/LoginComponent.mxml

<?xml version="1.0"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
                title="Login"
                borderAlpha="1.0">

  <mx:VBox>
    <mx:Label text="What's your name?"/>
    <mx:TextInput id="userInput" enter="onEnter(event)"/>
    <mx:HBox width="100%" horizontalAlign="right">
      <mx:Button click="onClick(event)" label="Login"/>
    </mx:HBox>
  </mx:VBox>

  <mx:Script>
  <![CDATA[
  import flash.display.*;
  import mx.controls.*;
  import com.caucho.hmtp.LoginSuccessEvent;
  import com.caucho.hmtp.HmtpClient;

  private var _client:HmtpClient = null;
  private var _sudoku:Sudoku = null;

  public function set client(c:HmtpClient):void
  {
    _client = c;
  }

  public function set sudoku(s:Sudoku):void
  {
    _sudoku = s;
  }

  private function onClick(event:Event):void
  {
    onEnter(event);
  }

  protected function onEnter(event:Event):void
  {
    _client.connect();
    _client.addEventListener(Event.CONNECT, onConnect);
  }

  private function onConnect(event:Event):void
  {
    _client.login(userInput.text, Math.random().toString());
    _client.addEventListener(HmtpClient.LOGIN, onLogin);
  }

  private function onLogin(event:Event):void
  {
    if (event is LoginSuccessEvent) {
      trace("login success!");
      _sudoku.onLogin(event, userInput.text);
    }
    else {
      Alert.show("Login failed");
    }
  }
  ]]>
  </mx:Script>
</mx:TitleWindow>