package main;
import java.io.*;
import java.net.*;
//import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Main {
JTextArea incoming;
JTextField outgoing;
JTextField charName;
BufferedReader reader;
PrintWriter writer;
Socket sock;
// JComboBox rpMode;
String connectionIP = "localhost";
int connectionPort = 5000;
public static void main(String[] args) {
Main client = new Main();
client.go();
} // end main
public void go() {
JFrame frame = new JFrame("Simplex RP Client V1.0 Beta");
JPanel mainPanel = new JPanel();
incoming = new JTextArea(15,50);
incoming.setLineWrap(true);
incoming.setWrapStyleWord(true);
incoming.setEditable(false);
JScrollPane qScroller = new JScrollPane(incoming);
qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
outgoing = new JTextField(50);
// rpMode = new JComboBox("OOC", "IC", "IT", "ME");
charName = new JTextField(30);
charName.setText("Enter a character name here. (Ex:Ryan 'Lulz' Cleary)");
JButton sendButton = new JButton("Send");
sendButton.addActionListener(new SendButtonListener());
mainPanel.add(qScroller);
mainPanel.add(outgoing);
mainPanel.add(sendButton);
mainPanel.add(BorderLayout.SOUTH, charName);
setUpNetworking();
Thread readerThread = new Thread(new IncomingReader());
readerThread.start();
frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
frame.setSize(577,375);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
} // close go
private void setUpNetworking() {
try {
sock = new Socket(connectionIP, connectionPort);
InputStreamReader streamReader = new InputStreamReader(sock.getInputStream());
reader = new BufferedReader(streamReader);
writer = new PrintWriter(sock.getOutputStream());
System.out.println("Networking Established");
} catch(IOException ex) {System.out.println("Failed to connect to server. Error below."); ex.printStackTrace(); incoming.append("Something went wrong between the connection of you and the server. Due to how Sockets function, you will need to restart the application. A more detailed explanation of the error is visible in your console."); outgoing.setEnabled(false); outgoing.setText("Sending messages has been disabled due to an error.");}
} // close setup networking
public class SendButtonListener implements ActionListener {
String rpModeSelection = "IC";
public void actionPerformed(ActionEvent ev) {
if (outgoing.getText() == "SET:OOC") {
rpModeSelection = "OOC";
incoming.append("RP Mode set to OOC");
} else if (outgoing.getText() == "SET:IC"){
rpModeSelection = "IC";
incoming.append("RP Mode set to IC");
} else if (outgoing.getText() == "SET:IT") {
rpModeSelection = "IT";
incoming.append("RP Mode set to IT Statement");
} else if (outgoing.getText() == "SET:ME") {
rpModeSelection = "ME";
} else
//if (!outgoing.getText().equals("SET:OOC") || !outgoing.getText().equals("SET:IC") || !outgoing.getText().equals("SET:ME") || !outgoing.getText().equals("SET:IT"))
{
try {
if (rpModeSelection == "OOC") {
writer.println("[OOC] " + charName.getText() + ": "+ outgoing.getText());
writer.flush();
} else if (rpModeSelection == "IC") {
writer.println(charName.getText() + " says '"+ outgoing.getText() + "'");
writer.flush();
} else if (rpModeSelection == "ME") {
writer.println(charName.getText() + " " + outgoing.getText());
writer.flush();
} else if (rpModeSelection == "IT") {
writer.println("**" + outgoing.getText());
writer.flush();
}
} catch (Exception ex) {ex.printStackTrace();}
outgoing.setText("");
outgoing.requestFocus();
} }
} // close inner class
public class IncomingReader implements Runnable {
public void run() {
String message;
try {
while ((message = reader.readLine()) != null) {
System.out.println("read " + message);
incoming.append(message + "\n");
}// close while
} catch (Exception ex) {ex.printStackTrace();}
}
}
}