package de.ctdo.crashtest.cardplayer; import de.ctdo.crashtest.cardplayer.irc.*; import javax.swing.*; import javax.swing.UIManager.*; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.*; import java.net.URL; import java.util.Vector; public class MainFrame extends JFrame { private IrcClient irc; private JList jListWall; private JList jListStates; public MainFrame() { setDefaultCloseOperation(EXIT_ON_CLOSE); setTitle("CrastestCardPlayer"); setPreferredSize(new Dimension(800,500)); irc = new IrcClient(HostHelper.getHostName().toLowerCase(), "#crashtest", "irc.ctdo.de", 6667); setIcon(); setLookAndFeel(); initGui(); setVisible(true); } private void setIcon() { try { URL url = Main.class.getResource("/icon.png"); if(url != null) { ImageIcon icon = new ImageIcon(url); this.setIconImage(icon.getImage()); } } catch (Exception ignored) { } } private void setLookAndFeel() { try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); UIManager.put("nimbusLightBackground", Color.BLACK); UIManager.put("text", new Color(0, 240, 0)); UIManager.put("nimbusSelectionBackground", new Color(0 ,98, 0)); UIManager.put("nimbusFocus", new Color(0 ,255, 0)); UIManager.put("RootPane.background", Color.BLACK); break; } } } catch (Exception e) { // If Nimbus is not available, you can set the GUI to another look and feel. } } private void initGui() { Container contentPane = this.getContentPane(); jListWall = new JList(readData()); jListWall.setLayoutOrientation(JList.VERTICAL); jListWall.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jListWall.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { int index = jListWall.locationToIndex(e.getPoint()); ListModel dlm = jListWall.getModel(); Object item = dlm.getElementAt(index); jListWall.ensureIndexIsVisible(index); if (irc != null) irc.say(">wall " + item); } } }); JScrollPane listScroller = new JScrollPane(jListWall); Vector states = new Vector(); states.add("IDLE"); states.add("ENTERED_ROOM"); states.add("TABLE_GAME_ONE"); states.add("TABLE_GAME_TWO"); states.add("TABLE_GAME_THREE"); states.add("TABLE_GAME_FOUR"); states.add("TABLE_GAME_FIVE"); states.add("TABLE_GAME_SIX"); states.add("TABLE_GAME_DONE"); states.add("ROKET_STARTED"); states.add("ROKET_DONE"); states.add("NEUTRAL"); jListStates = new JList(states); jListStates.setLayoutOrientation(JList.VERTICAL); jListStates.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jListStates.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { int index = jListStates.locationToIndex(e.getPoint()); ListModel dlm = jListStates.getModel(); Object item = dlm.getElementAt(index); jListStates.ensureIndexIsVisible(index); if (irc != null) irc.say(">state " + item); } } }); JScrollPane listScroller2 = new JScrollPane(jListStates); listScroller2.setPreferredSize(new Dimension(150, 500)); contentPane.setLayout(new BorderLayout()); contentPane.add(listScroller2, BorderLayout.EAST); contentPane.add(listScroller); pack(); } private Vector readData() { try { File file; BufferedReader br; file = new File ("messages.txt"); if(file.exists()) { br = new BufferedReader(new FileReader (file)); } else { InputStream is = Main.class.getResourceAsStream("/messages.txt"); br = new BufferedReader(new InputStreamReader(is)); } Vector lines = new Vector(); String line; while((line=br.readLine())!=null) { lines.add(line); } return lines; } catch(Exception e) { e.printStackTrace(); Vector vector = new Vector(); vector.add("could not read the input file..."); return vector; } } }