public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
/******** Function To Send MESS Rfc to Server *************/
private void SendMessage()
{
/********Sending a Message To Server *********/
SendMessageToServer("MESS "+UserRoom+"~"+UserName+": "+TxtMessage.getText());
messagecanvas.AddMessageToMessageObject(UserName+": "+TxtMessage.getText(),MESSAGE_TYPE_DEFAULT);
TxtMessage.setText("");
TxtMessage.requestFocus();
}
/*********Function To Update the Information Label*****/
private void UpdateInformationLabel()
{
stringbuffer = new StringBuffer();
stringbuffer.append("User Name: ");
stringbuffer.append(UserName);
stringbuffer.append(" ");
stringbuffer.append("Room Name: ");
stringbuffer.append(UserRoom);
stringbuffer.append(" ");
stringbuffer.append("No. Of Users: ");
stringbuffer.append(TotalUserCount);
stringbuffer.append(" ");
InformationLabel.setText(stringbuffer.toString());
}
/********Implements the Thread ****************/
public void run()
{
while(thread != null)
{
try {
ServerData = datainputstream.readLine();
/********* LIST UserName;UserName; RFC Coding***********/
if(ServerData.startsWith("LIST"))
{
Tokenizer = new StringTokenizer(ServerData.substring(5),";");
/********Update the Information Label *********/
TotalUserCount = Tokenizer.countTokens();
UpdateInformationLabel();
/**********Add User Item into User Canvas *********/
tappanel.UserCanvas.ClearAll();
while(Tokenizer.hasMoreTokens())
{
tappanel.UserCanvas.AddListItemToMessageObject(Tokenizer.nextToken());
}
messagecanvas.ClearAll();
messagecanvas.AddMessageToMessageObject("Welcome To The "+UserRoom+" Room!",MESSAGE_TYPE_JOIN);
}
/*********Room Rfc ********/
if( ServerData.startsWith("ROOM"))
{
/********** Loading Room List in to Room Canvas **************/
Tokenizer = new StringTokenizer(ServerData.substring(5),";");
UserRoom = Tokenizer.nextToken();
UpdateInformationLabel();
/**********Add User Item into User Canvas *********/
tappanel.RoomCanvas.ClearAll();
tappanel.RoomCanvas.AddListItemToMessageObject(UserRoom);
while(Tokenizer.hasMoreTokens())
{
tappanel.RoomCanvas.AddListItemToMessageObject(Tokenizer.nextToken());
}
}
/********** ADD RFC *********/
if(ServerData.startsWith("ADD"))
{
/********Update the Information Label *********/
TotalUserCount++;
UpdateInformationLabel();
/**********Add User Item into User Canvas *********/
SplitString = ServerData.substring(5);
EnablePrivateWindow(SplitString);
tappanel.UserCanvas.AddListItemToMessageObject(SplitString);
messagecanvas.AddMessageToMessageObject(SplitString + " joins chat...",MESSAGE_TYPE_JOIN);
}
/*********If User Name Alread Exists **********/
if (ServerData.startsWith("EXIS"))
{
messagecanvas.AddMessageToMessageObject(" User Name Already Exists... Try Again With Some Other Name!",MESSAGE_TYPE_ADMIN);
thread = null;
QuitConnection(QUIT_TYPE_NULL);
}
/******** REMOVE User RFC Coding **********/
if (ServerData.startsWith("REMO"))
{
SplitString = ServerData.substring(5);
tappanel.UserCanvas.RemoveListItem(SplitString);
RemoveUserFromPrivateChat(SplitString);
messagecanvas.AddMessageToMessageObject(SplitString+" has been logged Out from Chat!",MESSAGE_TYPE_LEAVE );
/*****Update the Information Label ********/
TotalUserCount--;
UpdateInformationLabel();
/***** KICK RFC Starts ***********/
if (ServerData.startsWith("KICK"))
{
messagecanvas.AddMessageToMessageObject("You are Kicked Out From Chat for flooding the message!",MESSAGE_TYPE_ADMIN);
thread = null;
QuitConnection(QUIT_TYPE_KICK);
}
/***** INKI RFC (Information about kicked off User *********/
if( ServerData.startsWith("INKI"))
{
SplitString = ServerData.substring(5);
tappanel.UserCanvas.RemoveListItem(SplitString);
RemoveUserFromPrivateChat(SplitString);
messagecanvas.AddMessageToMessageObject(SplitString+" has been kicked Out from Chat by the Administrator!",MESSAGE_TYPE_ADMIN );
/*****Update the Information Label ********/
TotalUserCount--;
UpdateInformationLabel();
}
if(!(PrivateFlag))
{
if(PrivateWindowCount >= 40)
{
messagecanvas.AddMessageToMessageObject("You are Exceeding private window limit! So you may lose some message from your friends!",MESSAGE_TYPE_ADMIN);
}
else
{
privatewindow[PrivateWindowCount++] = new PrivateChat(this,SplitString);
privatewindow[PrivateWindowCount-1].AddMessageToMessageCanvas(ServerData.substring(5));
privatewindow[PrivateWindowCount-1].show();
privatewindow[PrivateWindowCount-1].requestFocus();
}
}
/********* Function to Change Room *******/
protected void ChangeRoom()
{
if(tappanel.RoomCanvas.SelectedUser.equals(""))
{
messagecanvas.AddMessageToMessageObject("Invalid Room Selection!",MESSAGE_TYPE_ADMIN);
return;
}
if(tappanel.RoomCanvas.SelectedUser.equals(UserRoom))
{
messagecanvas.AddMessageToMessageObject("You are already in that ROOM!",MESSAGE_TYPE_ADMIN);
return;
}
/******* Function to Send a RFC for Get a Room User Count ********/
protected void GetRoomUserCount(String RoomName)
{
SendMessageToServer("ROCO "+RoomName);
}
/******** Function to Set the Image Name into Text Field ************/
protected void AddImageToTextField(String ImageName)
{
if(TxtMessage.getText()==null || TxtMessage.getText().equals(""))
TxtMessage.setText("~~"+ImageName+" ");
else
TxtMessage.setText(TxtMessage.getText()+" "+"~~"+ImageName+" ");
}
/*********Function to Destroy all the Objects********/
private void QuitConnection(int QuitType)
{
if(socket != null)
{
try {
if (QuitType == QUIT_TYPE_DEFAULT)
SendMessageToServer("QUIT "+UserName+"~"+UserRoom);
if (QuitType == QUIT_TYPE_KICK)
SendMessageToServer("KICK "+UserName+"~"+UserRoom);
socket.close();
socket = null;
tappanel.UserCanvas.ClearAll();
}catch(IOException _IoExc) { }
}
if(thread != null)
{
thread.stop();
thread = null;
}
DisableAll();
StartFlag = false;
SetAppletStatus("ADMIN: CONNECTION TO THE SERVER CLOSED.");
}
/***** Function To Disable All Components ********/
private void DisableAll()
{
TxtMessage.setEnabled(false);
CmdSend.setEnabled(false);
tappanel.enable(false);
disconnectitem.setEnabled(false);
loginitem.setEnabled(true);
UserName = "";
UserRoom = "";
TotalUserCount = 0;
}
/***** Function To Enable All Components ********/
private void EnableAll()
{
TxtMessage.setEnabled(true);
CmdSend.setEnabled(true);
tappanel.enable(true);
disconnectitem.setEnabled(true);
loginitem.setEnabled(false);
}
/*******Diconnect Chat ********/
private void DisconnectChat()
{
if(socket != null)
{
messagecanvas.AddMessageToMessageObject("CONNECTION TO THE SERVER CLOSED",MESSAGE_TYPE_ADMIN);
QuitConnection(QUIT_TYPE_DEFAULT);
}
}
/*********Setting the AppletStatus********/
private void SetAppletStatus(String Message)
{
if (messagecanvas != null)
messagecanvas.AddMessageToMessageObject(Message,MESSAGE_TYPE_ADMIN);
}
public void EnvoyerFichier(String type,String Em,String Recep,String nom,File f)
{
try {
out.writeObject(type);
out.writeObject(Em);
out.writeObject(Recep);
out.writeObject(nom);
Envoi f1 = new Envoi();
f1.Send(f);
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public void RecoiFichier(String Path)
{
}
public static void main(String args[]) {
ChatClient mainFrame = new ChatClient();
}
/**************Global Variable Declarations*****************/
String UserName,UserRoom,ServerName,AppletStatus,ChatLogo,BannerName,ProxyHost,ServerData,RoomList,SplitString;
Image ImgLogo,ImgBanner;
int ServerPort,ProxyPort,IconCount,TotalUserCount,G_ILoop;
boolean StartFlag,IsProxy;
Socket socket;
DataInputStream datainputstream;
DataOutputStream dataoutputstream;
Color[] ColorMap;
Dimension dimension;
MediaTracker tracker;
Label InformationLabel;
StringBuffer stringbuffer;
Image[] IconArray;
MessageCanvas messagecanvas;
ScrollView MessageScrollView;
Thread thread;
StringTokenizer Tokenizer;
TapPanel tappanel;
TextField TxtMessage;
Button CmdSend,CmdExit;
Font TextFont;
protected PrivateChat[] privatewindow;
protected int PrivateWindowCount;
InformationDialog dialog;
Toolkit toolkit;
MenuItem loginitem;
MenuItem disconnectitem;
MenuItem seperatoritem;
MenuItem quititem,aboutitem;
ObjectOutputStream out;
public int MESSAGE_TYPE_DEFAULT = 0;
public int MESSAGE_TYPE_JOIN = 1;
public int MESSAGE_TYPE_LEAVE = 2;
public int MESSAGE_TYPE_ADMIN = 3;
public int QUIT_TYPE_DEFAULT = 0;
public int QUIT_TYPE_KICK = 1;
public int QUIT_TYPE_NULL = 2;
}