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();} } } }