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 @@
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+