diff --git a/src/main/java/BsK/client/Client.java b/src/main/java/BsK/client/Client.java index 9dc7a78..bfd2dcb 100644 --- a/src/main/java/BsK/client/Client.java +++ b/src/main/java/BsK/client/Client.java @@ -62,7 +62,9 @@ public class Client { log.info("Connecting to {}:{}", serverAddress, port); Channel channel = bootstrap.connect(serverAddress, port).sync().channel(); channel.closeFuture().sync(); - } catch (InterruptedException e) { + + } catch (Exception e) { + throw new RuntimeException(e); } finally { try { @@ -74,6 +76,6 @@ public class Client { }); thread.start(); - UIHandler.INSTANCE.showUI(); + } } \ No newline at end of file diff --git a/src/main/java/BsK/client/LocalStorage.java b/src/main/java/BsK/client/LocalStorage.java new file mode 100644 index 0000000..162c1e3 --- /dev/null +++ b/src/main/java/BsK/client/LocalStorage.java @@ -0,0 +1,12 @@ +package BsK.client; + +import BsK.server.network.entity.Role; +import lombok.AllArgsConstructor; +import lombok.Data; + +@AllArgsConstructor +@Data +public class LocalStorage { + public static String username; + public static Role role; +} \ No newline at end of file diff --git a/src/main/java/BsK/client/network/handler/ClientHandler.java b/src/main/java/BsK/client/network/handler/ClientHandler.java index f8c9f49..55f804f 100644 --- a/src/main/java/BsK/client/network/handler/ClientHandler.java +++ b/src/main/java/BsK/client/network/handler/ClientHandler.java @@ -42,27 +42,6 @@ public class ClientHandler extends SimpleChannelInboundHandler { -// log.info("Handshake complete"); -// this.ctx = ctx; -// this.frame = frame; -// } -// case ErrorResponse response -> { -// log.error("Received error response: {}", response.getError()); -// switch (response.getError()) { -// case USER_ALREADY_EXISTS -> log.error("User already exists"); -// default -> log.error("Received error response: {}", response.getError()); -// } -// } -// case null, default -> log.warn("Unknown message: {}", frame.text()); -// } -// } - @Override protected void channelRead0(ChannelHandlerContext ctx, TextWebSocketFrame frame) { log.debug("Received message: {}", frame.text()); @@ -74,6 +53,16 @@ public class ClientHandler extends SimpleChannelInboundHandler { + try { + UIHandler.INSTANCE.showUI(); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + Thread.start(); + // When the handshake is complete, the UI is shown return; // No further processing needed for handshake response } diff --git a/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java b/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java index d91c003..63bc761 100644 --- a/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java +++ b/src/main/java/BsK/client/ui/component/CheckUpPage/CheckUpPage.java @@ -1,5 +1,6 @@ package BsK.client.ui.component.CheckUpPage; +import BsK.client.LocalStorage; import BsK.client.ui.component.MainFrame; import BsK.client.ui.component.common.RoundedButtonUI; import BsK.client.ui.component.common.RoundedPanel; @@ -96,7 +97,7 @@ public class CheckUpPage extends JPanel { title.setFont(new Font("Arial", Font.BOLD, 18)); topbar.add(title, BorderLayout.WEST); - JLabel userInfo = new JLabel("User Name (Admin)"); + JLabel userInfo = new JLabel("Welcome, " + LocalStorage.username); userInfo.setHorizontalAlignment(SwingConstants.RIGHT); topbar.add(userInfo, BorderLayout.EAST); diff --git a/src/main/java/BsK/client/ui/component/DashboardPage/DashboardPage.java b/src/main/java/BsK/client/ui/component/DashboardPage/DashboardPage.java index ed8ccef..5dd3e40 100644 --- a/src/main/java/BsK/client/ui/component/DashboardPage/DashboardPage.java +++ b/src/main/java/BsK/client/ui/component/DashboardPage/DashboardPage.java @@ -1,5 +1,6 @@ package BsK.client.ui.component.DashboardPage; +import BsK.client.LocalStorage; import BsK.client.ui.component.MainFrame; import BsK.client.ui.component.common.RoundedButtonUI; import BsK.client.ui.component.common.RoundedPanel; @@ -85,7 +86,7 @@ public class DashboardPage extends JPanel { title.setFont(new Font("Arial", Font.BOLD, 18)); topbar.add(title, BorderLayout.WEST); - JLabel userInfo = new JLabel("User Name (Admin)"); + JLabel userInfo = new JLabel("Welcome, " + LocalStorage.username); userInfo.setHorizontalAlignment(SwingConstants.RIGHT); topbar.add(userInfo, BorderLayout.EAST); @@ -169,6 +170,7 @@ public class DashboardPage extends JPanel { add(mainContent, BorderLayout.CENTER); } + public static void main(String[] args) { // JFrame frame = new JFrame("Dashboard"); // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); diff --git a/src/main/java/BsK/client/ui/component/LoginPage/LoginPage.java b/src/main/java/BsK/client/ui/component/LoginPage/LoginPage.java index 4ad8078..2f45cb4 100644 --- a/src/main/java/BsK/client/ui/component/LoginPage/LoginPage.java +++ b/src/main/java/BsK/client/ui/component/LoginPage/LoginPage.java @@ -1,5 +1,6 @@ package BsK.client.ui.component.LoginPage; +import BsK.client.LocalStorage; import BsK.client.network.handler.ClientHandler; import BsK.client.ui.component.MainFrame; import BsK.common.packet.Packet; @@ -80,7 +81,8 @@ public class LoginPage extends JPanel { // Register listeners for login-related responses ClientHandler.addResponseListener(LoginSuccessResponse.class, response -> { log.info("Login successful, UserId: {}, Role: {}", response.getUserId(), response.getRole()); - SwingUtilities.invokeLater(() -> mainFrame.showPage("DashboardPage")); + LocalStorage.username = loginField.getText(); + mainFrame.showPage("DashboardPage"); }); ClientHandler.addResponseListener(ErrorResponse.class, response -> { diff --git a/src/main/java/BsK/client/ui/component/MainFrame.java b/src/main/java/BsK/client/ui/component/MainFrame.java index d66d5f6..f9f5e39 100644 --- a/src/main/java/BsK/client/ui/component/MainFrame.java +++ b/src/main/java/BsK/client/ui/component/MainFrame.java @@ -24,18 +24,31 @@ public class MainFrame extends JFrame { // Add pages to the main panel mainPanel.add(new LandingPage(this), "LandingPage"); - mainPanel.add(new LoginPage(this), "LoginPage"); - mainPanel.add(new RegisterPage(this), "RegisterPage"); - mainPanel.add(new DashboardPage(this), "DashboardPage"); - mainPanel.add(new CheckUpPage(this), "CheckUpPage"); add(mainPanel); } +// public void showPage(String pageName) { +// cardLayout.show(mainPanel, pageName); +// } + public void showPage(String pageName) { - cardLayout.show(mainPanel, pageName); + try { + // Construct the fully qualified class name + String className = "BsK.client.ui.component." + pageName + "." + pageName; + Class pageClass = Class.forName(className); + JPanel newPage = (JPanel) pageClass.getConstructor(MainFrame.class).newInstance(this); + + mainPanel.add(newPage, pageName); + mainPanel.remove(0); + cardLayout.show(mainPanel, pageName); + } catch (Exception e) { + e.printStackTrace(); + throw new IllegalArgumentException("Unable to load page: " + pageName, e); + } } + public static void main(String[] args) { SwingUtilities.invokeLater(() -> { new MainFrame().setVisible(true); diff --git a/src/main/java/BsK/common/packet/res/ErrorResponse.java b/src/main/java/BsK/common/packet/res/ErrorResponse.java index db58104..04f925f 100644 --- a/src/main/java/BsK/common/packet/res/ErrorResponse.java +++ b/src/main/java/BsK/common/packet/res/ErrorResponse.java @@ -19,6 +19,6 @@ public class ErrorResponse implements Packet { UNKNOWN, USERNAME_NOT_FOUND, PASSWORD_INCORRECT, - USER_ALREADY_EXISTS, + USER_ALREADY_EXISTS,INVALID_CREDENTIALS, } } diff --git a/src/main/java/BsK/server/network/entity/User.java b/src/main/java/BsK/server/network/entity/User.java index ab64037..917d480 100644 --- a/src/main/java/BsK/server/network/entity/User.java +++ b/src/main/java/BsK/server/network/entity/User.java @@ -16,14 +16,13 @@ public class User { int userId; Channel channel; - Role role; - - int sessionId; + Role role = Role.GUEST; + int sessionId; public User(Channel channel, int sessionId) { this.channel = channel; this.sessionId = sessionId; - Role role = Role.GUEST; + } public void authenticate(String username, String password) { diff --git a/src/main/java/BsK/server/network/handler/ServerHandler.java b/src/main/java/BsK/server/network/handler/ServerHandler.java index 43a6810..25f10e7 100644 --- a/src/main/java/BsK/server/network/handler/ServerHandler.java +++ b/src/main/java/BsK/server/network/handler/ServerHandler.java @@ -42,9 +42,10 @@ public class ServerHandler extends SimpleChannelInboundHandler