// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   Boggle.java

import java.awt.*;
import java.awt.event.*;
import java.util.EventObject;
import javax.swing.*;

public class Boggle extends JFrame
    implements ActionListener, MouseListener
{

    public Boggle()
    {
        grid = null;
        client = new BoggleClient();
        word = "";
        BOGGLESERVER = "localhost";
        dialogName = new BoggleCustomDialog(this, "Player information", "Please enter your name", "Player1");
        dialogServer = new BoggleCustomDialog(this, "Server information", "Please enter desired server (IP/Name)", BOGGLESERVER);
        addWindowListener(new  Object()     /* anonymous class not found */
    class _anm1 {}

);
        setTitle("Boggle");
        setResizable(false);
        setupWindow(new Dimension(200, 270));
        timer = createTimer(timer);
        pictPane = new JPanel();
        pictPane.setPreferredSize(new Dimension(198, 230));
        ImageIcon imageicon = new ImageIcon("Images/normalgridtest.gif", "Introduction image");
        pictPane.add(new JLabel(imageicon));
        getContentPane().add(pictPane);
        addMouseListener(this);
        getContentPane().addMouseListener(this);
    }

    public void actionPerformed(ActionEvent actionevent)
    {
        String s = actionevent.getActionCommand();
        if(actionevent.getSource() instanceof JMenuItem)
        {
            JMenuItem jmenuitem = (JMenuItem)actionevent.getSource();
            s = jmenuitem.getText();
            if(s.equals("Quit"))
            {
                dispose();
                System.exit(0);
            }
            if(s.equals("New"))
            {
                if(gamePanel == null)
                    if(checkGrid())
                        gamePanel = new BoggleGamePanel(this, grid);
                    else
                        return;
                dialogName.setLocationRelativeTo(this);
                dialogName.pack();
                dialogName.setVisible(true);
                String s1 = dialogName.getInputText();
                int i = dialogName.getRetValue();
                if(i == 0)
                {
                    globalServerMenuItem.setEnabled(false);
                    player = new BogglePlayer(s1);
                    getContentPane().removeAll();
                    getContentPane().add(gamePanel);
                    gamePanel.setBounds(10, 10, 198, 228);
                    validate();
                    repaint();
                    timer.start();
                }
                dialogName.resetButtons();
                return;
            }
            if(s.equals("View HiScores"))
            {
                if(scoreTable == null)
                    scoreTable = new BoggleHiScoreTable(this);
                if(checkGrid())
                {
                    scoreTable.setHiScoreTable(client.getServerHiScore(BOGGLESERVER, 7001));
                    scoreTable.displayScores();
                    dialogName.setLocationRelativeTo(this);
                    scoreTable.setResizable(false);
                    scoreTable.pack();
                    scoreTable.setVisible(true);
                }
                return;
            }
            if(s.equals("Boggle server"))
            {
                for(boolean flag = false; !flag;)
                {
                    dialogServer.setLocationRelativeTo(this);
                    dialogServer.pack();
                    dialogServer.setVisible(true);
                    String s3 = dialogServer.getInputText();
                    int j = dialogServer.getRetValue();
                    if(j == 0)
                    {
                        BOGGLESERVER = s3;
                        repaint();
                        grid = client.getServerGrid(BOGGLESERVER, 6969);
                        if(grid == null)
                        {
                            JOptionPane.showMessageDialog(this, "Host: \"" + BOGGLESERVER + "\" " + "isn't responding.\n" + "Please input a valid host.", "Invalid server", 0);
                        } else
                        {
                            JOptionPane.showMessageDialog(this, "Connected to \"" + BOGGLESERVER + "\" ", "Successful connection", 1);
                            flag = true;
                        }
                    } else
                    {
                        flag = true;
                    }
                    dialogServer.resetButtons();
                    repaint();
                }

                dialogServer.resetButtons();
                return;
            }
            if(s.equals("About"))
            {
                String s2 = "Boggle Client/Server game\n";
                s2 = s2 + "Written by E.W.Buckney, eb7669@bris.ac.uk\n";
                JOptionPane.showMessageDialog(this, s2, "About", 1);
                return;
            }
        } else
        {
            gamePanel.applyRules(actionevent);
            word = word + s;
        }
    }

    private boolean checkGrid()
    {
        if(grid == null)
        {
            JOptionPane.showMessageDialog(this, "Host: \"" + BOGGLESERVER + "\" " + "isn't responding.\n" + "Please input a valid host, using server settings", "Invalid server", 0);
            return false;
        } else
        {
            return true;
        }
    }

    private void createMenu(JMenuBar jmenubar)
    {
        JMenu jmenu = new JMenu("Game");
        JMenu jmenu1 = new JMenu("Help");
        JMenuItem jmenuitem = new JMenuItem("New");
        globalServerMenuItem = new JMenuItem("Boggle server");
        jmenuitem.addActionListener(this);
        jmenu.add(jmenuitem);
        jmenuitem = new JMenuItem("View HiScores");
        jmenuitem.addActionListener(this);
        jmenu.add(jmenuitem);
        jmenu.addSeparator();
        jmenu.add(globalServerMenuItem);
        globalServerMenuItem.addActionListener(this);
        jmenu.addSeparator();
        jmenuitem = new JMenuItem("Quit");
        jmenuitem.addActionListener(this);
        jmenu.add(jmenuitem);
        jmenuitem = new JMenuItem("About");
        jmenuitem.addActionListener(this);
        jmenu1.add(jmenuitem);
        jmenubar.add(jmenu);
        jmenubar.add(jmenu1);
    }

    private Timer createTimer(Timer timer1)
    {
        timer1 = new Timer(0x2bf20, new  Object()     /* anonymous class not found */
    class _anm2 {}

);
        timer1.setRepeats(false);
        return timer1;
    }

    public static void main(String args[])
    {
        String s = "localhost";
        try
        {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch(Exception _ex) { }
        Boggle boggle = new Boggle();
        if(args.length >= 1)
            boggle.setServer(args[0]);
        else
            boggle.setServer(s);
        JMenuBar jmenubar = new JMenuBar();
        boggle.createMenu(jmenubar);
        boggle.setJMenuBar(jmenubar);
        boggle.pack();
        boggle.show();
    }

    public void mouseClicked(MouseEvent mouseevent)
    {
        if(SwingUtilities.isRightMouseButton(mouseevent) && word != "")
        {
            String s = player.newWord(word);
            word = "";
            gamePanel.updateGrid();
            gamePanel.updateScore(player.getPlayerScore());
        }
    }

    public void mouseEntered(MouseEvent mouseevent)
    {
    }

    public void mouseExited(MouseEvent mouseevent)
    {
    }

    public void mousePressed(MouseEvent mouseevent)
    {
    }

    public void mouseReleased(MouseEvent mouseevent)
    {
    }

    public void setServer(String s)
    {
        grid = client.getServerGrid(s, 6969);
        BOGGLESERVER = s;
        checkGrid();
    }

    private void setupWindow(Dimension dimension)
    {
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        Dimension dimension1 = toolkit.getScreenSize();
        int i = dimension1.width / 2;
        int j = dimension1.height / 2;
        setLocation(i - dimension.width / 2, j - dimension.height / 2);
    }

    private void showDialogBox()
    {
        String s = "Boggle Client/Server game\n";
        s = s + "Player: " + player.getPlayerName() + "\n";
        s = s + "Score:  " + player.getPlayerScore() + "\n";
        s = s + "\nScore submitted to server HiScore Table";
        JOptionPane.showMessageDialog(this, s, "Time's Up!", 1);
    }

    private BoggleGrid grid;
    private BoggleClient client;
    private BoggleHiScoreTable scoreTable;
    private BogglePlayer player;
    private Timer timer;
    private String word;
    private JPanel pictPane;
    private BoggleGamePanel gamePanel;
    private String BOGGLESERVER;
    private JMenuItem globalServerMenuItem;
    private BoggleCustomDialog dialogName;
    private BoggleCustomDialog dialogServer;








}
