Files
Work/java/JCHAT/ChatAdapter.java
2024-08-07 09:16:27 -04:00

109 lines
4.1 KiB
Java

import java.awt.*;
import java.applet.*;
import java.net.*;
import java.io.*;
import java.awt.event.*;
import java.lang.reflect.*;
import com.ms.security.*;
public class ChatAdapter extends Applet
{
String mStrLabel=new String();
IOManager mIOManager=new IOManager();
AdviseThread mAdviseThread=null;
GUIControls mGUIControls=null;
public void init()
{
setFont(new Font("Courier New",Font.BOLD,12));
setBackground(Color.lightGray);
mGUIControls=new GUIControls(this);
try{if(Class.forName("com.ms.security.PolicyEngine") != null)PolicyEngine.assertPermission(PermissionID.NETIO);}
catch(Throwable cnfe){;}
mGUIControls.status().setText("Not connected.");
}
public void stop()
{
mAdviseThread.isCancelled(true);
mIOManager.shutdown();
}
public void destroy()
{
}
public void paint(Graphics graphics)
{
}
public void showUsers()
{
StringArray userList=new StringArray();
mIOManager.who(userList);
if(0==userList.size())mGUIControls.list().addItem(new String("There are no users logged in at this time."));
for(int index=0;index<userList.size();index++)
{
mGUIControls.list().addItem(new String("User;'")+ userList.getAt(index)+new String("' is here."));
}
}
public boolean action(Event event,Object object)
{
if(mGUIControls.connect()==event.target)
{
StringArray receiveStrings=new StringArray();
String strResponse=new String();
String strIPAddress=null;
String strAdviseAddress=null;
String strPort=null;
strAdviseAddress=new String(getParameter("advise"));
if(null==strAdviseAddress||0==strAdviseAddress.length())strAdviseAddress=new String(AdviseThread.getAdviseAddress());
strIPAddress=new String(getParameter("ip"));
if(null==strIPAddress||0==strIPAddress.length())strIPAddress=new String("");
strPort=new String(getParameter("port"));
if(null==strPort||0==strPort.length())strPort=new String("");
if(0==mGUIControls.userName().getText().length()){mGUIControls.status().setText("'User Name' cannot be empty.");return false;}
if(0!=strIPAddress.length())mGUIControls.status().setText(new String("trying '")+strIPAddress+new String("'"));
else mGUIControls.status().setText(new String("trying 'localhost'"));
if(0==strPort.length())strPort="100";
mIOManager.connect(strIPAddress,Integer.parseInt(strPort));
if(!mIOManager.isConnected()){mGUIControls.status().setText("Failed to connect to host.");return true;}
else mGUIControls.status().setText("Connection established.");
mAdviseThread=new AdviseThread(mGUIControls.list());
mAdviseThread.start();
mGUIControls.status().setText(new String("Advising server of talkback '")+strAdviseAddress+new String("'"));
mIOManager.advise(strAdviseAddress,mAdviseThread.AdvisePort);
mGUIControls.status().setText("Logging into server...");
if(!mIOManager.user(mGUIControls.userName().getText(),receiveStrings))
{
mGUIControls.status().setText("Login failed");
for(int index=0;index<receiveStrings.size();index++)mGUIControls.list().addItem(receiveStrings.getAt(index));
mAdviseThread.isCancelled(true);
mIOManager.shutdown();
return true;
}
mStrLabel=mIOManager.version();
mGUIControls.connect().setEnabled(false);
mGUIControls.disconnect().setEnabled(true);
mGUIControls.send().setEnabled(true);
mGUIControls.status().setText("Connected.");
mGUIControls.list().removeAll();
showUsers();
}
else if(mGUIControls.disconnect()==event.target)
{
mAdviseThread.isCancelled(true);
mIOManager.shutdown();
mGUIControls.connect().setEnabled(true);
mGUIControls.disconnect().setEnabled(false);
mGUIControls.send().setEnabled(false);
mGUIControls.status().setText("Not connected.");
}
else if(mGUIControls.send()==event.target&&mIOManager.isConnected())
{
mIOManager.talk(mGUIControls.text().getText());
mGUIControls.status().setText("Message sent.");
mGUIControls.text().setText("");
}
return true;
}
}