aboutsummaryrefslogtreecommitdiff
path: root/src/UI/MainWindow.java
blob: 8c3964e8800c888ea61d66feab22d72ed0b843aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
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);
    }
}