// 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:   playerViewer.java

package boggle.client;

import boggle.server.boggleServerInterface;
import boggle.*;
import java.awt.*;
import java.awt.event.*;
import java.io.PrintStream;
import java.util.EventObject;

// Referenced classes of package boggle.client:
//            gameClient, langDialog, messageClient, passwordDialog

public class playerViewer extends Frame
    implements timerCaller
{
    class SymAction
        implements ActionListener
    {

        public void actionPerformed(ActionEvent actionevent)
        {
            Object obj = actionevent.getSource();
            if(obj == joinNumber)
                joinButtonHit();
            if(obj == joinButton)
                joinButtonHit();
            if(obj == createButton)
                createButtonHit();
            if(obj == miNew)
                createButtonHit();
            if(obj == miExit)
                shutDown();
        }

        SymAction()
        {
        }
    }

    class SymWindow extends WindowAdapter
    {

        public void windowClosing(WindowEvent windowevent)
        {
            Object obj = windowevent.getSource();
            if(obj == playerViewer.this)
                shutDown();
        }

        SymWindow()
        {
        }
    }


    public playerViewer(boolean flag)
    {
        fComponentsAdjusted = false;
        fromApplet = flag;
        setLayout(null);
        setVisible(false);
        setSize(getInsets().left + getInsets().right + 366, getInsets().top + getInsets().bottom + 299);
        namesArea = new TextArea();
        namesArea.setEditable(false);
        namesArea.setBounds(getInsets().left + 6, getInsets().top + 3, 356, 241);
        namesArea.setText("Please be patient, Querying the server ...\n\tlooking for " + settings.getHostName());
        add(namesArea);
        namesArea.setEnabled(true);
        namesArea.setCursor(new Cursor(0));
        joinNumber = new TextField(3);
        joinNumber.setBounds(getInsets().left + 318, getInsets().top + 253, 37, 25);
        add(joinNumber);
        joinButton = new Button();
        joinButton.setActionCommand("button");
        joinButton.setLabel("Join Game");
        joinButton.setBounds(getInsets().left + 222, getInsets().top + 253, 74, 25);
        add(joinButton);
        createButton = new Button();
        createButton.setActionCommand("button");
        createButton.setLabel("Start New Game of");
        createButton.setBounds(getInsets().left + 11, getInsets().top + 253, 121, 25);
        add(createButton);
        gameGroup = new CheckboxGroup();
        boggleRadio = new Checkbox(settings.getGameNames()[0], gameGroup, true);
        boggleRadio.setBounds(getInsets().left + 142, getInsets().top + 253, 75, 20);
        add(boggleRadio);
        babbleRadio = new Checkbox(settings.getGameNames()[1], gameGroup, false);
        babbleRadio.setBounds(getInsets().left + 142, getInsets().top + 274, 75, 20);
        add(babbleRadio);
        setTitle("Players on the server");
        mainMenuBar = new MenuBar();
        menu1 = new Menu("File");
        miNew = new MenuItem("New");
        menu1.add(miNew);
        menu1.addSeparator();
        miExit = new MenuItem("Exit");
        menu1.add(miExit);
        mainMenuBar.add(menu1);
        menu3 = new Menu("Help");
        mainMenuBar.setHelpMenu(menu3);
        miAbout = new MenuItem("About..");
        menu3.add(miAbout);
        mainMenuBar.add(menu3);
        setMenuBar(mainMenuBar);
        SymWindow symwindow = new SymWindow();
        addWindowListener(symwindow);
        SymAction symaction = new SymAction();
        joinNumber.addActionListener(symaction);
        miExit.addActionListener(symaction);
        miNew.addActionListener(symaction);
        joinButton.addActionListener(symaction);
        createButton.addActionListener(symaction);
        ticker = new timer(this, settings.getPollTime(), true);
    }

    public void start()
    {
        Point point = new Point(60, 60);
        setLocation(point);
        (new langDialog(this, true)).setVisible(true);
        (new passwordDialog(this, language)).setVisible(true);
        setVisible(true);
    }

    private void shutDown()
    {
        setVisible(false);
        dispose();
    }

    public void dispose()
    {
        if(server != null && player >= 0)
            try
            {
                server.logout(player);
            }
            catch(Exception _ex) { }
        if(!fromApplet)
        {
            System.out.println("Java Application exiting");
            System.exit(0);
        } else
        {
            System.out.println("applet window closing");
        }
        super.dispose();
    }

    public void setLanguage(int i)
    {
        language = i;
    }

    public void setPlayer(int i)
    {
        player = i;
        int j = getLocation().x + getSize().width + 30;
        (new messageClient(j, getLocation().y, i, language, this)).setVisible(true);
    }

    public void setServer(boggleServerInterface boggleserverinterface)
    {
        server = boggleserverinterface;
        ticker.start();
    }

    public void timerAction()
    {
        String s = settings.getLanguages()[language];
        namesArea.setText("You chose the " + s + " language.\n");
        try
        {
            int i = server.getPlayers();
            String as[] = server.getPlayerList();
            for(int j = 0; j < i; j++)
                namesArea.append(as[j] + "\n");

            return;
        }
        catch(Exception exception)
        {
            namesArea.setText("Server Problems?\nException on gathering data!\n");
            namesArea.append(exception.getMessage() + "\n");
            System.out.println("playerViewer: timerAction: " + exception.getMessage());
            exception.printStackTrace();
            return;
        }
    }

    public void addNotify()
    {
        Dimension dimension = getSize();
        super.addNotify();
        if(fComponentsAdjusted)
            return;
        setSize(getInsets().left + getInsets().right + dimension.width, getInsets().top + getInsets().bottom + dimension.height);
        Component acomponent[] = getComponents();
        for(int i = 0; i < acomponent.length; i++)
        {
            Point point = acomponent[i].getLocation();
            point.translate(getInsets().left, getInsets().top);
            acomponent[i].setLocation(point);
        }

        fComponentsAdjusted = true;
    }

    void joinButtonHit()
    {
        int i;
        try
        {
            i = Integer.parseInt(joinNumber.getText());
        }
        catch(NumberFormatException _ex)
        {
            namesArea.setText("The Number in the join box must be between 0 and 999");
            return;
        }
        if(i < 0 || i > 999)
        {
            namesArea.setText("The Number in the join box must be between 0 and 999");
            return;
        } else
        {
            setVisible(false);
            (new gameClient(this, player, false, language, i)).setVisible(true);
            joinNumber.setText("");
            return;
        }
    }

    void createButtonHit()
    {
        String s = gameGroup.getSelectedCheckbox().getLabel();
        boolean flag = false;
        for(int i = 0; i < settings.getGameNames().length; i++)
            if(s.equals(settings.getGameNames()[i]))
            {
                setVisible(false);
                (new gameClient(this, player, true, language, i)).setVisible(true);
                flag = true;
            }

        if(!flag)
            System.out.println("Panic in playerViewer, unknown gameType!!");
    }

    boolean fComponentsAdjusted;
    TextArea namesArea;
    TextField joinNumber;
    Button joinButton;
    Button createButton;
    Checkbox boggleRadio;
    CheckboxGroup gameGroup;
    Checkbox babbleRadio;
    MenuBar mainMenuBar;
    Menu menu1;
    MenuItem miNew;
    MenuItem miExit;
    Menu menu3;
    MenuItem miAbout;
    private int language;
    private int player;
    private timer ticker;
    private boggleServerInterface server;
    private boolean fromApplet;

}

