Coverage Summary for Class: StartPanel (it.polimi.ingsw.Client.GUI.Panels)
| Class | Class, % | Method, % | Branch, % | Line, % |
|---|---|---|---|---|
| StartPanel | 0% (0/1) | 0% (0/5) | 0% (0/8) | 0% (0/56) |
1 package it.polimi.ingsw.Client.GUI.Panels; 2 3 import it.polimi.ingsw.Client.GUI.Context; 4 import it.polimi.ingsw.Client.GUI.IconLoader; 5 import it.polimi.ingsw.Network.KeepAliveSocketWrapper; 6 import it.polimi.ingsw.Network.SocketWrapper; 7 import it.polimi.ingsw.Server.Messages.ServerResponses.SupportStructures.StatusCode; 8 import it.polimi.ingsw.Server.Messages.ServerResponses.Welcome; 9 10 import javax.swing.*; 11 import java.awt.*; 12 import java.net.Socket; 13 14 /** 15 * Panel that allows the user to connect to a Server by selecting ip address and port 16 */ 17 public class StartPanel extends JPanel { 18 /** 19 * Create a new StartPanel 20 * 21 * @param ctx Context that will be used by GUI's panels 22 */ 23 public StartPanel(Context ctx) { 24 // labels 25 JLabel title = new JLabel("Eriantys welcomes You!"); 26 title.setFont(new Font("SansSerif", Font.BOLD, 40)); 27 title.setForeground(Color.WHITE); 28 JLabel serverAddressLabel = new JLabel("Server address:", SwingConstants.RIGHT); 29 serverAddressLabel.setFont(new Font("SansSerif", Font.PLAIN, 20)); 30 serverAddressLabel.setForeground(Color.WHITE); 31 JLabel serverPortLabel = new JLabel("Server port:", SwingConstants.RIGHT); 32 serverPortLabel.setFont(new Font("SansSerif", Font.PLAIN, 20)); 33 serverPortLabel.setForeground(Color.WHITE); 34 35 // text fields 36 JTextField address = new JTextField("localhost", 10); 37 JTextField port = new JTextField("8080", 10); 38 39 // buttons 40 JButton connect = new JButton("Connect"); 41 42 // adding all elements to the view 43 this.add(title); 44 this.add(serverAddressLabel); 45 this.add(serverPortLabel); 46 this.add(address); 47 this.add(port); 48 this.add(connect); 49 50 // setting correct focus 51 address.requestFocusInWindow(); 52 53 // actionListeners 54 // enter on address moves focus to port 55 address.addActionListener((actionEvent -> port.requestFocusInWindow())); 56 // enter on port moves focus to connect 57 port.addActionListener((actionEvent -> connect.requestFocusInWindow())); 58 59 connect.addActionListener(actionEvent -> { 60 connect.setEnabled(false); 61 new Thread(() -> { 62 try { 63 SocketWrapper sw = new KeepAliveSocketWrapper(new Socket( 64 address.getText().trim(), 65 Integer.parseInt(port.getText().trim())), 5000, true); 66 if (sw.awaitMessage() instanceof Welcome welcome && welcome.getStatusCode() == StatusCode.Success) { 67 // spawn and change to next view 68 ctx.setSocketWrapper(sw); 69 ctx.getWindow().changeView(new UserCredentialsPanel(ctx)); 70 } else { 71 JOptionPane.showMessageDialog(null, "Server did not welcome us", "Warning", JOptionPane.INFORMATION_MESSAGE); 72 connect.setEnabled(true); 73 } 74 } catch (Exception e) { 75 JOptionPane.showMessageDialog(null, "No valid server was found", "Warning", JOptionPane.INFORMATION_MESSAGE); 76 connect.setEnabled(true); 77 } 78 }).start(); 79 }); 80 81 // layout object declaration and setup 82 SpringLayout layout = new SpringLayout(); 83 84 layout.putConstraint(SpringLayout.VERTICAL_CENTER, title, 340, SpringLayout.NORTH, this); 85 layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, title, 0, SpringLayout.HORIZONTAL_CENTER, this); 86 87 layout.putConstraint(SpringLayout.VERTICAL_CENTER, serverAddressLabel, 60, SpringLayout.VERTICAL_CENTER, title); 88 layout.putConstraint(SpringLayout.EAST, serverAddressLabel, -10, SpringLayout.HORIZONTAL_CENTER, title); 89 layout.putConstraint(SpringLayout.VERTICAL_CENTER, address, 0, SpringLayout.VERTICAL_CENTER, serverAddressLabel); 90 layout.putConstraint(SpringLayout.WEST, address, 10, SpringLayout.HORIZONTAL_CENTER, title); 91 92 layout.putConstraint(SpringLayout.VERTICAL_CENTER, serverPortLabel, 20, SpringLayout.VERTICAL_CENTER, serverAddressLabel); 93 layout.putConstraint(SpringLayout.EAST, serverPortLabel, -10, SpringLayout.HORIZONTAL_CENTER, title); 94 layout.putConstraint(SpringLayout.VERTICAL_CENTER, port, 0, SpringLayout.VERTICAL_CENTER, serverPortLabel); 95 layout.putConstraint(SpringLayout.WEST, port, 10, SpringLayout.HORIZONTAL_CENTER, title); 96 97 layout.putConstraint(SpringLayout.VERTICAL_CENTER, connect, 40, SpringLayout.VERTICAL_CENTER, serverPortLabel); 98 layout.putConstraint(SpringLayout.HORIZONTAL_CENTER, connect, 0, SpringLayout.HORIZONTAL_CENTER, this); 99 100 // apply layout 101 this.setLayout(layout); 102 } 103 104 @Override 105 protected void paintComponent(Graphics g) { 106 super.paintComponent(g); 107 assert IconLoader.userCredentialBackground != null; 108 g.drawImage(IconLoader.userCredentialBackground.getImage(), 0, 0, null); 109 } 110 }