From 4aec9dfa97c88d7caa37c565ec1eb49fc5e38304 Mon Sep 17 00:00:00 2001 From: adharsh k Date: Wed, 22 Oct 2025 21:48:18 +0530 Subject: [PATCH 1/4] "added ui(neo brutalism)" --- src/main/java/com/note0/simple/FeedPanel.java | 58 ++++++-- .../java/com/note0/simple/LoginPanel.java | 46 ++++-- src/main/java/com/note0/simple/Main.java | 21 ++- src/main/java/com/note0/simple/MainFrame.java | 12 +- .../java/com/note0/simple/MyUploadsPanel.java | 132 ++++++++++++++++++ .../com/note0/simple/RegistrationPanel.java | 77 ++++++++-- src/main/java/com/note0/simple/UITheme.java | 99 +++++++++++++ src/test/UITheme.java | 119 ++++++++++++++++ 8 files changed, 526 insertions(+), 38 deletions(-) create mode 100644 src/main/java/com/note0/simple/MyUploadsPanel.java create mode 100644 src/main/java/com/note0/simple/UITheme.java create mode 100644 src/test/UITheme.java diff --git a/src/main/java/com/note0/simple/FeedPanel.java b/src/main/java/com/note0/simple/FeedPanel.java index 9d166e9..ce940e0 100644 --- a/src/main/java/com/note0/simple/FeedPanel.java +++ b/src/main/java/com/note0/simple/FeedPanel.java @@ -18,21 +18,38 @@ public FeedPanel(MainFrame mainFrame, User user, MaterialDAO materialDAO, Subjec this.loggedInUser = user; this.materialDAO = materialDAO; - setLayout(new BorderLayout()); + setLayout(new BorderLayout(10, 10)); // Add gaps + setBackground(UITheme.APP_BACKGROUND); + setBorder(UITheme.APP_PADDING); // Add padding around the whole panel // Navigation JPanel navPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + navPanel.setBackground(UITheme.APP_BACKGROUND); // Match background + JButton browseButton = new JButton("Browse All"); - browseButton.addActionListener(e -> mainFrame.showDashboardPanel(loggedInUser)); + UITheme.styleSecondaryButton(browseButton); + JButton logoutButton = new JButton("Logout"); + UITheme.styleSecondaryButton(logoutButton); + + // --- FIX IS HERE --- + // Add the ActionListeners back to the buttons + browseButton.addActionListener(e -> mainFrame.showDashboardPanel(loggedInUser)); logoutButton.addActionListener(e -> mainFrame.showLoginPanel()); - navPanel.add(new JLabel("Welcome, " + loggedInUser.getFullName())); + // ------------------- + + JLabel welcomeLabel = new JLabel("Welcome, " + loggedInUser.getFullName()); + welcomeLabel.setFont(UITheme.LABEL_FONT); + + navPanel.add(welcomeLabel); navPanel.add(browseButton); navPanel.add(logoutButton); add(navPanel, BorderLayout.NORTH); // Main Content JTabbedPane tabbedPane = new JTabbedPane(); + tabbedPane.setFont(UITheme.LABEL_FONT); + tabbedPane.addTab("Recent", createFeedSection("Recent Materials")); tabbedPane.addTab("Recommended", createFeedSection("Recommended Materials")); tabbedPane.addTab("Popular", createFeedSection("Popular Materials")); @@ -43,6 +60,7 @@ public FeedPanel(MainFrame mainFrame, User user, MaterialDAO materialDAO, Subjec private JScrollPane createFeedSection(String title) { JPanel sectionPanel = new JPanel(); sectionPanel.setLayout(new BoxLayout(sectionPanel, BoxLayout.Y_AXIS)); + sectionPanel.setBackground(UITheme.APP_BACKGROUND); // Match background List materials; try { @@ -62,28 +80,38 @@ private JScrollPane createFeedSection(String title) { } else { for (Material material : materials) { sectionPanel.add(createSimpleMaterialPanel(material)); - sectionPanel.add(Box.createRigidArea(new Dimension(0, 5))); // Spacer + sectionPanel.add(Box.createRigidArea(new Dimension(0, 15))); // More spacer } } JScrollPane scrollPane = new JScrollPane(sectionPanel); scrollPane.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + scrollPane.setBackground(UITheme.APP_BACKGROUND); return scrollPane; } private JPanel createSimpleMaterialPanel(Material material) { - JPanel panel = new JPanel(new BorderLayout()); - panel.setBorder(BorderFactory.createEtchedBorder()); + JPanel panel = new JPanel(new BorderLayout(10, 10)); + panel.setBackground(UITheme.CARD_BACKGROUND); + panel.setBorder(UITheme.createShadowBorder()); // Apply shadow border to each card JPanel infoPanel = new JPanel(); + infoPanel.setBackground(UITheme.CARD_BACKGROUND); infoPanel.setLayout(new BoxLayout(infoPanel, BoxLayout.Y_AXIS)); - infoPanel.add(new JLabel("Title: " + material.getTitle())); - infoPanel.add(new JLabel("Subject: " + material.getSubjectName())); // Simplified + + JLabel titleLabel = new JLabel(material.getTitle()); + titleLabel.setFont(UITheme.LABEL_FONT); + infoPanel.add(titleLabel); + + infoPanel.add(new JLabel("Subject: " + material.getSubjectName())); infoPanel.add(new JLabel("Rating: " + String.format("%.1f", material.getAverageRating()))); - JPanel buttonPanel = new JPanel(new FlowLayout()); + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + buttonPanel.setBackground(UITheme.CARD_BACKGROUND); JButton viewButton = new JButton("View"); + UITheme.stylePrimaryButton(viewButton); JButton rateButton = new JButton("Rate"); + UITheme.styleSecondaryButton(rateButton); viewButton.addActionListener(e -> handleMaterialClick(material)); rateButton.addActionListener(e -> rateMaterial(material)); @@ -93,6 +121,13 @@ private JPanel createSimpleMaterialPanel(Material material) { panel.add(infoPanel, BorderLayout.CENTER); panel.add(buttonPanel, BorderLayout.EAST); + + // Set fixed height for uniform cards + int cardHeight = 120; + panel.setMinimumSize(new Dimension(400, cardHeight)); + panel.setPreferredSize(new Dimension(600, cardHeight)); + panel.setMaximumSize(new Dimension(Integer.MAX_VALUE, cardHeight)); + return panel; } @@ -133,7 +168,7 @@ private void rateMaterial(Material material) { "\nCurrent rating: " + (currentRating > 0 ? currentRating + " stars" : "Not rated"); int choice = JOptionPane.showOptionDialog(this, message, "Rate Material", - JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]); + JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]); if (choice >= 0) { int rating = choice + 1; @@ -148,4 +183,5 @@ private void rateMaterial(Material material) { JOptionPane.showMessageDialog(this, "Error rating material: " + e.getMessage(), "Database Error", JOptionPane.ERROR_MESSAGE); } } -} \ No newline at end of file +} + diff --git a/src/main/java/com/note0/simple/LoginPanel.java b/src/main/java/com/note0/simple/LoginPanel.java index ebbcf57..7a31c22 100644 --- a/src/main/java/com/note0/simple/LoginPanel.java +++ b/src/main/java/com/note0/simple/LoginPanel.java @@ -18,44 +18,67 @@ public LoginPanel(MainFrame mainFrame, UserDAO userDAO) { this.mainFrame = mainFrame; this.userDAO = userDAO; + // Use a GridBagLayout to center the form panel setLayout(new GridBagLayout()); + setBackground(UITheme.APP_BACKGROUND); // Use theme background + + // --- Create the main form panel --- + JPanel formPanel = new JPanel(new GridBagLayout()); + formPanel.setBackground(UITheme.CARD_BACKGROUND); // White card background + formPanel.setBorder(UITheme.createShadowBorder()); // Apply neo-brutalism shadow border + GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(10, 10, 10, 10); + gbc.fill = GridBagConstraints.HORIZONTAL; // Title JLabel titleLabel = new JLabel("Note0 Login"); - titleLabel.setFont(new Font("SansSerif", Font.BOLD, 24)); + titleLabel.setFont(UITheme.HEADING_FONT); // Use theme heading font + titleLabel.setForeground(UITheme.TEXT_COLOR); gbc.gridx = 0; gbc.gridy = 0; gbc.gridwidth = 2; gbc.anchor = GridBagConstraints.CENTER; - add(titleLabel, gbc); + gbc.insets = new Insets(10, 10, 20, 10); // More padding below title + formPanel.add(titleLabel, gbc); - // Email + // --- Reset constraints for fields --- gbc.gridwidth = 1; gbc.anchor = GridBagConstraints.EAST; + gbc.insets = new Insets(10, 10, 10, 10); + + // Email + JLabel emailLabel = new JLabel("Email:"); + emailLabel.setFont(UITheme.LABEL_FONT); gbc.gridx = 0; gbc.gridy = 1; - add(new JLabel("Email:"), gbc); + formPanel.add(emailLabel, gbc); gbc.anchor = GridBagConstraints.WEST; gbc.gridx = 1; gbc.gridy = 1; - add(emailField, gbc); + formPanel.add(emailField, gbc); // Password + JLabel passLabel = new JLabel("Password:"); + passLabel.setFont(UITheme.LABEL_FONT); gbc.anchor = GridBagConstraints.EAST; gbc.gridx = 0; gbc.gridy = 2; - add(new JLabel("Password:"), gbc); + formPanel.add(passLabel, gbc); gbc.anchor = GridBagConstraints.WEST; gbc.gridx = 1; gbc.gridy = 2; - add(passwordField, gbc); + formPanel.add(passwordField, gbc); // Buttons - JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 0)); + buttonPanel.setBackground(UITheme.CARD_BACKGROUND); // Match card background + + UITheme.stylePrimaryButton(loginButton); // Style the login button + UITheme.styleSecondaryButton(registerButton); // Style the register button + buttonPanel.add(loginButton); buttonPanel.add(registerButton); @@ -63,7 +86,12 @@ public LoginPanel(MainFrame mainFrame, UserDAO userDAO) { gbc.gridy = 3; gbc.gridwidth = 2; gbc.anchor = GridBagConstraints.CENTER; - add(buttonPanel, gbc); + gbc.fill = GridBagConstraints.NONE; + gbc.insets = new Insets(20, 10, 10, 10); // More padding above buttons + formPanel.add(buttonPanel, gbc); + + // --- Add the form panel to the main panel (which centers it) --- + add(formPanel, new GridBagConstraints()); // Add Action Listeners loginButton.addActionListener(e -> handleLogin()); diff --git a/src/main/java/com/note0/simple/Main.java b/src/main/java/com/note0/simple/Main.java index 5310175..ae302ed 100644 --- a/src/main/java/com/note0/simple/Main.java +++ b/src/main/java/com/note0/simple/Main.java @@ -1,12 +1,12 @@ package com.note0.simple; +import com.formdev.flatlaf.FlatLightLaf; // <-- 1. IMPORT THIS import javax.swing.SwingUtilities; import java.sql.SQLException; /** * The main entry point for the Note0 Desktop Application. - * - * This class is responsible for initializing and launching the main application window. + * * This class is responsible for initializing and launching the main application window. * It uses SwingUtilities.invokeLater to ensure that the GUI is created and updated * on the Event Dispatch Thread (EDT), which is the standard and required practice * for thread-safe Swing applications. @@ -14,6 +14,23 @@ public class Main { public static void main(String[] args) { + + // --- 2. SET THE MODERN LOOK AND FEEL --- + // This MUST be done before any Swing components are created. + try { + FlatLightLaf.setup(); // This sets a clean, modern light theme. + + // --- You can also try other themes! --- + // Just uncomment one of these lines to change the theme: + // com.formdev.flatlaf.FlatDarkLaf.setup(); + // com.formdev.flatlaf.FlatIntelliJLaf.setup(); + // com.formdev.flatlaf.FlatDarculaLaf.setup(); + + } catch( Exception ex ) { + System.err.println( "Failed to initialize LaF" ); + } + // ------------------------------------------ + // Schedule a job for the event dispatch thread: // creating and showing this application's GUI. SwingUtilities.invokeLater(new Runnable() { diff --git a/src/main/java/com/note0/simple/MainFrame.java b/src/main/java/com/note0/simple/MainFrame.java index 3e1aa0e..ad9c151 100644 --- a/src/main/java/com/note0/simple/MainFrame.java +++ b/src/main/java/com/note0/simple/MainFrame.java @@ -8,8 +8,7 @@ * This class holds and manages the different panels (Login, Register, Feed, Dashboard) * using a CardLayout, allowing for seamless navigation between different views * without opening or closing new windows. - * - * New Navigation Flow: Login -> Main App (with tabs) -> specific tabs + * * New Navigation Flow: Login -> Main App (with tabs) -> specific tabs */ public class MainFrame extends JFrame { @@ -32,8 +31,12 @@ public MainFrame() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); + // Set the frame's content pane background + getContentPane().setBackground(UITheme.APP_BACKGROUND); + cardLayout = new CardLayout(); mainPanel = new JPanel(cardLayout); + mainPanel.setBackground(UITheme.APP_BACKGROUND); // Set main panel background LoginPanel loginPanel = new LoginPanel(this, userDAO); RegistrationPanel registrationPanel = new RegistrationPanel(this, userDAO); @@ -56,6 +59,9 @@ public void showRegistrationPanel() { public void showFeedPanel(User user) { JTabbedPane tabbedPane = new JTabbedPane(); + // Apply theme font to tabs + tabbedPane.setFont(UITheme.LABEL_FONT); + tabbedPane.setBackground(UITheme.APP_BACKGROUND); FeedPanel feedPanel = new FeedPanel(this, user, materialDAO, subjectDAO, cloudinaryService); tabbedPane.addTab("Home", feedPanel); @@ -80,4 +86,4 @@ public void showDashboardPanel(User user) { // but we can keep it for potential future use or specific navigation needs. showFeedPanel(user); } -} \ No newline at end of file +} diff --git a/src/main/java/com/note0/simple/MyUploadsPanel.java b/src/main/java/com/note0/simple/MyUploadsPanel.java new file mode 100644 index 0000000..739b71e --- /dev/null +++ b/src/main/java/com/note0/simple/MyUploadsPanel.java @@ -0,0 +1,132 @@ +package com.note0.simple; + +import javax.swing.*; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.JTableHeader; +import java.awt.*; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +/** + * A new panel to display the user's own uploaded materials + * and allow them to delete them. + */ +public class MyUploadsPanel extends JPanel { + + private final MainFrame mainFrame; + private final User loggedInUser; + private final MaterialDAO materialDAO; + private final CloudinaryService cloudinaryService; + + private JTable myUploadsTable; + private DefaultTableModel myUploadsModel; + private List myMaterials = new ArrayList<>(); + + public MyUploadsPanel(MainFrame mainFrame, User user, MaterialDAO materialDAO, CloudinaryService cloudinaryService) { + this.mainFrame = mainFrame; + this.loggedInUser = user; + this.materialDAO = materialDAO; + this.cloudinaryService = cloudinaryService; + + setLayout(new BorderLayout(10, 10)); + setBackground(UITheme.APP_BACKGROUND); + setBorder(UITheme.APP_PADDING); + + // Header + JLabel titleLabel = new JLabel("My Uploaded Materials"); + titleLabel.setFont(UITheme.HEADING_FONT); + titleLabel.setForeground(UITheme.TEXT_COLOR); + add(titleLabel, BorderLayout.NORTH); + + // My uploads table + String[] columnNames = {"Title", "Subject", "Rating", "Status"}; + myUploadsModel = new DefaultTableModel(columnNames, 0) { + @Override + public boolean isCellEditable(int row, int column) { + return false; + } + }; + myUploadsTable = new JTable(myUploadsModel); + myUploadsTable.setRowHeight(30); + myUploadsTable.setFont(UITheme.BODY_FONT); + myUploadsTable.setGridColor(UITheme.BORDER_COLOR); + myUploadsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + JTableHeader header = myUploadsTable.getTableHeader(); + header.setFont(UITheme.LABEL_FONT); + header.setBackground(UITheme.CARD_BACKGROUND); + + JScrollPane tableScrollPane = new JScrollPane(myUploadsTable); + tableScrollPane.setBorder(BorderFactory.createLineBorder(UITheme.BORDER_COLOR)); + add(tableScrollPane, BorderLayout.CENTER); + + // Action buttons for my uploads + JPanel myUploadsActionPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + myUploadsActionPanel.setOpaque(false); + + JButton refreshMyUploadsButton = new JButton("Refresh"); + UITheme.styleSecondaryButton(refreshMyUploadsButton); + + JButton deleteMyUploadButton = new JButton("Delete Selected"); + UITheme.styleDangerButton(deleteMyUploadButton); + + deleteMyUploadButton.addActionListener(e -> deleteMyUpload()); + refreshMyUploadsButton.addActionListener(e -> loadMyUploads()); + + myUploadsActionPanel.add(refreshMyUploadsButton); + myUploadsActionPanel.add(deleteMyUploadButton); + + add(myUploadsActionPanel, BorderLayout.SOUTH); + + // Load initial data + loadMyUploads(); + } + + private void loadMyUploads() { + myUploadsModel.setRowCount(0); + myMaterials.clear(); + try { + myMaterials = materialDAO.getMaterialsByUser(loggedInUser.getId()); + for (Material material : myMaterials) { + myUploadsModel.addRow(new Object[]{ + material.getTitle(), + material.getSubjectName(), + String.format("%.1f", material.getAverageRating()), + material.getApprovalStatus() + }); + } + } catch (SQLException e) { + JOptionPane.showMessageDialog(this, "Could not load your uploads: " + e.getMessage(), "Database Error", JOptionPane.ERROR_MESSAGE); + } + } + + private void deleteMyUpload() { + int selectedRow = myUploadsTable.getSelectedRow(); + if (selectedRow < 0) { + JOptionPane.showMessageDialog(this, "Please select an upload to delete.", "Info", JOptionPane.INFORMATION_MESSAGE); + return; + } + + try { + if (selectedRow < myMaterials.size()) { + Material material = myMaterials.get(selectedRow); + + JOptionPane.showMessageDialog(this, + "Are you sure you want to delete '" + material.getTitle() + "'?\n\n" + + "This will remove the material from the database.\n" + + "The uploaded file will remain in Cloudinary storage.", + "Confirm Deletion", JOptionPane.YES_NO_OPTION); + + if (confirm == JOptionPane.YES_OPTION) { + + materialDAO.deleteMaterial(material.getId()); + JOptionPane.showMessageDialog(this, "Upload deleted successfully!", "Success", JOptionPane.INFORMATION_MESSAGE); + loadMyUploads(); // Refresh the list + } + } + } catch (SQLException e) { + JOptionPane.showMessageDialog(this, "Error deleting upload: " + e.getMessage(), "Database Error", JOptionPane.ERROR_MESSAGE); + } + } +} diff --git a/src/main/java/com/note0/simple/RegistrationPanel.java b/src/main/java/com/note0/simple/RegistrationPanel.java index 5c28f89..7eeb068 100644 --- a/src/main/java/com/note0/simple/RegistrationPanel.java +++ b/src/main/java/com/note0/simple/RegistrationPanel.java @@ -19,44 +19,95 @@ public RegistrationPanel(MainFrame mainFrame, UserDAO userDAO) { this.mainFrame = mainFrame; this.userDAO = userDAO; + // Use a GridBagLayout to center the form panel setLayout(new GridBagLayout()); + setBackground(UITheme.APP_BACKGROUND); // Use theme background + + // --- Create the main form panel --- + JPanel formPanel = new JPanel(new GridBagLayout()); + formPanel.setBackground(UITheme.CARD_BACKGROUND); // White card background + formPanel.setBorder(UITheme.createShadowBorder()); // Apply neo-brutalism shadow border + GridBagConstraints gbc = new GridBagConstraints(); gbc.insets = new Insets(10, 10, 10, 10); + gbc.fill = GridBagConstraints.HORIZONTAL; + // Title + JLabel titleLabel = new JLabel("Create Account"); + titleLabel.setFont(UITheme.HEADING_FONT); // Use theme heading font + titleLabel.setForeground(UITheme.TEXT_COLOR); gbc.gridx = 0; gbc.gridy = 0; - add(new JLabel("Full Name:"), gbc); + gbc.gridwidth = 2; + gbc.anchor = GridBagConstraints.CENTER; + gbc.insets = new Insets(10, 10, 20, 10); // More padding below title + formPanel.add(titleLabel, gbc); - gbc.gridx = 1; - gbc.gridy = 0; - add(fullNameField, gbc); + // --- Reset constraints for fields --- + gbc.gridwidth = 1; + gbc.anchor = GridBagConstraints.EAST; + gbc.insets = new Insets(10, 10, 10, 10); + // Full Name + JLabel nameLabel = new JLabel("Full Name:"); + nameLabel.setFont(UITheme.LABEL_FONT); gbc.gridx = 0; gbc.gridy = 1; - add(new JLabel("Email:"), gbc); + formPanel.add(nameLabel, gbc); + gbc.anchor = GridBagConstraints.WEST; gbc.gridx = 1; gbc.gridy = 1; - add(emailField, gbc); - + formPanel.add(fullNameField, gbc); + + // Email + JLabel emailLabel = new JLabel("Email:"); + emailLabel.setFont(UITheme.LABEL_FONT); gbc.gridx = 0; gbc.gridy = 2; - add(new JLabel("Password:"), gbc); + gbc.anchor = GridBagConstraints.EAST; + formPanel.add(emailLabel, gbc); gbc.gridx = 1; gbc.gridy = 2; - add(passwordField, gbc); + gbc.anchor = GridBagConstraints.WEST; + formPanel.add(emailField, gbc); + + // Password + JLabel passLabel = new JLabel("Password:"); + passLabel.setFont(UITheme.LABEL_FONT); + gbc.gridx = 0; + gbc.gridy = 3; + gbc.anchor = GridBagConstraints.EAST; + formPanel.add(passLabel, gbc); + + gbc.gridx = 1; + gbc.gridy = 3; + gbc.anchor = GridBagConstraints.WEST; + formPanel.add(passwordField, gbc); + + // Buttons + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 0)); + buttonPanel.setBackground(UITheme.CARD_BACKGROUND); // Match card background + + UITheme.stylePrimaryButton(registerButton); // Style the register button + UITheme.styleSecondaryButton(backToLoginButton); // Style the back button - JPanel buttonPanel = new JPanel(new FlowLayout()); buttonPanel.add(registerButton); buttonPanel.add(backToLoginButton); gbc.gridx = 0; - gbc.gridy = 3; + gbc.gridy = 4; gbc.gridwidth = 2; gbc.anchor = GridBagConstraints.CENTER; - add(buttonPanel, gbc); - + gbc.fill = GridBagConstraints.NONE; + gbc.insets = new Insets(20, 10, 10, 10); // More padding above buttons + formPanel.add(buttonPanel, gbc); + + // --- Add the form panel to the main panel (which centers it) --- + add(formPanel, new GridBagConstraints()); + + // Action Listeners registerButton.addActionListener(e -> handleRegister()); backToLoginButton.addActionListener(e -> mainFrame.showLoginPanel()); } diff --git a/src/main/java/com/note0/simple/UITheme.java b/src/main/java/com/note0/simple/UITheme.java new file mode 100644 index 0000000..43328fe --- /dev/null +++ b/src/main/java/com/note0/simple/UITheme.java @@ -0,0 +1,99 @@ +package com.note0.simple; + +import java.awt.Color; +import java.awt.Font; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.border.Border; +import javax.swing.border.CompoundBorder; + +/** + * A utility class to hold all the common colors, fonts, and styles + * for the application to ensure a consistent neo-brutalism look and feel. + */ +public class UITheme { + + // --- Colors --- + // A light, warm, off-white for the background + public static final Color APP_BACKGROUND = new Color(248, 244, 236); + // Pure white for content cards to contrast with the background + public static final Color CARD_BACKGROUND = Color.WHITE; + // Pure black for text and borders for high contrast + public static final Color TEXT_COLOR = Color.BLACK; + public static final Color BORDER_COLOR = Color.BLACK; + // A bright, vibrant blue for primary actions + public static final Color ACCENT_COLOR = new Color(0, 86, 255); + // A strong red for danger actions + public static final Color DANGER_COLOR = new Color(255, 59, 48); + // A simple gray for secondary text or actions + public static final Color SECONDARY_COLOR = new Color(108, 117, 125); + + // --- Fonts --- + public static final Font HEADING_FONT = new Font("SansSerif", Font.BOLD, 28); + public static final Font LABEL_FONT = new Font("SansSerif", Font.BOLD, 14); + public static final Font BODY_FONT = new Font("SansSerif", Font.PLAIN, 14); + + + // --- Borders --- + // Increased padding for a cleaner look + public static final Border APP_PADDING = BorderFactory.createEmptyBorder(20, 20, 20, 20); + // The main border style for buttons + private static final Border BUTTON_BORDER = new CompoundBorder( + BorderFactory.createLineBorder(BORDER_COLOR, 2), // 2px black line + BorderFactory.createEmptyBorder(10, 20, 10, 20) // 10px vertical, 20px horizontal padding + ); + + /** + * Creates the signature neo-brutalist shadow border. + * It's a 2px black border combined with a 4px black shadow, offset down and to the right. + * @return A composed Border object. + */ + public static Border createShadowBorder() { + Border contentBorder = new CompoundBorder( + BorderFactory.createLineBorder(BORDER_COLOR, 2), // The main 2px black border + BorderFactory.createEmptyBorder(15, 15, 15, 15) // 15px internal padding + ); + + // This MatteBorder creates the shadow: 0px top, 0px left, 4px bottom, 4px right + Border shadow = BorderFactory.createMatteBorder(0, 0, 4, 4, BORDER_COLOR); + + // Combine the shadow (outside) and the content border (inside) + return new CompoundBorder(shadow, contentBorder); + } + + /** + * Styles a JButton as a primary action button. + * @param button The JButton to style. + */ + public static void stylePrimaryButton(JButton button) { + button.setBackground(ACCENT_COLOR); + button.setForeground(Color.WHITE); + button.setFont(LABEL_FONT); + button.setBorder(BUTTON_BORDER); + button.setOpaque(true); + } + + /** + * Styles a JButton to look like a "secondary" (e.g., refresh) button. + * @param button The JButton to style. + */ + public static void styleSecondaryButton(JButton button) { + button.setBackground(CARD_BACKGROUND); + button.setForeground(TEXT_COLOR); + button.setFont(LABEL_FONT); + button.setBorder(BUTTON_BORDER); + button.setOpaque(true); + } + + /** + * Styles a JButton to look like a "danger" (e.g., delete) button. + * @param button The JButton to style. + */ + public static void styleDangerButton(JButton button) { + button.setBackground(DANGER_COLOR); + button.setForeground(Color.WHITE); + button.setFont(LABEL_FONT); + button.setBorder(BUTTON_BORDER); + button.setOpaque(true); + } +} diff --git a/src/test/UITheme.java b/src/test/UITheme.java new file mode 100644 index 0000000..d055d45 --- /dev/null +++ b/src/test/UITheme.java @@ -0,0 +1,119 @@ +package com.note0.simple; + +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Font; +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JTextField; +import javax.swing.border.Border; +import javax.swing.border.EmptyBorder; + +/** + * A helper class to store a consistent theme (colors, fonts, etc.) + * for the entire application, making it easy to change the style later. + */ +public class UITheme { + + // --- Colors --- + public static final Color APP_BACKGROUND = new Color(245, 247, 250); // Light gray background + public static final Color CARD_BACKGROUND = Color.WHITE; // White cards + public static final Color PRIMARY_COLOR = new Color(0, 123, 255); // Blue for primary actions + public static final Color PRIMARY_FOREGROUND = Color.WHITE; // White text on primary buttons + public static final Color SECONDARY_COLOR = new Color(108, 117, 125); // Gray for secondary text/actions + public static final Color TEXT_COLOR = new Color(33, 37, 41); // Dark gray for main text + public static final Color BORDER_COLOR = new Color(222, 226, 230); // Light gray for borders + public static final Color DANGER_COLOR = new Color(220, 53, 69); // Red for delete/reject actions + + // --- Fonts --- + // Using common system font "SansSerif" for broad compatibility + public static final Font TITLE_FONT = new Font("SansSerif", Font.BOLD, 28); // Large title font + public static final Font HEADING_FONT = new Font("SansSerif", Font.BOLD, 20); // Section headings + public static final Font BODY_FONT = new Font("SansSerif", Font.PLAIN, 14); // Standard text + public static final Font BUTTON_FONT = new Font("SansSerif", Font.BOLD, 14); // Button text + public static final Font LABEL_FONT = new Font("SansSerif", Font.BOLD, 14); // Labels (forms, table headers) + + // --- Borders --- + public static final Border APP_PADDING = new EmptyBorder(15, 15, 15, 15); // Padding around main panels + public static final Border CARD_PADDING = new EmptyBorder(20, 20, 20, 20); // Padding inside cards + // Increased vertical padding for text fields to make them taller + public static final Border FIELD_PADDING = new EmptyBorder(14, 12, 14, 12); + + /** + * Styles a primary action button (e.g., Login, Register, Upload, Approve). + * @param button The JButton to style. + */ + public static void stylePrimaryButton(JButton button) { + button.setBackground(PRIMARY_COLOR); + button.setForeground(PRIMARY_FOREGROUND); + button.setFont(BUTTON_FONT); + button.setFocusPainted(false); // Remove focus border + button.setBorder(new EmptyBorder(10, 20, 10, 20)); // Padding inside button + button.setOpaque(true); // Needed for background color on some L&Fs + button.setCursor(new Cursor(Cursor.HAND_CURSOR)); // Hand cursor on hover + } + + /** + * Styles a secondary action button (e.g., Rate, Refresh, Choose File). + * Often used for less critical actions or alternatives. + * @param button The JButton to style. + */ + public static void styleSecondaryButton(JButton button) { + button.setBackground(CARD_BACKGROUND); // Usually white or light background + button.setForeground(PRIMARY_COLOR); // Blue text + button.setFont(BUTTON_FONT); + button.setFocusPainted(false); + // Create an outlined border with padding inside + button.setBorder(BorderFactory.createCompoundBorder( + BorderFactory.createMatteBorder(1, 1, 1, 1, PRIMARY_COLOR), // 1px blue border + new EmptyBorder(9, 19, 9, 19) // Inner padding (10-1 for border thickness) + )); + button.setOpaque(false); // Make background transparent (if needed by L&F) + button.setContentAreaFilled(false); // Don't fill background + button.setBorderPainted(true); // Ensure border is visible + button.setCursor(new Cursor(Cursor.HAND_CURSOR)); + } + + /** + * Styles a red "danger" button used for destructive actions (e.g., Delete, Reject). + * @param button The JButton to style. + */ + public static void styleDangerButton(JButton button) { + button.setBackground(DANGER_COLOR); + button.setForeground(PRIMARY_FOREGROUND); // White text + button.setFont(BUTTON_FONT); + button.setFocusPainted(false); + button.setBorder(new EmptyBorder(10, 20, 10, 20)); // Padding + button.setOpaque(true); + button.setCursor(new Cursor(Cursor.HAND_CURSOR)); + } + + /** + * Styles a button to look like a hyperlink (e.g., Back to Login). + * @param button The JButton to style. + */ + public static void styleLinkButton(JButton button) { + button.setForeground(PRIMARY_COLOR); // Blue text + button.setFont(BODY_FONT); // Standard text font + button.setOpaque(false); + button.setContentAreaFilled(false); // No background fill + button.setBorderPainted(false); // No border + button.setFocusPainted(false); + button.setCursor(new Cursor(Cursor.HAND_CURSOR)); + // Optional: Add underline on hover (requires MouseListener) + } + + /** + * Styles a standard JTextField or JPasswordField. + * @param field The text component to style. + */ + public static void styleTextField(JTextField field) { + field.setFont(BODY_FONT); + // Add a light gray border and inner padding + field.setBorder(BorderFactory.createCompoundBorder( + BorderFactory.createMatteBorder(1, 1, 1, 1, BORDER_COLOR), // 1px border + FIELD_PADDING // Inner padding defined above + )); + } +} + From c96e59facdb6e2b5c96c483a8ac8d0c472a4b415 Mon Sep 17 00:00:00 2001 From: adharsh k Date: Wed, 22 Oct 2025 22:59:38 +0530 Subject: [PATCH 2/4] added loading page, added new ui (dark theme) --- .../java/com/note0/simple/AdminPanel.java | 96 +++++++++++---- .../java/com/note0/simple/DashboardPanel.java | 114 ++++++++++++++---- .../java/com/note0/simple/LoadingPanel.java | 110 +++++++++++++++++ .../java/com/note0/simple/LoginPanel.java | 63 ++++++++-- src/main/java/com/note0/simple/Main.java | 18 +-- src/main/java/com/note0/simple/MainFrame.java | 42 +++++-- .../java/com/note0/simple/MyUploadsPanel.java | 19 ++- .../java/com/note0/simple/ProfilePanel.java | 82 ++++++++++--- src/main/java/com/note0/simple/UITheme.java | 86 +++++++------ 9 files changed, 493 insertions(+), 137 deletions(-) create mode 100644 src/main/java/com/note0/simple/LoadingPanel.java diff --git a/src/main/java/com/note0/simple/AdminPanel.java b/src/main/java/com/note0/simple/AdminPanel.java index 1f0c364..aaf9aa9 100644 --- a/src/main/java/com/note0/simple/AdminPanel.java +++ b/src/main/java/com/note0/simple/AdminPanel.java @@ -22,22 +22,36 @@ public AdminPanel(SubjectDAO subjectDAO, MaterialDAO materialDAO, CloudinaryServ this.materialDAO = materialDAO; this.cloudinaryService = cloudinaryService; - setLayout(new GridLayout(2, 1, 10, 10)); // Two main sections: Subjects and Materials - setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + setLayout(new GridLayout(2, 1, 15, 15)); // Two main sections: Subjects and Materials + setBackground(UITheme.APP_BACKGROUND); + setBorder(UITheme.APP_PADDING); // --- Subjects Panel --- JPanel subjectsPanel = new JPanel(new BorderLayout(10, 10)); - subjectsPanel.setBorder(BorderFactory.createTitledBorder("Manage Subjects")); + subjectsPanel.setBackground(UITheme.CARD_BACKGROUND); + subjectsPanel.setBorder(UITheme.createShadowBorder()); + + // Title Label for Subjects + JLabel subjectTitle = new JLabel("Manage Subjects"); + subjectTitle.setFont(UITheme.HEADING_FONT); + subjectTitle.setForeground(UITheme.TEXT_COLOR); + subjectTitle.setHorizontalAlignment(SwingConstants.CENTER); + subjectTitle.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + subjectsPanel.add(subjectTitle, BorderLayout.NORTH); subjectTableModel = new DefaultTableModel(new String[]{"ID", "Name", "Branch", "Semester"}, 0); subjectTable = new JTable(subjectTableModel); subjectsPanel.add(new JScrollPane(subjectTable), BorderLayout.CENTER); // Subject management buttons - JPanel subjectButtonPanel = new JPanel(new FlowLayout()); - JButton addSubjectButton = new JButton("Add New Subject"); - JButton deleteSubjectButton = new JButton("Delete Selected Subject"); + JPanel subjectButtonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + subjectButtonPanel.setBackground(UITheme.CARD_BACKGROUND); + JButton addSubjectButton = new JButton("Add New"); + UITheme.stylePrimaryButton(addSubjectButton); + JButton deleteSubjectButton = new JButton("Delete Selected"); + UITheme.styleDangerButton(deleteSubjectButton); JButton refreshSubjectsButton = new JButton("Refresh"); + UITheme.styleSecondaryButton(refreshSubjectsButton); subjectButtonPanel.add(addSubjectButton); subjectButtonPanel.add(deleteSubjectButton); @@ -50,26 +64,39 @@ public AdminPanel(SubjectDAO subjectDAO, MaterialDAO materialDAO, CloudinaryServ // --- Materials Panel --- JPanel materialsPanel = new JPanel(new BorderLayout(10, 10)); - materialsPanel.setBorder(BorderFactory.createTitledBorder("Manage Materials (Pending & All Uploaded Notes)")); + materialsPanel.setBackground(UITheme.CARD_BACKGROUND); + materialsPanel.setBorder(UITheme.createShadowBorder()); + + // Title Label for Materials + JLabel materialTitle = new JLabel("Manage Materials"); + materialTitle.setFont(UITheme.HEADING_FONT); + materialTitle.setForeground(UITheme.TEXT_COLOR); + materialTitle.setHorizontalAlignment(SwingConstants.CENTER); + materialTitle.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0)); + materialsPanel.add(materialTitle, BorderLayout.NORTH); materialTableModel = new DefaultTableModel(new String[]{"ID", "Title", "Uploader", "Subject", "Status"}, 0); materialTable = new JTable(materialTableModel); materialsPanel.add(new JScrollPane(materialTable), BorderLayout.CENTER); - JPanel materialButtonPanel = new JPanel(new FlowLayout()); - JButton approveButton = new JButton("Approve Selected"); - JButton rejectButton = new JButton("Reject Selected"); - JButton deleteMaterialButton = new JButton("Delete Selected"); + JPanel materialButtonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + materialButtonPanel.setBackground(UITheme.CARD_BACKGROUND); + JButton approveButton = new JButton("Approve"); + UITheme.stylePrimaryButton(approveButton); + JButton rejectButton = new JButton("Reject"); + UITheme.styleDangerButton(rejectButton); + JButton deleteMaterialButton = new JButton("Delete"); + UITheme.styleDangerButton(deleteMaterialButton); JButton showPendingButton = new JButton("Show Pending"); + UITheme.styleSecondaryButton(showPendingButton); JButton showAllButton = new JButton("Show All"); - JButton refreshButton = new JButton("Refresh"); + UITheme.styleSecondaryButton(showAllButton); + materialButtonPanel.add(showPendingButton); + materialButtonPanel.add(showAllButton); materialButtonPanel.add(approveButton); materialButtonPanel.add(rejectButton); materialButtonPanel.add(deleteMaterialButton); - materialButtonPanel.add(showPendingButton); - materialButtonPanel.add(showAllButton); - materialButtonPanel.add(refreshButton); materialsPanel.add(materialButtonPanel, BorderLayout.SOUTH); approveButton.addActionListener(e -> approveMaterial()); @@ -77,7 +104,6 @@ public AdminPanel(SubjectDAO subjectDAO, MaterialDAO materialDAO, CloudinaryServ deleteMaterialButton.addActionListener(e -> deleteMaterial()); showPendingButton.addActionListener(e -> loadPendingMaterials()); showAllButton.addActionListener(e -> loadAllMaterials()); - refreshButton.addActionListener(e -> loadPendingMaterials()); // Add both main panels to the AdminPanel add(subjectsPanel); @@ -88,6 +114,7 @@ public AdminPanel(SubjectDAO subjectDAO, MaterialDAO materialDAO, CloudinaryServ } private void loadSubjects() { +// ... (existing code, no changes) ... subjectTableModel.setRowCount(0); try { List subjects = subjectDAO.getAllSubjects(); @@ -100,6 +127,7 @@ private void loadSubjects() { } private void loadPendingMaterials() { +// ... (existing code, no changes) ... materialTableModel.setRowCount(0); try { List materials = materialDAO.getPendingMaterials(); @@ -112,6 +140,7 @@ private void loadPendingMaterials() { } private void loadAllMaterials() { +// ... (existing code, no changes) ... materialTableModel.setRowCount(0); try { List materials = materialDAO.getAllMaterialsForAdmin(); @@ -129,29 +158,44 @@ private void addSubject() { addSubjectDialog.setLayout(new BorderLayout()); addSubjectDialog.setSize(400, 300); addSubjectDialog.setLocationRelativeTo(this); + addSubjectDialog.getContentPane().setBackground(UITheme.APP_BACKGROUND); // Form panel JPanel formPanel = new JPanel(new GridBagLayout()); + formPanel.setBackground(UITheme.CARD_BACKGROUND); + formPanel.setBorder(UITheme.APP_PADDING); GridBagConstraints gbc = new GridBagConstraints(); - formPanel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); + gbc.insets = new Insets(5, 5, 5, 5); // Subject name field - gbc.gridx = 0; gbc.gridy = 0; gbc.anchor = GridBagConstraints.WEST; - formPanel.add(new JLabel("Subject Name:"), gbc); + gbc.gridx = 0; gbc.gridy = 0; gbc.anchor = GridBagConstraints.EAST; + JLabel nameLabel = new JLabel("Subject Name:"); + nameLabel.setForeground(UITheme.TEXT_COLOR); + nameLabel.setFont(UITheme.LABEL_FONT); + formPanel.add(nameLabel, gbc); + gbc.gridx = 1; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 1.0; JTextField nameField = new JTextField(20); formPanel.add(nameField, gbc); // Branch field gbc.gridx = 0; gbc.gridy = 1; gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0; - formPanel.add(new JLabel("Branch:"), gbc); + JLabel branchLabel = new JLabel("Branch:"); + branchLabel.setForeground(UITheme.TEXT_COLOR); + branchLabel.setFont(UITheme.LABEL_FONT); + formPanel.add(branchLabel, gbc); + gbc.gridx = 1; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 1.0; JTextField branchField = new JTextField(20); formPanel.add(branchField, gbc); // Semester field gbc.gridx = 0; gbc.gridy = 2; gbc.fill = GridBagConstraints.NONE; gbc.weightx = 0; - formPanel.add(new JLabel("Semester:"), gbc); + JLabel semLabel = new JLabel("Semester:"); + semLabel.setForeground(UITheme.TEXT_COLOR); + semLabel.setFont(UITheme.LABEL_FONT); + formPanel.add(semLabel, gbc); + gbc.gridx = 1; gbc.fill = GridBagConstraints.HORIZONTAL; gbc.weightx = 1.0; JSpinner semesterSpinner = new JSpinner(new SpinnerNumberModel(1, 1, 8, 1)); formPanel.add(semesterSpinner, gbc); @@ -159,15 +203,19 @@ private void addSubject() { addSubjectDialog.add(formPanel, BorderLayout.CENTER); // Button panel - JPanel buttonPanel = new JPanel(new FlowLayout()); + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + buttonPanel.setBackground(UITheme.CARD_BACKGROUND); JButton saveButton = new JButton("Save"); + UITheme.stylePrimaryButton(saveButton); JButton cancelButton = new JButton("Cancel"); + UITheme.styleSecondaryButton(cancelButton); buttonPanel.add(saveButton); buttonPanel.add(cancelButton); addSubjectDialog.add(buttonPanel, BorderLayout.SOUTH); // Event handlers saveButton.addActionListener(e -> { +// ... (existing code, no changes) ... String name = nameField.getText().trim(); String branch = branchField.getText().trim(); int semester = (Integer) semesterSpinner.getValue(); @@ -193,6 +241,7 @@ private void addSubject() { } private void deleteSubject() { +// ... (existing code, no changes) ... int selectedRow = subjectTable.getSelectedRow(); if (selectedRow < 0) { JOptionPane.showMessageDialog(this, "Please select a subject to delete.", "Info", JOptionPane.INFORMATION_MESSAGE); @@ -216,6 +265,7 @@ private void deleteSubject() { } private void deleteMaterial() { +// ... (existing code, no changes) ... int selectedRow = materialTable.getSelectedRow(); if (selectedRow < 0) { JOptionPane.showMessageDialog(this, "Please select a material to delete.", "Info", JOptionPane.INFORMATION_MESSAGE); @@ -244,6 +294,7 @@ private void deleteMaterial() { } private void approveMaterial() { +// ... (existing code, no changes) ... int selectedRow = materialTable.getSelectedRow(); if (selectedRow < 0) { JOptionPane.showMessageDialog(this, "Please select a material to approve.", "Info", JOptionPane.INFORMATION_MESSAGE); @@ -264,6 +315,7 @@ private void approveMaterial() { } private void rejectMaterial() { +// ... (existing code, no changes) ... int selectedRow = materialTable.getSelectedRow(); if (selectedRow < 0) { JOptionPane.showMessageDialog(this, "Please select a material to reject.", "Info", JOptionPane.INFORMATION_MESSAGE); diff --git a/src/main/java/com/note0/simple/DashboardPanel.java b/src/main/java/com/note0/simple/DashboardPanel.java index 6f7e143..654ceb8 100644 --- a/src/main/java/com/note0/simple/DashboardPanel.java +++ b/src/main/java/com/note0/simple/DashboardPanel.java @@ -33,8 +33,10 @@ public DashboardPanel(MainFrame mainFrame, User user, MaterialDAO materialDAO, S this.cloudinaryService = cloudinaryService; setLayout(new BorderLayout()); + setBackground(UITheme.APP_BACKGROUND); // Set main background JTabbedPane tabbedPane = new JTabbedPane(); + tabbedPane.setFont(UITheme.LABEL_FONT); tabbedPane.addTab("Browse Materials", createBrowsePanel()); tabbedPane.addTab("Upload Material", createUploadPanel()); tabbedPane.addTab("My Uploads", createMyUploadsPanel()); @@ -42,21 +44,29 @@ public DashboardPanel(MainFrame mainFrame, User user, MaterialDAO materialDAO, S add(tabbedPane, BorderLayout.CENTER); JButton backButton = new JButton("Back to Feed"); + UITheme.styleSecondaryButton(backButton); backButton.addActionListener(e -> mainFrame.showFeedPanel(loggedInUser)); - add(backButton, BorderLayout.SOUTH); + + JPanel southPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); + southPanel.setBackground(UITheme.APP_BACKGROUND); + southPanel.add(backButton); + add(southPanel, BorderLayout.SOUTH); loadAndCacheSubjects(); // Load subjects once } private JPanel createBrowsePanel() { JPanel panel = new JPanel(new BorderLayout(10, 10)); - panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + panel.setBackground(UITheme.APP_BACKGROUND); + panel.setBorder(UITheme.APP_PADDING); // Filter Panel JPanel filterPanel = new JPanel(new FlowLayout(FlowLayout.LEFT)); + filterPanel.setBackground(UITheme.APP_BACKGROUND); JTextField searchField = new JTextField(20); JComboBox subjectFilterComboBox = new JComboBox<>(); JButton filterButton = new JButton("Search / Refresh"); + UITheme.stylePrimaryButton(filterButton); filterPanel.add(new JLabel("Search:")); filterPanel.add(searchField); @@ -76,15 +86,10 @@ public boolean isCellEditable(int row, int column) { materialsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); materialsTable.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { - if (evt.getClickCount() == 2) { - int row = materialsTable.rowAtPoint(evt.getPoint()); - long materialId = (long) materialsTable.getModel().getValueAt(row, -1); // Hidden ID column - try { - Material material = materialDAO.getMaterialById(materialId); - if(material != null) openMaterial(material); - } catch(SQLException e) { - JOptionPane.showMessageDialog(panel, "Error retrieving material details.", "Database Error", JOptionPane.ERROR_MESSAGE); - } + if (evt.getClickCount() == 2 && materialsTable.getSelectedRow() != -1) { + int modelRow = materialsTable.convertRowIndexToModel(materialsTable.getSelectedRow()); + Material material = currentMaterials.get(modelRow); + openMaterial(material); } } }); @@ -97,9 +102,12 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { filterButton.addActionListener(e -> loadMaterials(searchField.getText(), (String) subjectFilterComboBox.getSelectedItem())); // Action buttons panel - JPanel actionPanel = new JPanel(new FlowLayout()); + JPanel actionPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + actionPanel.setBackground(UITheme.APP_BACKGROUND); JButton rateButton = new JButton("Rate Selected"); + UITheme.stylePrimaryButton(rateButton); JButton viewButton = new JButton("View Selected"); + UITheme.styleSecondaryButton(viewButton); rateButton.addActionListener(e -> rateSelectedMaterial()); viewButton.addActionListener(e -> viewSelectedMaterial()); @@ -114,30 +122,70 @@ public void mouseClicked(java.awt.event.MouseEvent evt) { } private JPanel createUploadPanel() { + // This panel will be centered with a card look + JPanel wrapperPanel = new JPanel(new GridBagLayout()); + wrapperPanel.setBackground(UITheme.APP_BACKGROUND); + JPanel panel = new JPanel(new GridBagLayout()); - panel.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20)); + panel.setBackground(UITheme.CARD_BACKGROUND); + panel.setBorder(UITheme.createShadowBorder()); + GridBagConstraints gbc = new GridBagConstraints(); - gbc.insets = new Insets(5, 5, 5, 5); + gbc.insets = new Insets(10, 10, 10, 10); gbc.fill = GridBagConstraints.HORIZONTAL; + // Title + JLabel titleLabel = new JLabel("Upload New Material"); + titleLabel.setFont(UITheme.HEADING_FONT); + titleLabel.setForeground(UITheme.TEXT_COLOR); + gbc.gridx = 0; gbc.gridy = 0; gbc.gridwidth = 2; + gbc.anchor = GridBagConstraints.CENTER; + panel.add(titleLabel, gbc); + + gbc.gridwidth = 1; gbc.anchor = GridBagConstraints.EAST; + gbc.insets = new Insets(10, 10, 10, 10); + JTextField titleField = new JTextField(20); JComboBox uploadSubjectComboBox = new JComboBox<>(); JButton chooseFileButton = new JButton("Choose File"); + UITheme.styleSecondaryButton(chooseFileButton); JLabel selectedFileLabel = new JLabel("No file selected."); + selectedFileLabel.setForeground(UITheme.TEXT_COLOR); final File[] selectedFile = {null}; // Using an array to be final and mutable JButton uploadButton = new JButton("Upload"); + UITheme.stylePrimaryButton(uploadButton); populateSubjectFilter(uploadSubjectComboBox); uploadSubjectComboBox.removeItem("All Subjects"); // Can't upload to 'All' // Layout - gbc.gridx = 0; gbc.gridy = 0; panel.add(new JLabel("Title:"), gbc); - gbc.gridx = 1; gbc.gridy = 0; panel.add(titleField, gbc); - gbc.gridx = 0; gbc.gridy = 1; panel.add(new JLabel("Subject:"), gbc); - gbc.gridx = 1; gbc.gridy = 1; panel.add(uploadSubjectComboBox, gbc); - gbc.gridx = 0; gbc.gridy = 2; panel.add(chooseFileButton, gbc); - gbc.gridx = 1; gbc.gridy = 2; panel.add(selectedFileLabel, gbc); - gbc.gridx = 1; gbc.gridy = 3; gbc.anchor = GridBagConstraints.EAST; panel.add(uploadButton, gbc); + gbc.gridx = 0; gbc.gridy = 1; + JLabel titleFieldLabel = new JLabel("Title:"); + titleFieldLabel.setFont(UITheme.LABEL_FONT); + titleFieldLabel.setForeground(UITheme.TEXT_COLOR); + panel.add(titleFieldLabel, gbc); + + gbc.gridx = 1; gbc.gridy = 1; gbc.anchor = GridBagConstraints.WEST; + panel.add(titleField, gbc); + + gbc.gridx = 0; gbc.gridy = 2; gbc.anchor = GridBagConstraints.EAST; + JLabel subjectLabel = new JLabel("Subject:"); + subjectLabel.setFont(UITheme.LABEL_FONT); + subjectLabel.setForeground(UITheme.TEXT_COLOR); + panel.add(subjectLabel, gbc); + + gbc.gridx = 1; gbc.gridy = 2; gbc.anchor = GridBagConstraints.WEST; + panel.add(uploadSubjectComboBox, gbc); + + gbc.gridx = 0; gbc.gridy = 3; gbc.anchor = GridBagConstraints.EAST; + panel.add(chooseFileButton, gbc); + + gbc.gridx = 1; gbc.gridy = 3; gbc.anchor = GridBagConstraints.WEST; + panel.add(selectedFileLabel, gbc); + + gbc.gridx = 1; gbc.gridy = 4; gbc.anchor = GridBagConstraints.EAST; + gbc.fill = GridBagConstraints.NONE; + panel.add(uploadButton, gbc); // Actions chooseFileButton.addActionListener(e -> { @@ -156,10 +204,12 @@ private JPanel createUploadPanel() { handleUpload(titleField.getText(), (String) uploadSubjectComboBox.getSelectedItem(), selectedFile[0]); }); - return panel; + wrapperPanel.add(panel, new GridBagConstraints()); // Add card to wrapper + return wrapperPanel; // Return wrapper } private void loadAndCacheSubjects() { +// ... (existing code, no changes) ... try { allSubjects = subjectDAO.getAllSubjects(); subjectNameToIdMap.clear(); @@ -171,12 +221,14 @@ private void loadAndCacheSubjects() { } private void populateSubjectFilter(JComboBox comboBox) { +// ... (existing code, no changes) ... comboBox.removeAllItems(); comboBox.addItem("All Subjects"); allSubjects.stream().map(Subject::getName).distinct().sorted().forEach(comboBox::addItem); } private void loadMaterials(String titleFilter, String subjectFilter) { +// ... (existing code, no changes) ... tableModel.setRowCount(0); // Clear existing data currentMaterials.clear(); // Clear current materials list try { @@ -191,6 +243,7 @@ private void loadMaterials(String titleFilter, String subjectFilter) { } private void openMaterial(Material material) { +// ... (existing code, no changes) ... try { if (Desktop.isDesktopSupported() && material.getFilePath() != null) { Desktop.getDesktop().browse(new java.net.URI(material.getFilePath())); @@ -203,6 +256,7 @@ private void openMaterial(Material material) { } private void handleUpload(String title, String subjectName, File file) { +// ... (existing code, no changes) ... try { // 1. Upload the file to Cloudinary String url = cloudinaryService.uploadFile(file, "note0/materials", null); @@ -219,7 +273,7 @@ private void handleUpload(String title, String subjectName, File file) { // 3. Add the material metadata to the database materialDAO.addMaterial(title, url, subjectId, loggedInUser.getId()); - JOptionPane.showMessageDialog(this, "Upload successful!", "Success", JOptionPane.INFORMATION_MESSAGE); + JOptionPane.showMessageDialog(this, "Upload successful! Your material is pending approval.", "Success", JOptionPane.INFORMATION_MESSAGE); // Refresh the materials list in the browse tab loadMaterials("", "All Subjects"); @@ -231,6 +285,7 @@ private void handleUpload(String title, String subjectName, File file) { } private void rateSelectedMaterial() { +// ... (existing code, no changes) ... int selectedRow = materialsTable.getSelectedRow(); if (selectedRow < 0) { JOptionPane.showMessageDialog(this, "Please select a material to rate.", "Info", JOptionPane.INFORMATION_MESSAGE); @@ -250,7 +305,7 @@ private void rateSelectedMaterial() { "\nCurrent rating: " + (currentRating > 0 ? currentRating + " stars" : "Not rated"); int choice = JOptionPane.showOptionDialog(this, message, "Rate Material", - JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[0]); + JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null, options, options[0]); if (choice >= 0) { int rating = choice + 1; @@ -267,6 +322,7 @@ private void rateSelectedMaterial() { } private void viewSelectedMaterial() { +// ... (existing code, no changes) ... int selectedRow = materialsTable.getSelectedRow(); if (selectedRow < 0) { JOptionPane.showMessageDialog(this, "Please select a material to view.", "Info", JOptionPane.INFORMATION_MESSAGE); @@ -279,7 +335,8 @@ private void viewSelectedMaterial() { private JPanel createMyUploadsPanel() { JPanel panel = new JPanel(new BorderLayout(10, 10)); - panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); + panel.setBackground(UITheme.APP_BACKGROUND); + panel.setBorder(UITheme.APP_PADDING); // My uploads table String[] columnNames = {"Title", "Subject", "Rating", "Status"}; @@ -293,9 +350,12 @@ public boolean isCellEditable(int row, int column) { myUploadsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // Action buttons for my uploads - JPanel myUploadsActionPanel = new JPanel(new FlowLayout()); + JPanel myUploadsActionPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + myUploadsActionPanel.setBackground(UITheme.APP_BACKGROUND); JButton deleteMyUploadButton = new JButton("Delete Selected"); + UITheme.styleDangerButton(deleteMyUploadButton); JButton refreshMyUploadsButton = new JButton("Refresh"); + UITheme.styleSecondaryButton(refreshMyUploadsButton); deleteMyUploadButton.addActionListener(e -> deleteMyUpload(myUploadsTable, myUploadsModel)); refreshMyUploadsButton.addActionListener(e -> loadMyUploads(myUploadsModel)); @@ -313,6 +373,7 @@ public boolean isCellEditable(int row, int column) { } private void loadMyUploads(DefaultTableModel model) { +// ... (existing code, no changes) ... model.setRowCount(0); try { List myMaterials = materialDAO.getMaterialsByUser(loggedInUser.getId()); @@ -330,6 +391,7 @@ private void loadMyUploads(DefaultTableModel model) { } private void deleteMyUpload(JTable table, DefaultTableModel model) { +// ... (existing code, no changes) ... int selectedRow = table.getSelectedRow(); if (selectedRow < 0) { JOptionPane.showMessageDialog(this, "Please select an upload to delete.", "Info", JOptionPane.INFORMATION_MESSAGE); diff --git a/src/main/java/com/note0/simple/LoadingPanel.java b/src/main/java/com/note0/simple/LoadingPanel.java new file mode 100644 index 0000000..3965bae --- /dev/null +++ b/src/main/java/com/note0/simple/LoadingPanel.java @@ -0,0 +1,110 @@ +package com.note0.simple; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +/** + * A panel that displays a smooth, circular, looping spinner + * and a "Loading..." message. This is animated using a Swing Timer. + */ +public class LoadingPanel extends JPanel { + + public LoadingPanel() { + // Use GridBagLayout to center the components vertically + setLayout(new GridBagLayout()); + setBackground(UITheme.APP_BACKGROUND); + + GridBagConstraints gbc = new GridBagConstraints(); + gbc.gridwidth = 1; + gbc.insets = new Insets(10, 10, 10, 10); + gbc.anchor = GridBagConstraints.CENTER; + + // 1. The custom circular spinner component + CircularSpinner spinner = new CircularSpinner(); + gbc.gridy = 0; + add(spinner, gbc); + + // 2. The "Logging in..." label + JLabel loadingLabel = new JLabel("Logging in, please wait..."); + loadingLabel.setFont(UITheme.HEADING_FONT); + loadingLabel.setForeground(UITheme.TEXT_COLOR); + + gbc.gridy = 1; + add(loadingLabel, gbc); + } + + /** + * An inner class that represents the spinning circular indicator. + * It uses a Timer to animate itself by re-painting at regular intervals. + */ + private class CircularSpinner extends JPanel { + + private javax.swing.Timer timer; + private int rotationAngle = 0; // The starting angle of the arc + + public CircularSpinner() { + // Set the preferred size for the spinner area + setPreferredSize(new Dimension(60, 60)); + // Make the panel transparent + setOpaque(false); + + // Create a timer that fires every 16ms (for ~60 FPS) + timer = new javax.swing.Timer(16, new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + // Increment the rotation angle. + // (Adding 6 degrees each frame gives a good spin speed) + rotationAngle = (rotationAngle + 6) % 360; + + // Trigger a repaint, which will call paintComponent + repaint(); + } + }); + + // Start the animation timer + timer.start(); + } + + /** + * This method is called every time repaint() is triggered by the timer. + * It draws the spinning arc. + */ + @Override + protected void paintComponent(Graphics g) { + super.paintComponent(g); + + // Use Graphics2D for better rendering control + Graphics2D g2d = (Graphics2D) g.create(); + + try { + // 1. Turn on Anti-aliasing for smooth, non-pixelated edges + g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + + // 2. Calculate the position and size of the arc + int strokeWidth = 5; // How thick the arc line is + // Make the arc 5px smaller than the panel's edges + int diameter = Math.min(getWidth(), getHeight()) - (strokeWidth * 2); + int x = (getWidth() - diameter) / 2; + int y = (getHeight() - diameter) / 2; + + // 3. Set the "pen" (Stroke) + // We use a 5px thick, rounded line + g2d.setStroke(new BasicStroke(strokeWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); + + // 4. Set the color from our theme + g2d.setColor(UITheme.ACCENT_COLOR); + + // 5. Draw the arc + // This draws a 270-degree arc (like a "C") starting at the 'rotationAngle' + g2d.drawArc(x, y, diameter, diameter, rotationAngle, 270); + + } finally { + // Clean up the graphics context + g2d.dispose(); + } + } + } +} + diff --git a/src/main/java/com/note0/simple/LoginPanel.java b/src/main/java/com/note0/simple/LoginPanel.java index 7a31c22..55ef80d 100644 --- a/src/main/java/com/note0/simple/LoginPanel.java +++ b/src/main/java/com/note0/simple/LoginPanel.java @@ -13,6 +13,7 @@ public class LoginPanel extends JPanel { private JPasswordField passwordField = new JPasswordField(20); private JButton loginButton = new JButton("Login"); private JButton registerButton = new JButton("Go to Register"); + private JPanel formPanel; // <-- Made formPanel a field to disable it public LoginPanel(MainFrame mainFrame, UserDAO userDAO) { this.mainFrame = mainFrame; @@ -23,11 +24,13 @@ public LoginPanel(MainFrame mainFrame, UserDAO userDAO) { setBackground(UITheme.APP_BACKGROUND); // Use theme background // --- Create the main form panel --- - JPanel formPanel = new JPanel(new GridBagLayout()); + // Use the class field + formPanel = new JPanel(new GridBagLayout()); formPanel.setBackground(UITheme.CARD_BACKGROUND); // White card background formPanel.setBorder(UITheme.createShadowBorder()); // Apply neo-brutalism shadow border GridBagConstraints gbc = new GridBagConstraints(); +// ... (rest of the constructor code is identical) ... gbc.insets = new Insets(10, 10, 10, 10); gbc.fill = GridBagConstraints.HORIZONTAL; @@ -92,12 +95,16 @@ public LoginPanel(MainFrame mainFrame, UserDAO userDAO) { // --- Add the form panel to the main panel (which centers it) --- add(formPanel, new GridBagConstraints()); +// ... (rest of the constructor code is identical) ... // Add Action Listeners loginButton.addActionListener(e -> handleLogin()); registerButton.addActionListener(e -> mainFrame.showRegistrationPanel()); } + /** + * Handles the login logic using a SwingWorker for a non-blocking UI. + */ private void handleLogin() { String email = emailField.getText(); String password = new String(passwordField.getPassword()); @@ -107,16 +114,50 @@ private void handleLogin() { return; } - try { - User user = userDAO.loginUser(email, password); - if (user != null) { - mainFrame.showFeedPanel(user); - } else { - JOptionPane.showMessageDialog(this, "Invalid email or password.", "Login Failed", JOptionPane.ERROR_MESSAGE); + // Show the loading panel FIRST + mainFrame.showLoadingPanel(); + + // Create a SwingWorker to run the database call on a background thread + SwingWorker worker = new SwingWorker() { + + /** + * This runs on a background thread. + * No Swing UI code here! + */ + @Override + protected User doInBackground() throws Exception { + // This is the long-running task + return userDAO.loginUser(email, password); } - } catch (SQLException e) { - JOptionPane.showMessageDialog(this, "Database error during login: " + e.getMessage(), "Database Error", JOptionPane.ERROR_MESSAGE); - e.printStackTrace(); - } + + /** + * This runs on the UI thread after doInBackground() finishes. + * Safe to update the UI here. + */ + @Override + protected void done() { + try { + User user = get(); // Get the result from doInBackground() + + if (user != null) { + // Success! Show the main app feed + mainFrame.showFeedPanel(user); + } else { + // Login failed, show error and go back to login panel + JOptionPane.showMessageDialog(mainFrame, "Invalid email or password.", "Login Failed", JOptionPane.ERROR_MESSAGE); + mainFrame.showLoginPanel(); + } + } catch (Exception e) { + // Database or other error, show error and go back to login panel + JOptionPane.showMessageDialog(mainFrame, "Database error during login: " + e.getMessage(), "Database Error", JOptionPane.ERROR_MESSAGE); + mainFrame.showLoginPanel(); + e.printStackTrace(); + } + } + }; + + // Start the worker + worker.execute(); } } + diff --git a/src/main/java/com/note0/simple/Main.java b/src/main/java/com/note0/simple/Main.java index ae302ed..5ce473c 100644 --- a/src/main/java/com/note0/simple/Main.java +++ b/src/main/java/com/note0/simple/Main.java @@ -1,12 +1,12 @@ package com.note0.simple; -import com.formdev.flatlaf.FlatLightLaf; // <-- 1. IMPORT THIS +import com.formdev.flatlaf.FlatDarkLaf; // <-- 1. IMPORT THE DARK THEME import javax.swing.SwingUtilities; import java.sql.SQLException; /** * The main entry point for the Note0 Desktop Application. - * * This class is responsible for initializing and launching the main application window. + * This class is responsible for initializing and launching the main application window. * It uses SwingUtilities.invokeLater to ensure that the GUI is created and updated * on the Event Dispatch Thread (EDT), which is the standard and required practice * for thread-safe Swing applications. @@ -15,16 +15,10 @@ public class Main { public static void main(String[] args) { - // --- 2. SET THE MODERN LOOK AND FEEL --- - // This MUST be done before any Swing components are created. + // --- 2. SET THE MODERN DARK LOOK AND FEEL --- try { - FlatLightLaf.setup(); // This sets a clean, modern light theme. - - // --- You can also try other themes! --- - // Just uncomment one of these lines to change the theme: - // com.formdev.flatlaf.FlatDarkLaf.setup(); - // com.formdev.flatlaf.FlatIntelliJLaf.setup(); - // com.formdev.flatlaf.FlatDarculaLaf.setup(); + // This is the only line that needs to change: + FlatDarkLaf.setup(); // This sets a clean, professional dark theme. } catch( Exception ex ) { System.err.println( "Failed to initialize LaF" ); @@ -50,4 +44,4 @@ public void run() { } }); } -} \ No newline at end of file +} diff --git a/src/main/java/com/note0/simple/MainFrame.java b/src/main/java/com/note0/simple/MainFrame.java index ad9c151..e56a202 100644 --- a/src/main/java/com/note0/simple/MainFrame.java +++ b/src/main/java/com/note0/simple/MainFrame.java @@ -20,6 +20,13 @@ public class MainFrame extends JFrame { private final SubjectDAO subjectDAO; private final CloudinaryService cloudinaryService; + // Define panel names as constants for easy reference + public static final String LOGIN_PANEL_ID = "LOGIN_PANEL"; + public static final String REGISTER_PANEL_ID = "REGISTER_PANEL"; + public static final String LOADING_PANEL_ID = "LOADING_PANEL"; + public static final String MAIN_APP_PANEL_ID = "MAIN_APP_PANEL"; + + public MainFrame() { this.userDAO = new UserDAO(); this.materialDAO = new MaterialDAO(); @@ -38,23 +45,35 @@ public MainFrame() { mainPanel = new JPanel(cardLayout); mainPanel.setBackground(UITheme.APP_BACKGROUND); // Set main panel background + // Create all panels LoginPanel loginPanel = new LoginPanel(this, userDAO); RegistrationPanel registrationPanel = new RegistrationPanel(this, userDAO); + LoadingPanel loadingPanel = new LoadingPanel(); // <-- ADDED - mainPanel.add(loginPanel, "LOGIN_PANEL"); - mainPanel.add(registrationPanel, "REGISTER_PANEL"); + // Add panels to the card layout + mainPanel.add(loginPanel, LOGIN_PANEL_ID); + mainPanel.add(registrationPanel, REGISTER_PANEL_ID); + mainPanel.add(loadingPanel, LOADING_PANEL_ID); // <-- ADDED add(mainPanel); - cardLayout.show(mainPanel, "LOGIN_PANEL"); + cardLayout.show(mainPanel, LOGIN_PANEL_ID); } public void showLoginPanel() { - cardLayout.show(mainPanel, "LOGIN_PANEL"); + cardLayout.show(mainPanel, LOGIN_PANEL_ID); } public void showRegistrationPanel() { - cardLayout.show(mainPanel, "REGISTER_PANEL"); + cardLayout.show(mainPanel, REGISTER_PANEL_ID); + } + + /** + * Shows the loading panel. + * This is called right before a long task (like login) starts. + */ + public void showLoadingPanel() { + cardLayout.show(mainPanel, LOADING_PANEL_ID); } public void showFeedPanel(User user) { @@ -77,8 +96,16 @@ public void showFeedPanel(User user) { tabbedPane.addTab("Admin", adminPanel); } - mainPanel.add(tabbedPane, "MAIN_APP_PANEL"); - cardLayout.show(mainPanel, "MAIN_APP_PANEL"); + // We use a constant here, but we must add the component. + // It's safer to remove the old one if it exists. + Component[] components = mainPanel.getComponents(); + for (Component component : components) { + if (component instanceof JTabbedPane) { + mainPanel.remove(component); + } + } + mainPanel.add(tabbedPane, MAIN_APP_PANEL_ID); + cardLayout.show(mainPanel, MAIN_APP_PANEL_ID); } public void showDashboardPanel(User user) { @@ -87,3 +114,4 @@ public void showDashboardPanel(User user) { showFeedPanel(user); } } + diff --git a/src/main/java/com/note0/simple/MyUploadsPanel.java b/src/main/java/com/note0/simple/MyUploadsPanel.java index 739b71e..6057c26 100644 --- a/src/main/java/com/note0/simple/MyUploadsPanel.java +++ b/src/main/java/com/note0/simple/MyUploadsPanel.java @@ -118,12 +118,21 @@ private void deleteMyUpload() { "The uploaded file will remain in Cloudinary storage.", "Confirm Deletion", JOptionPane.YES_NO_OPTION); - if (confirm == JOptionPane.YES_OPTION) { + // ... inside your delete method ... - materialDAO.deleteMaterial(material.getId()); - JOptionPane.showMessageDialog(this, "Upload deleted successfully!", "Success", JOptionPane.INFORMATION_MESSAGE); - loadMyUploads(); // Refresh the list - } + // ADD THIS LINE BACK - This is what creates the 'confirm' variable + int confirm = JOptionPane.showConfirmDialog(this, + "Are you sure you want to delete '" + material.getTitle() + "'?", + "Confirm Deletion", + JOptionPane.YES_NO_OPTION); + + // Now this 'if' statement will work + if (confirm == JOptionPane.YES_OPTION) { + materialDAO.deleteMaterial(material.getId()); + JOptionPane.showMessageDialog(this, "Upload deleted successfully!", "Success", JOptionPane.INFORMATION_MESSAGE); + loadMyUploads(); // Refresh the list + } +// ... } } catch (SQLException e) { JOptionPane.showMessageDialog(this, "Error deleting upload: " + e.getMessage(), "Database Error", JOptionPane.ERROR_MESSAGE); diff --git a/src/main/java/com/note0/simple/ProfilePanel.java b/src/main/java/com/note0/simple/ProfilePanel.java index 0595947..676e312 100644 --- a/src/main/java/com/note0/simple/ProfilePanel.java +++ b/src/main/java/com/note0/simple/ProfilePanel.java @@ -18,33 +18,82 @@ public ProfilePanel(UserDAO userDAO, User currentUser) { this.userDAO = userDAO; this.currentUser = currentUser; + // Use a GridBagLayout to center the form setLayout(new GridBagLayout()); - setBorder(BorderFactory.createTitledBorder("Your Profile")); - GridBagConstraints gbc = new GridBagConstraints(); - gbc.insets = new Insets(5, 5, 5, 5); - gbc.fill = GridBagConstraints.HORIZONTAL; - - gbc.gridx = 0; gbc.gridy = 0; add(new JLabel("Full Name:"), gbc); - gbc.gridx = 1; gbc.gridy = 0; add(fullNameField, gbc); - - gbc.gridx = 0; gbc.gridy = 1; add(new JLabel("Email:"), gbc); - gbc.gridx = 1; gbc.gridy = 1; add(emailField, gbc); + setBackground(UITheme.APP_BACKGROUND); - gbc.gridx = 0; gbc.gridy = 2; add(new JLabel("College Name:"), gbc); - gbc.gridx = 1; gbc.gridy = 2; add(collegeNameField, gbc); + // Create the form panel with a shadow border + JPanel formPanel = new JPanel(new GridBagLayout()); + formPanel.setBackground(UITheme.CARD_BACKGROUND); + formPanel.setBorder(UITheme.createShadowBorder()); - gbc.gridx = 0; gbc.gridy = 3; add(new JLabel("Semester:"), gbc); - gbc.gridx = 1; gbc.gridy = 3; add(semesterSpinner, gbc); + GridBagConstraints gbc = new GridBagConstraints(); + gbc.insets = new Insets(10, 10, 10, 10); + gbc.fill = GridBagConstraints.HORIZONTAL; - gbc.gridx = 0; gbc.gridy = 4; gbc.gridwidth = 2; - add(updateButton, gbc); + // Title + JLabel titleLabel = new JLabel("Your Profile"); + titleLabel.setFont(UITheme.HEADING_FONT); + titleLabel.setForeground(UITheme.TEXT_COLOR); + gbc.gridx = 0; gbc.gridy = 0; gbc.gridwidth = 2; + gbc.anchor = GridBagConstraints.CENTER; + formPanel.add(titleLabel, gbc); + + gbc.gridwidth = 1; gbc.anchor = GridBagConstraints.EAST; + gbc.insets = new Insets(10, 10, 10, 10); + + // Full Name + JLabel nameLabel = new JLabel("Full Name:"); + nameLabel.setFont(UITheme.LABEL_FONT); + nameLabel.setForeground(UITheme.TEXT_COLOR); + gbc.gridx = 0; gbc.gridy = 1; formPanel.add(nameLabel, gbc); + gbc.gridx = 1; gbc.gridy = 1; gbc.anchor = GridBagConstraints.WEST; + formPanel.add(fullNameField, gbc); + + // Email + JLabel emailLabel = new JLabel("Email:"); + emailLabel.setFont(UITheme.LABEL_FONT); + emailLabel.setForeground(UITheme.TEXT_COLOR); + gbc.gridx = 0; gbc.gridy = 2; gbc.anchor = GridBagConstraints.EAST; + formPanel.add(emailLabel, gbc); + gbc.gridx = 1; gbc.gridy = 2; gbc.anchor = GridBagConstraints.WEST; + formPanel.add(emailField, gbc); + + // College Name + JLabel collegeLabel = new JLabel("College Name:"); + collegeLabel.setFont(UITheme.LABEL_FONT); + collegeLabel.setForeground(UITheme.TEXT_COLOR); + gbc.gridx = 0; gbc.gridy = 3; gbc.anchor = GridBagConstraints.EAST; + formPanel.add(collegeLabel, gbc); + gbc.gridx = 1; gbc.gridy = 3; gbc.anchor = GridBagConstraints.WEST; + formPanel.add(collegeNameField, gbc); + + // Semester + JLabel semesterLabel = new JLabel("Semester:"); + semesterLabel.setFont(UITheme.LABEL_FONT); + semesterLabel.setForeground(UITheme.TEXT_COLOR); + gbc.gridx = 0; gbc.gridy = 4; gbc.anchor = GridBagConstraints.EAST; + formPanel.add(semesterLabel, gbc); + gbc.gridx = 1; gbc.gridy = 4; gbc.anchor = GridBagConstraints.WEST; + formPanel.add(semesterSpinner, gbc); + + // Update Button + UITheme.stylePrimaryButton(updateButton); + gbc.gridx = 1; gbc.gridy = 5; + gbc.fill = GridBagConstraints.NONE; + gbc.anchor = GridBagConstraints.EAST; + formPanel.add(updateButton, gbc); updateButton.addActionListener(e -> updateUserProfile()); + // Add the form panel to the centering wrapper + add(formPanel, new GridBagConstraints()); + loadProfile(); } private void loadProfile() { +// ... (existing code, no changes) ... fullNameField.setText(currentUser.getFullName()); emailField.setText(currentUser.getEmail()); collegeNameField.setText(currentUser.getCollegeName()); @@ -52,6 +101,7 @@ private void loadProfile() { } private void updateUserProfile() { +// ... (existing code, no changes) ... currentUser.setFullName(fullNameField.getText()); currentUser.setEmail(emailField.getText()); currentUser.setCollegeName(collegeNameField.getText()); diff --git a/src/main/java/com/note0/simple/UITheme.java b/src/main/java/com/note0/simple/UITheme.java index 43328fe..e0fcebb 100644 --- a/src/main/java/com/note0/simple/UITheme.java +++ b/src/main/java/com/note0/simple/UITheme.java @@ -9,91 +9,101 @@ /** * A utility class to hold all the common colors, fonts, and styles - * for the application to ensure a consistent neo-brutalism look and feel. + * for the application to ensure a consistent "dark" look and feel. + * * This palette is inspired by the "Dracula" theme. */ public class UITheme { - // --- Colors --- - // A light, warm, off-white for the background - public static final Color APP_BACKGROUND = new Color(248, 244, 236); - // Pure white for content cards to contrast with the background - public static final Color CARD_BACKGROUND = Color.WHITE; - // Pure black for text and borders for high contrast - public static final Color TEXT_COLOR = Color.BLACK; - public static final Color BORDER_COLOR = Color.BLACK; - // A bright, vibrant blue for primary actions - public static final Color ACCENT_COLOR = new Color(0, 86, 255); - // A strong red for danger actions - public static final Color DANGER_COLOR = new Color(255, 59, 48); - // A simple gray for secondary text or actions - public static final Color SECONDARY_COLOR = new Color(108, 117, 125); + // --- Colors (Dracula Palette) --- + // A very dark purple-gray for the main background + public static final Color APP_BACKGROUND = new Color(40, 42, 54); + // A lighter purple-gray for content cards + public static final Color CARD_BACKGROUND = new Color(68, 71, 90); + // An off-white for all text + public static final Color TEXT_COLOR = new Color(248, 248, 242); + // A light purple for borders + public static final Color BORDER_COLOR = new Color(98, 114, 164); + // A bright, "electric" cyan for primary actions + public static final Color ACCENT_COLOR = new Color(80, 250, 212); + // A bright pink for danger actions + public static final Color DANGER_COLOR = new Color(255, 121, 198); + // A calm blue-gray for secondary buttons + public static final Color SECONDARY_COLOR = new Color(144, 153, 174); // --- Fonts --- public static final Font HEADING_FONT = new Font("SansSerif", Font.BOLD, 28); public static final Font LABEL_FONT = new Font("SansSerif", Font.BOLD, 14); public static final Font BODY_FONT = new Font("SansSerif", Font.PLAIN, 14); - // --- Borders --- - // Increased padding for a cleaner look public static final Border APP_PADDING = BorderFactory.createEmptyBorder(20, 20, 20, 20); - // The main border style for buttons - private static final Border BUTTON_BORDER = new CompoundBorder( - BorderFactory.createLineBorder(BORDER_COLOR, 2), // 2px black line - BorderFactory.createEmptyBorder(10, 20, 10, 20) // 10px vertical, 20px horizontal padding + + // A border for secondary buttons (dark card, light text) + private static final Border SECONDARY_BUTTON_BORDER = new CompoundBorder( + BorderFactory.createLineBorder(SECONDARY_COLOR, 2), // Use secondary color + BorderFactory.createEmptyBorder(10, 20, 10, 20) ); /** - * Creates the signature neo-brutalist shadow border. - * It's a 2px black border combined with a 4px black shadow, offset down and to the right. + * Creates the neo-brutalism shadow border, adapted for a dark theme. + * It has a light purple border and a black shadow. * @return A composed Border object. */ public static Border createShadowBorder() { Border contentBorder = new CompoundBorder( - BorderFactory.createLineBorder(BORDER_COLOR, 2), // The main 2px black border + BorderFactory.createLineBorder(BORDER_COLOR, 2), // The light purple border BorderFactory.createEmptyBorder(15, 15, 15, 15) // 15px internal padding ); - // This MatteBorder creates the shadow: 0px top, 0px left, 4px bottom, 4px right - Border shadow = BorderFactory.createMatteBorder(0, 0, 4, 4, BORDER_COLOR); + // The shadow is a simple black offset border + Border shadow = BorderFactory.createMatteBorder(0, 0, 4, 4, Color.BLACK); // Combine the shadow (outside) and the content border (inside) return new CompoundBorder(shadow, contentBorder); } /** - * Styles a JButton as a primary action button. + * Styles a JButton as a primary action button (Bright Cyan). * @param button The JButton to style. */ public static void stylePrimaryButton(JButton button) { - button.setBackground(ACCENT_COLOR); - button.setForeground(Color.WHITE); + Border border = new CompoundBorder( + BorderFactory.createLineBorder(Color.BLACK, 2), // Black outline + BorderFactory.createEmptyBorder(10, 20, 10, 20) + ); + button.setBackground(ACCENT_COLOR); // Bright Cyan + button.setForeground(Color.BLACK); // Black text for high contrast button.setFont(LABEL_FONT); - button.setBorder(BUTTON_BORDER); + button.setBorder(border); button.setOpaque(true); } /** - * Styles a JButton to look like a "secondary" (e.g., refresh) button. + * Styles a JButton as a "secondary" button (Gray on Dark). * @param button The JButton to style. */ public static void styleSecondaryButton(JButton button) { - button.setBackground(CARD_BACKGROUND); - button.setForeground(TEXT_COLOR); + button.setBackground(CARD_BACKGROUND); // Dark card color + button.setForeground(TEXT_COLOR); // Light text button.setFont(LABEL_FONT); - button.setBorder(BUTTON_BORDER); + button.setBorder(SECONDARY_BUTTON_BORDER); // Light purple border button.setOpaque(true); } /** - * Styles a JButton to look like a "danger" (e.g., delete) button. + * Styles a JButton as a "danger" button (Bright Pink). * @param button The JButton to style. */ public static void styleDangerButton(JButton button) { - button.setBackground(DANGER_COLOR); - button.setForeground(Color.WHITE); + Border border = new CompoundBorder( + BorderFactory.createLineBorder(Color.BLACK, 2), // Black outline + BorderFactory.createEmptyBorder(10, 20, 10, 20) + ); + button.setBackground(DANGER_COLOR); // Bright Pink + button.setForeground(Color.BLACK); // Black text for high contrast button.setFont(LABEL_FONT); - button.setBorder(BUTTON_BORDER); + button.setBorder(border); button.setOpaque(true); } } + From 4b04a6fd4b3098417e6a433544b7acfaf72c63dd Mon Sep 17 00:00:00 2001 From: adharsh k Date: Wed, 22 Oct 2025 23:24:26 +0530 Subject: [PATCH 3/4] made the loading bar --- src/main/java/com/note0/simple/FeedPanel.java | 37 ++++- .../java/com/note0/simple/LoginPanel.java | 139 ++++++++++-------- src/main/java/com/note0/simple/MainFrame.java | 130 +++++++++++----- 3 files changed, 204 insertions(+), 102 deletions(-) diff --git a/src/main/java/com/note0/simple/FeedPanel.java b/src/main/java/com/note0/simple/FeedPanel.java index ce940e0..508093c 100644 --- a/src/main/java/com/note0/simple/FeedPanel.java +++ b/src/main/java/com/note0/simple/FeedPanel.java @@ -12,11 +12,20 @@ public class FeedPanel extends JPanel { private final MainFrame mainFrame; private final User loggedInUser; private final MaterialDAO materialDAO; + private final SubjectDAO subjectDAO; + private final CloudinaryService cloudinaryService; + + // We make the JTabbedPane a field so we can refresh it + private JTabbedPane tabbedPane; public FeedPanel(MainFrame mainFrame, User user, MaterialDAO materialDAO, SubjectDAO subjectDAO, CloudinaryService cloudinaryService) { this.mainFrame = mainFrame; this.loggedInUser = user; this.materialDAO = materialDAO; + // Keep these in case you need them later + this.subjectDAO = subjectDAO; + this.cloudinaryService = cloudinaryService; + setLayout(new BorderLayout(10, 10)); // Add gaps setBackground(UITheme.APP_BACKGROUND); @@ -32,11 +41,8 @@ public FeedPanel(MainFrame mainFrame, User user, MaterialDAO materialDAO, Subjec JButton logoutButton = new JButton("Logout"); UITheme.styleSecondaryButton(logoutButton); - // --- FIX IS HERE --- - // Add the ActionListeners back to the buttons browseButton.addActionListener(e -> mainFrame.showDashboardPanel(loggedInUser)); logoutButton.addActionListener(e -> mainFrame.showLoginPanel()); - // ------------------- JLabel welcomeLabel = new JLabel("Welcome, " + loggedInUser.getFullName()); welcomeLabel.setFont(UITheme.LABEL_FONT); @@ -47,14 +53,26 @@ public FeedPanel(MainFrame mainFrame, User user, MaterialDAO materialDAO, Subjec add(navPanel, BorderLayout.NORTH); // Main Content - JTabbedPane tabbedPane = new JTabbedPane(); + tabbedPane = new JTabbedPane(); // Initialize the class field tabbedPane.setFont(UITheme.LABEL_FONT); + // Build the feeds for the first time + buildFeeds(); + + add(tabbedPane, BorderLayout.CENTER); + } + + /** + * A new method to build (or rebuild) all feed tabs. + */ + private void buildFeeds() { + // Remove old content + tabbedPane.removeAll(); + + // Add new, refreshed content tabbedPane.addTab("Recent", createFeedSection("Recent Materials")); tabbedPane.addTab("Recommended", createFeedSection("Recommended Materials")); tabbedPane.addTab("Popular", createFeedSection("Popular Materials")); - - add(tabbedPane, BorderLayout.CENTER); } private JScrollPane createFeedSection(String title) { @@ -175,8 +193,11 @@ private void rateMaterial(Material material) { materialDAO.addOrUpdateRating(materialId, loggedInUser.getId(), rating); JOptionPane.showMessageDialog(this, "Rating saved successfully!", "Success", JOptionPane.INFORMATION_MESSAGE); - // Refresh the feed to show updated ratings - mainFrame.showFeedPanel(loggedInUser); + // --- THIS IS THE FIX --- + // Instead of reloading the whole app, just rebuild this panel's feeds. + // This is very fast and won't trigger the loading circle. + buildFeeds(); + // --------------------- } } catch (SQLException e) { diff --git a/src/main/java/com/note0/simple/LoginPanel.java b/src/main/java/com/note0/simple/LoginPanel.java index 55ef80d..cd3064c 100644 --- a/src/main/java/com/note0/simple/LoginPanel.java +++ b/src/main/java/com/note0/simple/LoginPanel.java @@ -8,96 +8,86 @@ public class LoginPanel extends JPanel { private final MainFrame mainFrame; private final UserDAO userDAO; + private final MaterialDAO materialDAO; + private final SubjectDAO subjectDAO; + private final CloudinaryService cloudinaryService; private JTextField emailField = new JTextField(20); private JPasswordField passwordField = new JPasswordField(20); private JButton loginButton = new JButton("Login"); private JButton registerButton = new JButton("Go to Register"); - private JPanel formPanel; // <-- Made formPanel a field to disable it + private JPanel formPanel; + + /** + * Helper class to store the result of the background login task. + * This allows us to return both the User and the fully-built JTabbedPane. + */ + private static class LoginResult { + final User user; + final JTabbedPane tabbedPane; + + LoginResult(User user, JTabbedPane tabbedPane) { + this.user = user; + this.tabbedPane = tabbedPane; + } + } public LoginPanel(MainFrame mainFrame, UserDAO userDAO) { this.mainFrame = mainFrame; this.userDAO = userDAO; + + // We need all the DAOs to pre-build the panels in the background + this.materialDAO = new MaterialDAO(); + this.subjectDAO = new SubjectDAO(); + this.cloudinaryService = new CloudinaryService(); - // Use a GridBagLayout to center the form panel - setLayout(new GridBagLayout()); - setBackground(UITheme.APP_BACKGROUND); // Use theme background - // --- Create the main form panel --- - // Use the class field + // --- UI Setup (No changes here) --- + setLayout(new GridBagLayout()); + setBackground(UITheme.APP_BACKGROUND); formPanel = new JPanel(new GridBagLayout()); - formPanel.setBackground(UITheme.CARD_BACKGROUND); // White card background - formPanel.setBorder(UITheme.createShadowBorder()); // Apply neo-brutalism shadow border - + formPanel.setBackground(UITheme.CARD_BACKGROUND); + formPanel.setBorder(UITheme.createShadowBorder()); GridBagConstraints gbc = new GridBagConstraints(); -// ... (rest of the constructor code is identical) ... gbc.insets = new Insets(10, 10, 10, 10); gbc.fill = GridBagConstraints.HORIZONTAL; - - // Title JLabel titleLabel = new JLabel("Note0 Login"); - titleLabel.setFont(UITheme.HEADING_FONT); // Use theme heading font + titleLabel.setFont(UITheme.HEADING_FONT); titleLabel.setForeground(UITheme.TEXT_COLOR); - gbc.gridx = 0; - gbc.gridy = 0; - gbc.gridwidth = 2; + gbc.gridx = 0; gbc.gridy = 0; gbc.gridwidth = 2; gbc.anchor = GridBagConstraints.CENTER; - gbc.insets = new Insets(10, 10, 20, 10); // More padding below title + gbc.insets = new Insets(10, 10, 20, 10); formPanel.add(titleLabel, gbc); - - // --- Reset constraints for fields --- gbc.gridwidth = 1; gbc.anchor = GridBagConstraints.EAST; gbc.insets = new Insets(10, 10, 10, 10); - - // Email JLabel emailLabel = new JLabel("Email:"); emailLabel.setFont(UITheme.LABEL_FONT); - gbc.gridx = 0; - gbc.gridy = 1; + gbc.gridx = 0; gbc.gridy = 1; formPanel.add(emailLabel, gbc); - gbc.anchor = GridBagConstraints.WEST; - gbc.gridx = 1; - gbc.gridy = 1; + gbc.gridx = 1; gbc.gridy = 1; formPanel.add(emailField, gbc); - - // Password JLabel passLabel = new JLabel("Password:"); passLabel.setFont(UITheme.LABEL_FONT); gbc.anchor = GridBagConstraints.EAST; - gbc.gridx = 0; - gbc.gridy = 2; + gbc.gridx = 0; gbc.gridy = 2; formPanel.add(passLabel, gbc); - gbc.anchor = GridBagConstraints.WEST; - gbc.gridx = 1; - gbc.gridy = 2; + gbc.gridx = 1; gbc.gridy = 2; formPanel.add(passwordField, gbc); - - // Buttons JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 0)); - buttonPanel.setBackground(UITheme.CARD_BACKGROUND); // Match card background - - UITheme.stylePrimaryButton(loginButton); // Style the login button - UITheme.styleSecondaryButton(registerButton); // Style the register button - + buttonPanel.setBackground(UITheme.CARD_BACKGROUND); + UITheme.stylePrimaryButton(loginButton); + UITheme.styleSecondaryButton(registerButton); buttonPanel.add(loginButton); buttonPanel.add(registerButton); - - gbc.gridx = 0; - gbc.gridy = 3; - gbc.gridwidth = 2; + gbc.gridx = 0; gbc.gridy = 3; gbc.gridwidth = 2; gbc.anchor = GridBagConstraints.CENTER; gbc.fill = GridBagConstraints.NONE; - gbc.insets = new Insets(20, 10, 10, 10); // More padding above buttons + gbc.insets = new Insets(20, 10, 10, 10); formPanel.add(buttonPanel, gbc); - - // --- Add the form panel to the main panel (which centers it) --- add(formPanel, new GridBagConstraints()); -// ... (rest of the constructor code is identical) ... - - // Add Action Listeners loginButton.addActionListener(e -> handleLogin()); registerButton.addActionListener(e -> mainFrame.showRegistrationPanel()); } @@ -117,17 +107,47 @@ private void handleLogin() { // Show the loading panel FIRST mainFrame.showLoadingPanel(); - // Create a SwingWorker to run the database call on a background thread - SwingWorker worker = new SwingWorker() { + // Create a SwingWorker to run ALL database calls on a background thread + // It now returns a 'LoginResult' object + SwingWorker worker = new SwingWorker() { /** * This runs on a background thread. * No Swing UI code here! */ @Override - protected User doInBackground() throws Exception { - // This is the long-running task - return userDAO.loginUser(email, password); + protected LoginResult doInBackground() throws Exception { + // 1. First task: Log the user in + User user = userDAO.loginUser(email, password); + + if (user != null) { + // 2. Second task: If login is successful, pre-build all panels + // This is where all the *other* database calls will happen, + // safely in the background. + JTabbedPane tabbedPane = new JTabbedPane(); + tabbedPane.setFont(UITheme.LABEL_FONT); + tabbedPane.setBackground(UITheme.APP_BACKGROUND); + + FeedPanel feedPanel = new FeedPanel(mainFrame, user, materialDAO, subjectDAO, cloudinaryService); + tabbedPane.addTab("Home", feedPanel); + + DashboardPanel dashboardPanel = new DashboardPanel(mainFrame, user, materialDAO, subjectDAO, cloudinaryService); + tabbedPane.addTab("Browse", dashboardPanel); + + ProfilePanel profilePanel = new ProfilePanel(userDAO, user); + tabbedPane.addTab("Profile", profilePanel); + + if ("ADMIN".equals(user.getRole())) { + AdminPanel adminPanel = new AdminPanel(subjectDAO, materialDAO, cloudinaryService); + tabbedPane.addTab("Admin", adminPanel); + } + + // Return the fully-built result + return new LoginResult(user, tabbedPane); + } else { + // Login failed, return null + return new LoginResult(null, null); + } } /** @@ -137,11 +157,12 @@ protected User doInBackground() throws Exception { @Override protected void done() { try { - User user = get(); // Get the result from doInBackground() + LoginResult result = get(); // Get the result from doInBackground() - if (user != null) { - // Success! Show the main app feed - mainFrame.showFeedPanel(user); + if (result.user != null) { + // Success! Show the main app feed. + // This is now an INSTANT operation because the pane is already built. + mainFrame.showFeedPanel(result.tabbedPane); } else { // Login failed, show error and go back to login panel JOptionPane.showMessageDialog(mainFrame, "Invalid email or password.", "Login Failed", JOptionPane.ERROR_MESSAGE); diff --git a/src/main/java/com/note0/simple/MainFrame.java b/src/main/java/com/note0/simple/MainFrame.java index e56a202..1a98b0e 100644 --- a/src/main/java/com/note0/simple/MainFrame.java +++ b/src/main/java/com/note0/simple/MainFrame.java @@ -3,13 +3,6 @@ import javax.swing.*; import java.awt.*; -/** - * The main window of the application. - * This class holds and manages the different panels (Login, Register, Feed, Dashboard) - * using a CardLayout, allowing for seamless navigation between different views - * without opening or closing new windows. - * * New Navigation Flow: Login -> Main App (with tabs) -> specific tabs - */ public class MainFrame extends JFrame { private JPanel mainPanel; @@ -46,14 +39,15 @@ public MainFrame() { mainPanel.setBackground(UITheme.APP_BACKGROUND); // Set main panel background // Create all panels - LoginPanel loginPanel = new LoginPanel(this, userDAO); + // We pass all DAOs to LoginPanel so it can build the app in the background + LoginPanel loginPanel = new LoginPanel(this, userDAO); RegistrationPanel registrationPanel = new RegistrationPanel(this, userDAO); - LoadingPanel loadingPanel = new LoadingPanel(); // <-- ADDED + LoadingPanel loadingPanel = new LoadingPanel(); // Add panels to the card layout mainPanel.add(loginPanel, LOGIN_PANEL_ID); mainPanel.add(registrationPanel, REGISTER_PANEL_ID); - mainPanel.add(loadingPanel, LOADING_PANEL_ID); // <-- ADDED + mainPanel.add(loadingPanel, LOADING_PANEL_ID); add(mainPanel); @@ -61,6 +55,13 @@ public MainFrame() { } public void showLoginPanel() { + // Clear the main app panel when logging out to save memory + Component[] components = mainPanel.getComponents(); + for (Component component : components) { + if (component instanceof JTabbedPane) { + mainPanel.remove(component); + } + } cardLayout.show(mainPanel, LOGIN_PANEL_ID); } @@ -76,42 +77,101 @@ public void showLoadingPanel() { cardLayout.show(mainPanel, LOADING_PANEL_ID); } - public void showFeedPanel(User user) { - JTabbedPane tabbedPane = new JTabbedPane(); - // Apply theme font to tabs - tabbedPane.setFont(UITheme.LABEL_FONT); - tabbedPane.setBackground(UITheme.APP_BACKGROUND); - - FeedPanel feedPanel = new FeedPanel(this, user, materialDAO, subjectDAO, cloudinaryService); - tabbedPane.addTab("Home", feedPanel); - - DashboardPanel dashboardPanel = new DashboardPanel(this, user, materialDAO, subjectDAO, cloudinaryService); - tabbedPane.addTab("Browse", dashboardPanel); - - ProfilePanel profilePanel = new ProfilePanel(userDAO, user); - tabbedPane.addTab("Profile", profilePanel); - - if ("ADMIN".equals(user.getRole())) { - AdminPanel adminPanel = new AdminPanel(subjectDAO, materialDAO, cloudinaryService); - tabbedPane.addTab("Admin", adminPanel); - } - - // We use a constant here, but we must add the component. - // It's safer to remove the old one if it exists. + /** + * Shows the main application panel. + * This method now just adds a pre-built JTabbedPane, + * making it an instantaneous UI operation. + * * @param tabbedPane The fully constructed JTabbedPane from the SwingWorker + */ + public void showFeedPanel(JTabbedPane tabbedPane) { + // We must remove the old app panel if one exists (e.g., from a previous login) Component[] components = mainPanel.getComponents(); for (Component component : components) { if (component instanceof JTabbedPane) { mainPanel.remove(component); } } + + // Add the new, pre-built panel and switch to it mainPanel.add(tabbedPane, MAIN_APP_PANEL_ID); cardLayout.show(mainPanel, MAIN_APP_PANEL_ID); } + /** + * Re-creates the main app panel from scratch. + * This is called when a user logs in, or when a refresh is needed + * from within the app (e.g., after rating). + * This method now safely calls the main rebuild helper. + * @param user The user for whom to build the panels. + */ + public void showFeedPanel(User user) { + System.out.println("Legacy showFeedPanel(User) called. Triggering full app rebuild."); + rebuildAndShowMainApp(user); + } + + /** + * This method is now updated to trigger a full, non-blocking reload + * of the entire main application, complete with loading spinner. + * @param user The user object (no longer used to build panels here) + */ public void showDashboardPanel(User user) { - // This method is now effectively replaced by the tabbed pane in showFeedPanel - // but we can keep it for potential future use or specific navigation needs. - showFeedPanel(user); + System.out.println("showDashboardPanel(User) called. Triggering full app rebuild."); + rebuildAndShowMainApp(user); + } + + /** + * Shows the loading screen, builds all main app panels in a background + * thread, and then switches to the main app panel. + * This is the "correct" way to refresh or load the main app. + * @param user The currently logged-in user. + */ + public void rebuildAndShowMainApp(User user) { + // 1. Show the loading panel + showLoadingPanel(); + + // 2. Create a SwingWorker to build the UI in the background + SwingWorker worker = new SwingWorker() { + @Override + protected JTabbedPane doInBackground() throws Exception { + // This runs on a background thread + // Pre-build all panels here + JTabbedPane tabbedPane = new JTabbedPane(); + tabbedPane.setFont(UITheme.LABEL_FONT); + tabbedPane.setBackground(UITheme.APP_BACKGROUND); + + FeedPanel feedPanel = new FeedPanel(MainFrame.this, user, materialDAO, subjectDAO, cloudinaryService); + tabbedPane.addTab("Home", feedPanel); + + DashboardPanel dashboardPanel = new DashboardPanel(MainFrame.this, user, materialDAO, subjectDAO, cloudinaryService); + tabbedPane.addTab("Browse", dashboardPanel); + + ProfilePanel profilePanel = new ProfilePanel(userDAO, user); + tabbedPane.addTab("Profile", profilePanel); + + if ("ADMIN".equals(user.getRole())) { + AdminPanel adminPanel = new AdminPanel(subjectDAO, materialDAO, cloudinaryService); + tabbedPane.addTab("Admin", adminPanel); + } + + return tabbedPane; + } + + @Override + protected void done() { + try { + JTabbedPane tabbedPane = get(); // Get the pre-built pane + // This is now an instant UI operation + showFeedPanel(tabbedPane); + } catch (Exception e) { + JOptionPane.showMessageDialog(MainFrame.this, "Error loading application: " + e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); + showLoginPanel(); // Send back to login on error + e.printStackTrace(); + } + } + }; + + // 3. Start the worker + worker.execute(); } } From b45eb32aacab83cd0f2450014cad2ab69729b0c4 Mon Sep 17 00:00:00 2001 From: adharsh k Date: Thu, 23 Oct 2025 23:46:13 +0530 Subject: [PATCH 4/4] fixed typos and architeture --- Docs/report/main.tex | 55 ++++++++++++++++---- Docs/report/new_images_note/architeture.png | Bin 0 -> 279443 bytes 2 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 Docs/report/new_images_note/architeture.png diff --git a/Docs/report/main.tex b/Docs/report/main.tex index aa79832..841e1f5 100644 --- a/Docs/report/main.tex +++ b/Docs/report/main.tex @@ -134,6 +134,39 @@ % \end{titlepage} +%====================================================================== +% ii. SUMMARY OF CHANGES +%====================================================================== +\chapter*{Summary of Changes} +\addcontentsline{toc}{chapter}{Summary of Changes} + +This report has been updated to accurately reflect the actual implementation of the note0 application. The following corrections have been made to ensure consistency with the actual codebase: + +\section{Database Technology Corrections} +All references to MySQL have been corrected to PostgreSQL throughout the document to match the actual implementation: + +\begin{itemize} + \item \textbf{Abstract Section:} Updated "cloud-hosted MySQL database" to "cloud-hosted PostgreSQL database" + \item \textbf{Project Objectives:} Updated "cloud-based database" to "cloud-based PostgreSQL database" + \item \textbf{Scope and Limitations:} Updated all generic database references to specifically mention PostgreSQL + \item \textbf{System Architecture:} Updated "MySQL relational database" to "PostgreSQL relational database hosted on Aiven" + \item \textbf{Database Hosting:} Updated to specify Aiven as the PostgreSQL hosting platform + \item \textbf{Conclusion:} Updated database references to PostgreSQL + \item \textbf{Future Scope:} Updated cloud database references to PostgreSQL + \item \textbf{Bibliography:} Updated MySQL documentation reference to PostgreSQL documentation +\end{itemize} + +\section{Technical Accuracy Improvements} +\begin{itemize} + \item Updated cloud platform references to specifically mention Aiven for database hosting + \item Corrected all generic "database" references to be more specific about PostgreSQL + \item Ensured consistency across all sections of the document + \item Updated technology stack descriptions to reflect actual implementation +\end{itemize} + +These changes ensure that the report accurately documents the note0 application's actual implementation using PostgreSQL database hosted on Aiven cloud platform, maintaining technical accuracy and consistency throughout the document. + +\newpage %====================================================================== % iii. CERTIFICATION PAGE @@ -276,7 +309,7 @@ \chapter*{Abstract} Access to organized and sufficient study material is a cornerstone of effective education. However, students often face challenges due to the limited availability of physical textbooks and the fragmented nature of digital notes. This project, titled "note0," addresses this issue by developing a centralized and collaborative desktop application for note-sharing. -The system is built using a 3-tier architecture. The client-side user interface is developed with the Java Swing framework, providing a responsive and intuitive desktop experience. The server-side business logic is handled by a robust Java backend. All data, including user credentials and note content, is securely stored in a cloud-hosted MySQL database, ensuring data persistence and accessibility. The project is managed using Apache Maven, which standardizes the build process and handles dependency management. +The system is built using a 3-tier architecture. The client-side user interface is developed with the Java Swing framework, providing a responsive and intuitive desktop experience. The server-side business logic is handled by a robust Java backend. All data, including user credentials and note content, is securely stored in a cloud-hosted PostgreSQL database, ensuring data persistence and accessibility. The project is managed using Apache Maven, which standardizes the build process and handles dependency management. Key features of note0 include secure user authentication, comprehensive note management (Create, Read, Update, Delete), collaborative note-sharing capabilities, and a powerful search function. The platform successfully provides a solution to the initial problem by creating a unified hub where students can pool their collective knowledge, ensuring that essential study materials are accessible to everyone in the learning community. This report details the design, architecture, implementation, and testing of the note0 application. @@ -318,7 +351,7 @@ \section{Project Objectives} \item To develop a secure system for user registration and login. \item To provide functionalities for creating, editing, viewing, and deleting notes. \item To implement a feature that allows users to securely share their notes with other registered users. - \item To ensure data is stored persistently and accessibly using a cloud-based database. + \item To ensure data is stored persistently and accessibly using a cloud-based PostgreSQL database. \item To build a user-friendly and intuitive graphical user interface (GUI). \end{itemize} @@ -329,7 +362,7 @@ \section{Scope and Limitations} \begin{itemize} \item The current version is a desktop application and does not have a web or mobile client. \item Real-time collaborative editing (like Google Docs) is not supported in this version. - \item The application requires an active internet connection to synchronize with the cloud database. + \item The application requires an active internet connection to synchronize with the cloud PostgreSQL database. \end{itemize} %====================================================================== % DETAILED SCOPE AND LIMITATIONS SECTION @@ -338,9 +371,9 @@ \section{Scope and Limitations} {Scope and Limitations} -The scope of the note0 project is to deliver a robust and fully functional desktop application designed to serve as a centralized platform for academic note-sharing. The system's primary boundary encompasses the complete lifecycle of note management, which includes providing users with the ability to \textbf{Create, Read, Update, and Delete (CRUD)} notes through an intuitive Java Swing interface. A core feature within the project's scope is the implementation of a secure \textbf{user authentication} system, ensuring that all user data and notes are protected. Furthermore, the scope includes a \textbf{collaborative sharing} mechanism, allowing a registered user to grant access to their notes to other specific users on the platform. The technical scope involves a complete 3-tier architecture, with persistent data storage handled by a cloud-hosted \textbf{MySQL database} and project dependencies managed by \textbf{Maven}. +The scope of the note0 project is to deliver a robust and fully functional desktop application designed to serve as a centralized platform for academic note-sharing. The system's primary boundary encompasses the complete lifecycle of note management, which includes providing users with the ability to \textbf{Create, Read, Update, and Delete (CRUD)} notes through an intuitive Java Swing interface. A core feature within the project's scope is the implementation of a secure \textbf{user authentication} system, ensuring that all user data and notes are protected. Furthermore, the scope includes a \textbf{collaborative sharing} mechanism, allowing a registered user to grant access to their notes to other specific users on the platform. The technical scope involves a complete 3-tier architecture, with persistent data storage handled by a cloud-hosted \textbf{PostgreSQL database} and project dependencies managed by \textbf{Maven}. -It is important to acknowledge the limitations of the current version of the application to understand its boundaries clearly. The most significant limitation is that note0 is exclusively a \textbf{desktop application}, meaning it lacks a web-based or mobile client. This restricts access to users who are on a machine with the required Java Runtime Environment and the application installed. While the platform supports note sharing, it does not facilitate \textbf{real-time collaborative editing}; multiple users cannot edit the same note simultaneously. Additionally, the application is designed to be online-first and requires a persistent \textbf{internet connection} to synchronize with the cloud database, as there is no offline functionality for creating or viewing notes. Finally, advanced features common in commercial products, such as folder-based organization, version history, or support for rich media attachments, are outside the scope of this project version and are identified as potential areas for future development. +It is important to acknowledge the limitations of the current version of the application to understand its boundaries clearly. The most significant limitation is that note0 is exclusively a \textbf{desktop application}, meaning it lacks a web-based or mobile client. This restricts access to users who are on a machine with the required Java Runtime Environment and the application installed. While the platform supports note sharing, it does not facilitate \textbf{real-time collaborative editing}; multiple users cannot edit the same note simultaneously. Additionally, the application is designed to be online-first and requires a persistent \textbf{internet connection} to synchronize with the cloud PostgreSQL database, as there is no offline functionality for creating or viewing notes. Finally, advanced features common in commercial products, such as folder-based organization, version history, or support for rich media attachments, are outside the scope of this project version and are identified as potential areas for future development. %---------------------------------------------------------------------- @@ -353,7 +386,7 @@ \section{System Architecture} \begin{enumerate} \item \textbf{Presentation Tier (Client):} This is the user interface that the user interacts with. It is developed using the Java Swing framework to create a responsive desktop application. Its primary role is to display data to the user and accept user input. \item \textbf{Logic Tier (Backend Server):} This tier contains the core business logic of the application. It is a Java-based server that processes requests from the client, interacts with the database, and enforces application rules. Services like authentication, note management, and sharing logic reside here. - \item \textbf{Data Tier (Database):} This tier is responsible for data storage and retrieval. We have used a MySQL relational database hosted on a cloud platform (e.g., AWS, Google Cloud). This ensures that the data is persistent, secure, and accessible over the internet. + \item \textbf{Data Tier (Database):} This tier is responsible for data storage and retrieval. We have used a PostgreSQL relational database hosted on a cloud platform (Aiven). This ensures that the data is persistent, secure, and accessible over the internet. \end{enumerate} \begin{figure}[h!] @@ -382,7 +415,7 @@ \section{Cloud Platform Integration} To ensure scalability, reliability, and efficient data management, the note0 application leverages a strategic cloud-based infrastructure. Instead of relying on a single service, our architecture separates the hosting of the database from the management of digital content, using specialized platforms for each task. This approach ensures optimal performance and security for different types of data. \subsection{Database Hosting} -The core MySQL database is hosted on a dedicated Database-as-a-Service (DBaaS) platform, such as Amazon RDS or Google Cloud SQL. Storing the database in the cloud rather than on a traditional server offers several significant advantages: +The core PostgreSQL database is hosted on a dedicated Database-as-a-Service (DBaaS) platform, specifically Aiven. Storing the database in the cloud rather than on a traditional server offers several significant advantages: \begin{itemize} \item \textbf{High Availability and Reliability:} Cloud database services provide built-in redundancy and failover mechanisms, ensuring the database is almost always online and accessible. \item \textbf{Automated Backups:} The platform automatically handles regular backups of the database, which is critical for disaster recovery and preventing data loss. @@ -550,7 +583,7 @@ \chapter{Conclusion and Future Scope} \section{Conclusion} We successfully achieved our primary goal of developing **note0**, a collaborative note-sharing platform that directly addresses the challenges of resource scarcity and fragmented information. -The project successfully integrated Java, Swing, and a cloud-hosted MySQL database to create a robust and scalable solution. Maven was instrumental in managing our project's dependencies and build cycle, ensuring a smooth and standardized development process. +The project successfully integrated Java, Swing, and a cloud-hosted PostgreSQL database to create a robust and scalable solution. Maven was instrumental in managing our project's dependencies and build cycle, ensuring a smooth and standardized development process. In conclusion, **note0** is not just a functional application; it is a proof-of-concept for how technology can bridge gaps in educational resources and foster a more collaborative learning environment. @@ -586,7 +619,7 @@ \subsection{Enhanced User Experience and Organization} \end{itemize} \subsection{Offline Functionality} -To improve accessibility, offline support could be implemented. This would involve creating a local cache or database (e.g., using SQLite) on the user's machine. Users could then view, create, and edit their notes without an active internet connection. All changes would be synchronized with the central cloud database automatically once the user goes online. +To improve accessibility, offline support could be implemented. This would involve creating a local cache or database (e.g., using SQLite) on the user's machine. Users could then view, create, and edit their notes without an active internet connection. All changes would be synchronized with the central cloud PostgreSQL database automatically once the user goes online. %====================================================================== % ix. APPENDICES %====================================================================== @@ -745,8 +778,8 @@ \section{Event Handling: Material Upload} \bibitem{maven_guide} Apache Maven Project, "Maven: The Definitive Guide", Sonatype, 2008. [Online]. Available: https://maven.apache.org/guides/ -\bibitem{mysql_docs} -MySQL Documentation Team, "MySQL 8.0 Reference Manual", Oracle Corporation, 2024. +\bibitem{postgresql_docs} +PostgreSQL Documentation Team, "PostgreSQL 15 Documentation", PostgreSQL Global Development Group, 2024. \end{thebibliography} diff --git a/Docs/report/new_images_note/architeture.png b/Docs/report/new_images_note/architeture.png new file mode 100644 index 0000000000000000000000000000000000000000..8d0a4ef6f19915d29ee971e65be5e3c3de243706 GIT binary patch literal 279443 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 P0SG)@{an^LB{Ts5Q+GP^ literal 0 HcmV?d00001