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

package boggle.client;

import boggle.server.messageServerInterface;
import boggle.*;
import java.awt.*;
import java.awt.event.*;
import java.io.PrintStream;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.util.EventObject;

public class messageClient extends Dialog
    implements timerCaller
{
    class SymFocus extends FocusAdapter
    {

        public void focusGained(FocusEvent focusevent)
        {
            Object obj = focusevent.getSource();
            if(obj == messageField)
                firstUsed();
        }

        SymFocus()
        {
        }
    }

    class SymMouse extends MouseAdapter
    {

        public void mouseClicked(MouseEvent mouseevent)
        {
            Object obj = mouseevent.getSource();
            if(obj == submitButton)
                submitButton_MouseClick();
        }

        SymMouse()
        {
        }
    }

    class SymAction
        implements ActionListener
    {

        public void actionPerformed(ActionEvent actionevent)
        {
            Object obj = actionevent.getSource();
            if(obj == messageField)
                submitButton_MouseClick();
        }

        SymAction()
        {
        }
    }


    public messageClient(int i, int j, int k, int l, Frame frame)
    {
        super(frame, false);
        fComponentsAdjusted = false;
        used = false;
        playerNumber = -1;
        setLayout(null);
        setVisible(false);
        setSize(getInsets().left + getInsets().right + 440, getInsets().top + getInsets().bottom + 211);
        submitButton = new Button();
        submitButton.setActionCommand("button");
        submitButton.setLabel("Send");
        submitButton.setBounds(getInsets().left + 373, getInsets().top + 12, 60, 25);
        add(submitButton);
        messageField = new TextField();
        messageField.setText("Type your message here");
        messageField.setBounds(getInsets().left + 11, getInsets().top + 11, 351, 26);
        add(messageField);
        messages = new TextArea();
        messages.setEditable(false);
        messages.setBounds(getInsets().left + 12, getInsets().top + 47, 421, 157);
        add(messages);
        messages.setCursor(new Cursor(0));
        setTitle("Boggle Message Centre");
        setResizable(true);
        SymFocus symfocus = new SymFocus();
        messageField.addFocusListener(symfocus);
        SymMouse symmouse = new SymMouse();
        submitButton.addMouseListener(symmouse);
        SymAction symaction = new SymAction();
        messageField.addActionListener(symaction);
        position = new Point(i, j);
        playerNumber = k;
        language = l;
        ticker = new timer(this, settings.getPollTime(), true);
        try
        {
            server = (messageServerInterface)Naming.lookup("//" + settings.getHostName() + "/MessageServer");
            server.declareLanguage(k, l);
        }
        catch(RemoteException remoteexception)
        {
            messages.append("System: MessageFrame: can't find server!!!\n");
            System.out.println(remoteexception.getMessage());
            remoteexception.printStackTrace();
        }
        catch(Exception exception)
        {
            messages.append("System: Exception on bound: " + exception.getMessage() + "\n");
            System.out.println(exception.getMessage());
            exception.printStackTrace();
        }
        messageField.requestFocus();
    }

    public messageClient(int i, int j, Frame frame)
    {
        this(400, 100, i, j, frame);
    }

    public void setVisible(boolean flag)
    {
        if(flag)
        {
            setLocation(position);
            ticker.start();
        } else
        {
            try
            {
                if(playerNumber > 0)
                    server.quit(playerNumber);
            }
            catch(Exception exception)
            {
                System.out.println("messaging: Error on exit\n" + exception.getMessage());
                exception.printStackTrace();
            }
        }
        super.setVisible(flag);
    }

    public void timerAction()
    {
        try
        {
            messages.append(server.get(playerNumber));
            return;
        }
        catch(RemoteException remoteexception)
        {
            messages.append("System: messageFrame: can't autoget messages!!\n");
            System.out.println(remoteexception.getMessage());
            remoteexception.printStackTrace();
            return;
        }
        catch(Exception exception)
        {
            messages.append("System: messageFrame: Unrecoverable error in autoget!!\n");
            System.out.println(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;
    }

    private void firstUsed()
    {
        if(!used)
        {
            messageField.setText("");
            used = true;
        }
    }

    void submitButton_MouseClick()
    {
        String s = messageField.getText();
        try
        {
            messages.append(server.send(s, playerNumber));
        }
        catch(RemoteException remoteexception)
        {
            messages.append("System: messageFrame: can't send message!!" + s + playerNumber + "\n");
            System.out.println(remoteexception.getMessage());
            remoteexception.printStackTrace();
        }
        catch(Exception exception)
        {
            messages.append("System: messageFrame: Unrecoverable error!!\n\t" + s + "\n");
            System.out.println(exception.getMessage());
            exception.printStackTrace();
        }
        messageField.setText("");
        messageField.requestFocus();
    }

    boolean fComponentsAdjusted;
    TextArea messages;
    Button submitButton;
    TextField messageField;
    private boolean used;
    private int playerNumber;
    private int language;
    private messageServerInterface server;
    private Point position;
    private timer ticker;

}

