001package csheets.ext.share.ui;
002
003import java.util.*;
004
005import javax.swing.JOptionPane;
006
007import csheets.core.Cell;
008import csheets.ext.share.controller.ReceiveController;
009import csheets.ext.share.core.Validate;
010
011/**
012 * Create a user interface for the receive action
013 * 
014 * @author Andre
015 * 
016 */
017public class ReceiveUI implements Observer {
018
019        /**
020         * Create a user interface for the receive action
021         * 
022         * @param cellStart
023         *            the cell where we start the written process
024         */
025        public void createUI(Cell cellStart) {
026                boolean portIsNotCorrect = true;
027                boolean portAsNumber;
028                int port = 0;
029                String IP = "";
030
031                boolean IPIsNotCorrect = true;
032                while (IPIsNotCorrect) {
033                        IP = JOptionPane
034                                        .showInputDialog("Please input an IP.\nIPv4 or localhost");
035                        if (IP != null) {
036                                IPIsNotCorrect = !Validate.checkIFIPIsCorrect(IP);
037                        } else {
038                                break;
039                        }
040                }
041
042                while (portIsNotCorrect) {
043                        String portTemp = JOptionPane
044                                        .showInputDialog("Please input a port (49152 to 65535)");
045                        if (portTemp != null) {
046                                portAsNumber = Validate.checkIfANumber(portTemp);
047                                if (portAsNumber) {
048                                        port = Integer.parseInt(portTemp);
049                                        portIsNotCorrect = !Validate.checkPort(port);
050                                }
051                        } else {
052                                break;
053                        }
054                }
055
056                if (!IPIsNotCorrect && !portIsNotCorrect) {
057                        String password = JOptionPane.showInputDialog("Enter password");
058                        ReceiveController rc = new ReceiveController();
059                        rc.startClient(IP, port, cellStart,
060                                        Validate.encrypt(password.getBytes()), this);
061                }
062        }
063
064        @Override
065        public void update(Observable o, Object arg) {
066                JOptionPane.showMessageDialog(null, "Connection Error");
067        }
068}