package client;

import java.rmi.Remote;
import java.rmi.RemoteException;

/** 
 *  Das Interface ClientChatKommunikator, welches jeder ChatClient implementiert.
 *  (Sowohl für den globalen als auch für die lokalen Chats)
 *  lebtNoch() gibt es hier auch nicht mehr
 *
 *  @version 1.2
 *  @author ProgPrak-Team
 */

public interface ClientChatKommunikator extends Remote {
	
  
    /** 
     * wird vom {@link server.ServerChatKommunikator} aufgerufen, um bei diesem 
     * ClientChatKommunikator eine Nachricht, die an alle Teilnehmer ging, anzuzeigen.
     *  @param sender der Name des Senders
     *  @param nachricht die anzuzeigende Nachricht
     */
    public void nachricht(String sender, String nachricht) throws RemoteException;

    /** 
     * wird vom {@link server.ServerChatKommunikator} aufgerufen, um bei diesem 
     * ClientChatKommunikator eine Nachricht, die nur an diesen Teilnehmer ging, anzuzeigen.
     *  @param sender der Name des Senders
     *  @param nachricht die anzuzeigende Nachricht
     */
    public void privateNachricht(String sender, String nachricht) throws RemoteException;
    
    /** 
     * wird vom {@link server.ServerChatKommunikator} aufgerufen, um bei diesem 
     * ClientChatKommunikator eine Server-Nachricht anzuzeigen.
     *  @param nachricht die anzuzeigende Nachricht
     */
    public void serverNachricht(String nachricht) throws RemoteException;
    
    /** 
     * benachrichtigt den Teilnehmer über die Anmeldung eines neuen Teilnehmers.
     *  @param teilnehmername der Name des neuen Teilnehmers
     */
    public void neuerTeilnehmer(String teilnehmername) throws RemoteException;
    
    /**
     * benachrichtigt den Teilnehmer über die Abmeldung eines Teilnehmers.
     *  @param teilnehmername der Name des abgemeldeten Teilnehmers
     */
    public void teilnehmerAbgemeldet(String teilnehmername) throws RemoteException;
    
    /** 
     * benachrichtigt den Teilnehmer darüber, dass ein anderer
     * Teilnehmer vorübergehend nicht erreichbar ist.
     *  @param teilnehmername der Name des nicht erreichbaren Teilnehmers
     */
    public void teilnehmerInaktiv(String teilnehmername) throws RemoteException;

    /**
     * benachrichtigt den Teilnehmer darüber, dass ein anderer
     * Teilnehmer wieder erreichbar ist.
     *  @param teilnehmername der Name des wieder erreichbaren Teilnehmers
     */
    public void teilnehmerAktiv(String teilnehmername) throws RemoteException;
}
