109 lines
4.1 KiB
Java
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;
|
|
}
|
|
}
|
|
|