rendered paste bodyimport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//import GUI.class;
public class GUI implements ActionListener
{
JFrame frame; //window
JList userList;
JScrollPane mainScrollPane,mainScrollPane1,userScrollPane;
JTabbedPane contentPane;
JPanel container; //JPanel - holds everything
GridBagConstraints gbc;
JEditorPane pane,pane1;
JTextField inputField;
DefaultListModel listModel;
//menu vars
JMenuBar menuBar;
JMenu menuFile;
JMenuItem menuFileExit;
JMenu menuEdit;
JMenuItem menuEditPreferences;
public GUI(NET a)
{
/********************
Main Frame
********************/
JFrame.setDefaultLookAndFeelDecorated(false);
frame = new JFrame("Jirk IRC Client");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
frame.setVisible(true);
/********************
Menu
********************/
menuBar = new JMenuBar();
menuFile = new JMenu("FILE");
menuFileExit = new JMenuItem("Exit");
menuFileExit.setActionCommand("Exit");
menuFileExit.addActionListener(this);
menuFile.add(menuFileExit);
menuBar.add(menuFile);
menuEdit = new JMenu("EDIT");
menuEditPreferences = new JMenuItem("Preferences");
menuEditPreferences.setActionCommand("Preferences");
menuEditPreferences.addActionListener(this);
menuEdit.add(menuEditPreferences);
menuBar.add(menuEdit);
frame.setJMenuBar(menuBar);
/********************
Main Content Panel
********************/
container = new JPanel(new GridBagLayout());
frame.setContentPane(container);
gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.weightx = .5;
gbc.weighty = .5;
contentPane = new JTabbedPane();
contentPane.setPreferredSize(new Dimension(500, 300));
pane = new JEditorPane();
pane.setEditable(false);
mainScrollPane = new JScrollPane(pane);
mainScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//mainScrollPane.setPreferredSize(new Dimension(500, 300));
//mainScrollPane.setMinimumSize(new Dimension(10, 10));
pane1 = new JEditorPane();
pane1.setEditable(false);
mainScrollPane1 = new JScrollPane(pane1);
mainScrollPane1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
//mainScrollPane1.setPreferredSize(new Dimension(500, 300));
//mainScrollPane1.setMinimumSize(new Dimension(10, 10));
contentPane.addTab("Raw", mainScrollPane);
contentPane.addTab(NET.channel, mainScrollPane1);
gbc.gridx = 0;
gbc.gridy = 0;
frame.getContentPane().add(contentPane, gbc);
/********************
User List Panel
********************/
userList = new JList();
userList.setLayoutOrientation(JList.VERTICAL);
userScrollPane = new JScrollPane(userList);
userScrollPane.setPreferredSize(new Dimension(100, 300));
gbc.gridx = 1;
gbc.gridy = 0;
gbc.weightx = 0;
gbc.weighty = .5;
gbc.insets = new Insets(20, 5, 12, 5);
gbc.fill = GridBagConstraints.VERTICAL;
gbc.anchor = GridBagConstraints.LINE_END;
frame.getContentPane().add(userScrollPane, gbc);
/********************
Input Text Field
********************/
inputField = new JTextField(20);
inputField.setActionCommand("inputField");
inputField.addActionListener(this);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weightx = .5;
gbc.weighty = 0;
gbc.gridwidth = 2;
gbc.insets = new Insets(0, 0, 0, 0);
gbc.anchor = GridBagConstraints.PAGE_END;
gbc.fill = GridBagConstraints.HORIZONTAL;
frame.getContentPane().add(inputField, gbc);
frame.pack();
}
public void actionPerformed(ActionEvent event) {
String cmd = event.getActionCommand();
if(cmd=="inputField"){
network.writer.write("PRIVMSG #wgb :" + textField.getText() + "\r\n");
network.writer.flush();
// pane1.setText(pane1.getText() + "<" + NET.nick + "> " + inputField.getText() + "\r\n");
// inputField.setText("");
}else if(cmd=="Exit"){
System.exit(0);
}else if(cmd=="Preferences"){
pane.setText(pane.getText() + "Opening Prefs... Not really\r\n");
}else{
pane.setText(pane.getText() + "Unknown Event!\r\n");
}
}
}
import java.io.*;
import java.net.*;
public class NET
{
static String server = "irc.freenode.net";
static String nick = "ubergosu";
static String login = "JirkJIRK";
static String channel = "#wgb";
Socket socket;
BufferedWriter writer;
BufferedReader reader;
public NET()
{
try {
Connect();
Login();
}catch(Exception e){
System.out.println(e.getMessage());
}
}
public void Connect() throws Exception,IOException
{
socket = new Socket(server, 6667);
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream( )));
reader = new BufferedReader(new InputStreamReader(socket.getInputStream( )));
}
public void Login() throws Exception,IOException
{
writer.write("NICK " + nick + "\r\n");
writer.write("USER " + login + " 8 * : Jirk\r\n");
writer.flush( );
}
}
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
//import GUI.class;
public class Jirk
{
public static String version = "0.01";
String line;
GUI gui;
NET net;
public Jirk()
{
gui = new GUI();
net = new NET();
}
public void Loop()
{
try
{
while ((line = net.reader.readLine( )) != null)
{
if (line.indexOf("004") >= 0)
{
break;
}
else if (line.indexOf("433") >= 0)
{
gui.pane.setText(gui.pane.getText() + new String("Nickname already in use.\n"));
return;
}
}
net.writer.write("JOIN " + net.channel + "\r\n");
net.writer.flush( );
while ((line = net.reader.readLine( )) != null)
{
if (line.toLowerCase( ).startsWith("PING "))
{
net.writer.write("PONG " + line.substring(5) + "\r\n");
net.writer.write("PRIVMSG " + net.channel + " :I got pinged!\r\n");
net.writer.flush( );
}else {
gui.pane.setText(gui.pane.getText() + line + "\n");
}
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
}
public String getNick()
{
return net.nick;
}
public static void main(String[] args)
{
Jirk jirkClient = new Jirk();
jirkClient.Loop();
}
}