mirror of
https://github.com/sabazadam/Se302.git
synced 2025-12-31 12:21:22 +00:00
111 lines
5.2 KiB
XML
111 lines
5.2 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
<?import javafx.geometry.Insets?>
|
|
<?import javafx.scene.control.*?>
|
|
<?import javafx.scene.layout.*?>
|
|
|
|
<BorderPane xmlns="http://javafx.com/javafx"
|
|
xmlns:fx="http://javafx.com/fxml"
|
|
fx:controller="org.example.se302.controller.MainController"
|
|
prefHeight="800.0" prefWidth="1200.0">
|
|
|
|
<!-- Top: Title Bar with Theme Toggle -->
|
|
<top>
|
|
<VBox styleClass="header">
|
|
<HBox alignment="CENTER_LEFT" spacing="20">
|
|
<padding>
|
|
<Insets top="10" right="20" bottom="10" left="20"/>
|
|
</padding>
|
|
<Label text="📅 Exam Scheduling System" styleClass="title-label"/>
|
|
<Region HBox.hgrow="ALWAYS"/>
|
|
<Button fx:id="helpButton" text="❓" onAction="#onShowHelp"
|
|
styleClass="header-icon-button"/>
|
|
<Button fx:id="themeToggleButton" text="🌙" onAction="#onToggleTheme"
|
|
styleClass="header-icon-button"/>
|
|
</HBox>
|
|
<Separator/>
|
|
</VBox>
|
|
</top>
|
|
|
|
<!-- Left: Sidebar Navigation -->
|
|
<left>
|
|
<VBox fx:id="sidebar" spacing="5" minWidth="180" prefWidth="200"
|
|
style="-fx-background-color: linear-gradient(to bottom, #2c3e50, #1a252f); -fx-padding: 15;">
|
|
<padding>
|
|
<Insets top="10" right="10" bottom="10" left="10"/>
|
|
</padding>
|
|
|
|
<Button fx:id="importBtn" text="• Import Data" onAction="#onShowImport"
|
|
maxWidth="Infinity" styleClass="sidebar-button"/>
|
|
|
|
<Button fx:id="studentsBtn" text="• Students" onAction="#onToggleStudentsMenu"
|
|
maxWidth="Infinity" styleClass="sidebar-button" disable="true"/>
|
|
|
|
<!-- Students Sub-menu (initially hidden) -->
|
|
<VBox fx:id="studentsSubMenu" spacing="2" managed="false" visible="false">
|
|
<padding>
|
|
<Insets left="15"/>
|
|
</padding>
|
|
<Button fx:id="studentListBtn" text="→ Student List" onAction="#onShowStudents"
|
|
maxWidth="Infinity" styleClass="sidebar-button-sub"/>
|
|
<Button fx:id="studentScheduleBtn" text="→ Student Schedule" onAction="#onShowStudentSchedule"
|
|
maxWidth="Infinity" styleClass="sidebar-button-sub"/>
|
|
</VBox>
|
|
|
|
<Button fx:id="coursesBtn" text="• Courses" onAction="#onToggleCoursesMenu"
|
|
maxWidth="Infinity" styleClass="sidebar-button" disable="true"/>
|
|
|
|
<!-- Courses Sub-menu (initially hidden) -->
|
|
<VBox fx:id="coursesSubMenu" spacing="2" managed="false" visible="false">
|
|
<padding>
|
|
<Insets left="15"/>
|
|
</padding>
|
|
<Button fx:id="courseListBtn" text="→ Course List" onAction="#onShowCourses"
|
|
maxWidth="Infinity" styleClass="sidebar-button-sub"/>
|
|
<Button fx:id="courseScheduleBtn" text="→ Course Schedule" onAction="#onShowCourseSchedule"
|
|
maxWidth="Infinity" styleClass="sidebar-button-sub"/>
|
|
</VBox>
|
|
|
|
<Button fx:id="classroomsBtn" text="• Classrooms" onAction="#onToggleClassroomsMenu"
|
|
maxWidth="Infinity" styleClass="sidebar-button" disable="true"/>
|
|
|
|
<!-- Classrooms Sub-menu (initially hidden) -->
|
|
<VBox fx:id="classroomsSubMenu" spacing="2" managed="false" visible="false">
|
|
<padding>
|
|
<Insets left="15"/>
|
|
</padding>
|
|
<Button fx:id="classroomListBtn" text="→ Classroom List" onAction="#onShowClassrooms"
|
|
maxWidth="Infinity" styleClass="sidebar-button-sub"/>
|
|
<Button fx:id="classroomScheduleBtn" text="→ Classroom Schedule" onAction="#onShowClassroomSchedule"
|
|
maxWidth="Infinity" styleClass="sidebar-button-sub"/>
|
|
</VBox>
|
|
|
|
<Button fx:id="scheduleBtn" text="• Schedule" onAction="#onShowCalendar"
|
|
maxWidth="Infinity" styleClass="sidebar-button" disable="true"/>
|
|
|
|
<Region VBox.vgrow="ALWAYS"/>
|
|
|
|
<Label text="Navigation" style="-fx-text-fill: rgba(255,255,255,0.5); -fx-font-size: 10px;"/>
|
|
</VBox>
|
|
</left>
|
|
|
|
<!-- Center: Content Area -->
|
|
<center>
|
|
<StackPane fx:id="contentArea">
|
|
<!-- Views are loaded dynamically by controller -->
|
|
</StackPane>
|
|
</center>
|
|
|
|
<!-- Bottom: Status Bar -->
|
|
<bottom>
|
|
<HBox styleClass="status-bar" spacing="10">
|
|
<padding>
|
|
<Insets top="8" right="20" bottom="8" left="20"/>
|
|
</padding>
|
|
<Label text="🟢" style="-fx-font-size: 10px;"/>
|
|
<Label fx:id="statusLabel" text="Ready - No data loaded" HBox.hgrow="ALWAYS"/>
|
|
<Label text="ExamFlow v2.0" style="-fx-font-size: 11px; -fx-text-fill: -fx-slate-400; -fx-font-weight: 700;"/>
|
|
</HBox>
|
|
</bottom>
|
|
</BorderPane>
|