/*
 * ChatMember.java
 *
 * Created on 31 January 2001, 01:39
 */

package senseiTests.chat.corba;

import sensei.middleware.gms.GroupHandler;
import sensei.middleware.gms.Message;
import sensei.middleware.gms.View;

/**
 *
 * @author  Administrator
 * @version
 */
public class ChatMember extends sensei.middleware.gms.GroupMemberImpl
{

    /** Creates new ChatMember */
  public ChatMember() throws Exception
  {
    handler=null;
    gui = new ChatFrame(this);
  }

    /**
     * The member is excluded from the group, because it has requested it or because
     * it's considered to be faulty.
     */
  public void excludedFromGroup()
  {
    gui.enableMessages(false);
    gui.error("Member excluded from the group");
    System.exit(0);
  }

    /**
     * The member receives a new view, including the list of members
     * @param message The message to process
     */
  public void installView(View view)
  {
  }

  public void changingView()
  {
  }

    /**
     * The member is accepted in the group, and receives the first view and its identity
     * It receives as well the GroupHandler to use for communications
     */
  public void memberAccepted(int identity,GroupHandler handler,View view)
  {
    this.handler=handler;
    gui.enableMessages(true);
  }

    /**
     * The member receives a group message to be processed
     * @param message The message to process
     */
  public void processCastMessage(int sender,Message message)
  {
    ChatMessage msg = (ChatMessage) message;
    gui.addChatMessage(msg.msg);
  }

    /**
     * The member receives a point to point message to be processed
     * @param message The message to process
     */
  public void processPTPMessage(int sender,Message message)
  {
  }

  /**
   * Called by the ChatFrame instance when the Send button is pressed
   **/
  public void ownMessage(java.lang.String message)
  {
    try {handler.castMessage(ChatMessageFactory.create(message));}
    catch(Exception ex){gui.error(ex.getMessage());}
  }

  /**
   * Called by the ChatFrame instance when closing the frame
   **/
  public void exiting()
  {
    try {handler.leaveGroup();}
    catch(Exception ex){gui.error(ex.getMessage());}
  }

  ChatFrame gui;
  GroupHandler handler;
}