package UI; import Client.Book; import Client.SocketClient; import UI.Components.BooksList; import UI.Components.LoginPanel; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import javax.swing.*; import java.awt.*; import java.net.Socket; public class MainWindow extends JFrame { public static String url = "http://localhost:8080"; public static int userId = 0; public MainWindow() { this.setTitle("User Panel - Library Management System"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(650, 500); this.setResizable(false); this.setLocationRelativeTo(null); CardLayout cardLayout = new CardLayout(); JPanel cardPanel = new JPanel(cardLayout); LoginPanel loginPanel = new LoginPanel(); loginPanel.loginButton.addActionListener(e -> { new SocketClient(url); SocketClient.socket.connect(); SocketClient.socket.emit("login", "{" + "\"userName\": \"" + loginPanel.usernameInput.getValue() + "\"," + "\"password\": \"" + loginPanel.passwordInput.getValue() + "\"" + "}"); SocketClient.socket.on("loggedIn", data -> { MainWindow.userId = (int) data[0]; SocketClient.socket.on("allBooksList", d -> { try { BooksList.refreshBooks(Book.fromObjects(d)); } catch (JSONException ex) { throw new RuntimeException(ex); } }); SocketClient.socket.on("booksUpdated", d -> { try { BooksList.refreshBooks(Book.fromObjects(d)); } catch (JSONException ex) { throw new RuntimeException(ex); } }); SocketClient.socket.emit("getAllBooks"); cardLayout.next(cardPanel); }); }); cardPanel.add(loginPanel); cardPanel.add(new BooksList()); this.add(cardPanel); } }