/*
* Chat.java
*
* Created on 22. März 2005, 18:09
*/
package CardHeroes;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import javax.swing.JScrollPane.*;
/**
*
* @author KoRnFreak
*/
public class Chat extends javax.swing.JDialog implements Runnable, KeyListener {
private String IP ="0";
private Spieler Selber;
private ObjectInputStream ObjectIn=null;
private ObjectOutputStream ObjectOut=null;
private DataInputStream DataIn=null;
private DataOutputStream DataOut=null;
/** Creates new form Chat */
public Chat(java.awt.Frame parent, boolean modal, String IP, Spieler Selber) {
super(parent, modal);
this.IP = IP;
this.Selber = Selber;
initComponents();
senden.setText("OK");
setTitle("CardHeroes Chat");
this.addKeyListener(this);
ausgang.setLineWrap(true);
eingang.setLineWrap(true);
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public void keyTyped(KeyEvent e) {
if ((e.isAltDown()) && (e.getKeyChar() == 's')){
senden(ausgang.getText());
}
}
public void run(){
initNet();
while(true){
try{
empfangen();
Thread.sleep(1000);
}
catch(Exception e){
}
}
}
public void senden(String nachricht){
try{
ObjectOut.writeObject(Selber.getName()+": "+nachricht);
ObjectOut.flush();
ObjectOut.reset();
eingang.setText(eingang.getText()+"\n"+Selber.getName()+": "+nachricht);
ausgang.setText("");
jScrollPane1.getVerticalScrollBar().setValue(jScrollPane1.getVerticalScrollBar().getMaximum());
}
catch(Exception e){}
}
public void empfangen(){
try{
String nachricht = ((String)ObjectIn.readObject());
eingang.setText(eingang.getText()+"\n"+nachricht);
jScrollPane1.getVerticalScrollBar().setValue(jScrollPane1.getVerticalScrollBar().getMaximum()+10);
}
catch (Exception e){}
}
public void initNet(){
int geschafft = 0;
try
{
Socket ConnectionSocket=new Socket(IP,9998);
this.ObjectOut=new ObjectOutputStream(ConnectionSocket.getOutputStream());
this.ObjectIn=new ObjectInputStream(ConnectionSocket.getInputStream());
geschafft = 1;
//StreamIn.ObjectObject();
}
catch(Exception e){
geschafft = 0;
}
if(geschafft == 0){
try{
ServerSocket ConnectionSocket=new ServerSocket(9998);
Socket ClientConnection=ConnectionSocket.accept();
this.ObjectIn=new ObjectInputStream(ClientConnection.getInputStream());
this.ObjectOut=new ObjectOutputStream(ClientConnection.getOutputStream());
}
catch(Exception e){
}
}
}
private void initComponents() {
jScrollPane1 = new javax.swing.JScrollPane();
eingang = new javax.swing.JTextArea();
jScrollPane2 = new javax.swing.JScrollPane();
ausgang = new javax.swing.JTextArea();
senden = new javax.swing.JButton();
getContentPane().setLayout(null);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setResizable(false);
eingang.setEditable(false);
jScrollPane1.setViewportView(eingang);
getContentPane().add(jScrollPane1);
jScrollPane1.setBounds(0, 0, 450, 260);
ausgang.setEditable(false);
jScrollPane2.setViewportView(ausgang);
getContentPane().add(jScrollPane2);
jScrollPane2.setBounds(2, 262, 380, 80);
senden.setText("jButton1");
senden.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
sendenActionPerformed(evt);
}
});
getContentPane().add(senden);
senden.setBounds(390, 270, 60, 70);
pack();
}
private void sendenActionPerformed(java.awt.event.ActionEvent evt) {
senden(ausgang.getText());
ausgang.requestFocus();
}
/**
* @param args the command line arguments
*/
// Variables declaration - do not modify
private javax.swing.JTextArea ausgang;
private javax.swing.JTextArea eingang;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JButton senden;
// End of variables declaration
}