diff --git a/src/main/java/org/to/telegramfinalproject/UI/SidebarMenuController.java b/src/main/java/org/to/telegramfinalproject/UI/SidebarMenuController.java index 83ee30c..9d25297 100644 --- a/src/main/java/org/to/telegramfinalproject/UI/SidebarMenuController.java +++ b/src/main/java/org/to/telegramfinalproject/UI/SidebarMenuController.java @@ -364,10 +364,31 @@ public class SidebarMenuController { } } - private void openTelegramFeatures() { System.out.println("Opening Telegram Features..."); } - private void openTelegramQnA() { System.out.println("Opening Telegram Q&A..."); } + private void openTelegramFeatures() { + try { + FXMLLoader loader = new FXMLLoader(getClass().getResource( + "/org/to/telegramfinalproject/Fxml/telegram_features.fxml")); + Node featuresOverlay = loader.load(); + MainController.getInstance().showOverlay(featuresOverlay); + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void openTelegramQnA() { + try { + FXMLLoader loader = new FXMLLoader(getClass().getResource( + "/org/to/telegramfinalproject/Fxml/telegram_qna.fxml")); + Node qnaOverlay = loader.load(); + + MainController.getInstance().showOverlay(qnaOverlay); + + } catch (IOException e) { + e.printStackTrace(); + } + } public void setUserFromSession(JSONObject user) { if (user == null) return; @@ -420,4 +441,4 @@ public class SidebarMenuController { alert.showAndWait(); } -} +} \ No newline at end of file diff --git a/src/main/java/org/to/telegramfinalproject/UI/TelegramQnAController.java b/src/main/java/org/to/telegramfinalproject/UI/TelegramQnAController.java new file mode 100644 index 0000000..c98bcfe --- /dev/null +++ b/src/main/java/org/to/telegramfinalproject/UI/TelegramQnAController.java @@ -0,0 +1,41 @@ +package org.to.telegramfinalproject.UI; + +import javafx.application.Platform; +import javafx.fxml.FXML; +import javafx.scene.control.ScrollPane; +import javafx.scene.layout.BorderPane; +import javafx.scene.layout.Pane; +import javafx.scene.layout.StackPane; + +public class TelegramQnAController { + + @FXML private StackPane rootOverlay; + @FXML private Pane overlayBackground; + @FXML private ScrollPane qnaScroll; + @FXML private BorderPane contentCard; + + @FXML + private void initialize() { + // Clicking outside closes overlay + overlayBackground.setOnMouseClicked(e -> + MainController.getInstance().closeOverlay(rootOverlay) + ); + + // Smooth scroll feel + qnaScroll.getStylesheets().add(getClass().getResource("/org/to/telegramfinalproject/CSS/scrollpane.css").toExternalForm()); + qnaScroll.setPannable(true); + qnaScroll.setFitToWidth(true); + qnaScroll.setFitToHeight(false); + qnaScroll.getContent().setOnScroll(event -> { + double deltaY = event.getDeltaY() * 0.003; + qnaScroll.setVvalue(qnaScroll.getVvalue() - deltaY); + }); + + // Register scene for ThemeManager → stylesheet swap will handle colors/icons + Platform.runLater(() -> { + if (contentCard.getScene() != null) { + ThemeManager.getInstance().registerScene(contentCard.getScene()); + } + }); + } +} \ No newline at end of file diff --git a/src/main/resources/org/to/telegramfinalproject/Fxml/telegram_qna.fxml b/src/main/resources/org/to/telegramfinalproject/Fxml/telegram_qna.fxml new file mode 100644 index 0000000..49d89c1 --- /dev/null +++ b/src/main/resources/org/to/telegramfinalproject/Fxml/telegram_qna.fxml @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+