rendered paste bodypackage com.sg.clnt.gui;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import java.awt.Rectangle;import java.awt.event.*;import java.util.Hashtable;import java.util.Iterator;import javax.swing.*;public class IRCPanel extends JPanel { public JButton connect = new JButton("Connect"); public boolean connected = false; public IRCClient client = new IRCClient(this); public JTextArea nick = new JTextArea("Nick Name Here"); public Hashtable<String, JTextArea> windows = new Hashtable<String,JTextArea>(); public JTextArea cWindow = null; private MainForm f = Main.mainForm; private JTabbedPane t = Main.mainForm.getTabs(); private JScrollPane scrollPane = null; public IRCPanel() { this.setLayout(null); connect.setBounds(new Rectangle(10,10,100,25)); add(connect); nick.setBounds(new Rectangle(t.getWidth() - 110,10,100,25)); nick.setDragEnabled(false); add(nick); addWindow("Status Window"); showWindow("Status Window"); connect.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if (connected) { return; } connected = false; connect.setEnabled(!client.connect()); } }); nick.addKeyListener( new KeyListener() { public void keyPressed(KeyEvent arg0) { // TODO Auto-generated method stub } public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub } public void keyTyped(KeyEvent arg0) { if (arg0.paramString().matches(".*?keyChar=Enter.*")) { nick.setCaretPosition(0); if (client.isConnected()) { client.changeNick(nick.getText().trim()); } else { connect.setEnabled(!client.connect()); } } } } ); } public void print(String window,String text) { for (String w : windows.keySet()) { if (w.equalsIgnoreCase(window)) { JTextArea p = getWindow(window); p.setText(p.getText() + "\n" + text); p.setCaretPosition(p.getText().length()); break; } } } public boolean isWindow(String window) { for (String w : windows.keySet()) { if (w.equalsIgnoreCase(window)) { return true; } } return false; } public void addWindow(String window) { if (!isWindow(window)) { windows.put(window, new JTextArea()); } } public JTextArea getWindow(String window) { for (String w : windows.keySet()) { if (w.equalsIgnoreCase(window)) { return windows.get(w); } } return null; } public void showWindow(String window) { if (cWindow != null) { remove(cWindow); } if (scrollPane != null) { remove(scrollPane); } JTextArea p = getWindow(window); p.setAutoscrolls(true); p.setBounds(new Rectangle(10,45,t.getWidth() - 20,t.getHeight() -120)); if (p == null) { JOptionPane.showMessageDialog(Main.mainForm, "Error","Invalid window shown: " + window,JOptionPane.ERROR_MESSAGE); return; } cWindow = p; add(p); scrollPane = new JScrollPane(p); add(p); print(window,"You are now active in " + window); } public String getWindowName(JTextArea p) { for (String w : windows.keySet()) { if (windows.get(w) == p) { return w; } } return null; } public void delWindow(String window) { if (window.equalsIgnoreCase("status window")) { return; } Iterator<String> it = windows.keySet().iterator(); while (it.hasNext()) { String c = it.next(); if (c.equalsIgnoreCase(window)) { it.remove(); if (getWindow(c) == cWindow) { showWindow("status window"); } return; } } JOptionPane.showMessageDialog(Main.mainForm, "Error","Invalid window removed: " + window,JOptionPane.ERROR_MESSAGE); }}