From 773549109243add3d9ec97b3fd37b883f65a29c1 Mon Sep 17 00:00:00 2001 From: Omnicscient <115184891+Omnicscient@users.noreply.github.com> Date: Wed, 17 Dec 2025 20:47:35 +0300 Subject: [PATCH] Reorganize sidebar: move schedules under respective sections, minimal styling with bullets/arrows, cyan active color, larger fonts --- .../se302/controller/MainController.java | 118 +++++++++++++----- .../org/example/se302/css/application.css | 50 ++++---- .../org/example/se302/view/main-view.fxml | 56 ++++++--- 3 files changed, 152 insertions(+), 72 deletions(-) diff --git a/src/main/java/org/example/se302/controller/MainController.java b/src/main/java/org/example/se302/controller/MainController.java index 0afa452..6c0740b 100644 --- a/src/main/java/org/example/se302/controller/MainController.java +++ b/src/main/java/org/example/se302/controller/MainController.java @@ -38,18 +38,32 @@ public class MainController { @FXML private Button scheduleBtn; + // Sub-menus @FXML - private VBox scheduleSubMenu; + private VBox studentsSubMenu; @FXML - private Button calendarBtn; + private VBox coursesSubMenu; + + @FXML + private VBox classroomsSubMenu; + + // Sub-menu buttons + @FXML + private Button studentListBtn; @FXML private Button studentScheduleBtn; + @FXML + private Button courseListBtn; + @FXML private Button courseScheduleBtn; + @FXML + private Button classroomListBtn; + @FXML private Button classroomScheduleBtn; @@ -61,7 +75,11 @@ public class MainController { private DataManager dataManager; private boolean isDarkMode = false; - private boolean scheduleMenuOpen = false; + + // Track which sub-menus are open + private boolean studentsMenuOpen = false; + private boolean coursesMenuOpen = false; + private boolean classroomsMenuOpen = false; // Cached views private Node importView; @@ -174,43 +192,81 @@ public class MainController { showView(importView, importBtn); } - @FXML - private void onShowStudents() { - showView(studentsView, studentsBtn); - } - - @FXML - private void onShowCourses() { - showView(coursesView, coursesBtn); - } - - @FXML - private void onShowClassrooms() { - showView(classroomsView, classroomsBtn); - } - /** - * Toggle schedule submenu visibility and show Calendar View by default + * Toggle students submenu visibility */ @FXML - private void onToggleScheduleMenu() { - if (!scheduleMenuOpen) { - // First time opening - show Calendar View and expand submenu - scheduleMenuOpen = true; - scheduleSubMenu.setVisible(true); - scheduleSubMenu.setManaged(true); - showView(calendarView, calendarBtn); + private void onToggleStudentsMenu() { + if (!studentsMenuOpen) { + studentsMenuOpen = true; + studentsSubMenu.setVisible(true); + studentsSubMenu.setManaged(true); + // Show student list by default when opening + showView(studentsView, studentListBtn); } else { - // Toggle submenu visibility - scheduleMenuOpen = false; - scheduleSubMenu.setVisible(false); - scheduleSubMenu.setManaged(false); + studentsMenuOpen = false; + studentsSubMenu.setVisible(false); + studentsSubMenu.setManaged(false); } } + @FXML + private void onShowStudents() { + showView(studentsView, studentListBtn); + } + + /** + * Toggle courses submenu visibility + */ + @FXML + private void onToggleCoursesMenu() { + if (!coursesMenuOpen) { + coursesMenuOpen = true; + coursesSubMenu.setVisible(true); + coursesSubMenu.setManaged(true); + // Show course list by default when opening + showView(coursesView, courseListBtn); + } else { + coursesMenuOpen = false; + coursesSubMenu.setVisible(false); + coursesSubMenu.setManaged(false); + } + } + + @FXML + private void onShowCourses() { + showView(coursesView, courseListBtn); + } + + /** + * Toggle classrooms submenu visibility + */ + @FXML + private void onToggleClassroomsMenu() { + if (!classroomsMenuOpen) { + classroomsMenuOpen = true; + classroomsSubMenu.setVisible(true); + classroomsSubMenu.setManaged(true); + // Show classroom list by default when opening + showView(classroomsView, classroomListBtn); + } else { + classroomsMenuOpen = false; + classroomsSubMenu.setVisible(false); + classroomsSubMenu.setManaged(false); + } + } + + @FXML + private void onShowClassrooms() { + showView(classroomsView, classroomListBtn); + } + + /** + * Show Calendar View directly when Schedule is clicked + */ @FXML private void onShowCalendar() { - showView(calendarView, calendarBtn); + showView(calendarView, scheduleBtn); } @FXML diff --git a/src/main/resources/org/example/se302/css/application.css b/src/main/resources/org/example/se302/css/application.css index b8daaa5..9ddb9b1 100644 --- a/src/main/resources/org/example/se302/css/application.css +++ b/src/main/resources/org/example/se302/css/application.css @@ -622,18 +622,20 @@ /* ===== Sidebar Navigation ===== */ .sidebar-button { -fx-background-color: transparent; - -fx-text-fill: rgba(255, 255, 255, 0.8); - -fx-font-size: 13px; - -fx-font-weight: 600; - -fx-padding: 12 16; - -fx-background-radius: 8; - -fx-border-radius: 8; + -fx-border-color: transparent; + -fx-border-width: 0; + -fx-text-fill: rgba(255, 255, 255, 0.75); + -fx-font-size: 15px; + -fx-font-weight: 500; + -fx-padding: 10 4; + -fx-background-radius: 0; + -fx-border-radius: 0; -fx-alignment: CENTER_LEFT; -fx-cursor: hand; } .sidebar-button:hover { - -fx-background-color: rgba(255, 255, 255, 0.1); + -fx-background-color: transparent; -fx-text-fill: white; } @@ -643,33 +645,37 @@ } .sidebar-button-active { - -fx-background-color: rgba(255, 255, 255, 0.15); - -fx-text-fill: white; - -fx-border-color: rgba(255, 255, 255, 0.3); - -fx-border-width: 0 0 0 3; + -fx-background-color: transparent; + -fx-text-fill: #5eead4; + -fx-font-weight: 600; + -fx-border-color: transparent; + -fx-border-width: 0; } /* Sidebar Sub-buttons (indented) */ .sidebar-button-sub { -fx-background-color: transparent; - -fx-text-fill: rgba(255, 255, 255, 0.7); - -fx-font-size: 12px; - -fx-font-weight: 500; - -fx-padding: 8 12; - -fx-background-radius: 6; - -fx-border-radius: 6; + -fx-border-color: transparent; + -fx-border-width: 0; + -fx-text-fill: rgba(255, 255, 255, 0.6); + -fx-font-size: 13px; + -fx-font-weight: 400; + -fx-padding: 6 4; + -fx-background-radius: 0; + -fx-border-radius: 0; -fx-alignment: CENTER_LEFT; -fx-cursor: hand; } .sidebar-button-sub:hover { - -fx-background-color: rgba(255, 255, 255, 0.08); + -fx-background-color: transparent; -fx-text-fill: white; } .sidebar-button-sub.sidebar-button-active { - -fx-background-color: rgba(79, 70, 229, 0.3); - -fx-text-fill: white; - -fx-border-color: #6366F1; - -fx-border-width: 0 0 0 2; + -fx-background-color: transparent; + -fx-text-fill: #5eead4; + -fx-font-weight: 500; + -fx-border-color: transparent; + -fx-border-width: 0; } \ No newline at end of file diff --git a/src/main/resources/org/example/se302/view/main-view.fxml b/src/main/resources/org/example/se302/view/main-view.fxml index d3e2373..eaa14cc 100644 --- a/src/main/resources/org/example/se302/view/main-view.fxml +++ b/src/main/resources/org/example/se302/view/main-view.fxml @@ -32,36 +32,54 @@ -