Advertisement
Gaudenz

SessionRecords.java

Mar 14th, 2025
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.38 KB | None | 0 0
  1. package lyfjshs.gomis.view.sessions;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.Font;
  6. import java.sql.Connection;
  7. import java.sql.SQLException;
  8. import java.util.List;
  9.  
  10. import javax.swing.JButton;
  11. import javax.swing.JLabel;
  12. import javax.swing.JOptionPane;
  13. import javax.swing.JPanel;
  14. import javax.swing.JScrollPane;
  15. import javax.swing.JTable;
  16. import javax.swing.ListSelectionModel;
  17. import javax.swing.table.DefaultTableModel;
  18.  
  19. import com.formdev.flatlaf.extras.FlatAnimatedLafChange;
  20. import com.formdev.flatlaf.extras.FlatSVGIcon;
  21.  
  22. import lyfjshs.gomis.Database.DAO.SessionsDAO;
  23. import lyfjshs.gomis.Database.entity.GuidanceCounselor;
  24. import lyfjshs.gomis.Database.entity.Participants;
  25. import lyfjshs.gomis.Database.entity.Sessions;
  26. import lyfjshs.gomis.components.FormManager.Form;
  27. import lyfjshs.gomis.components.table.TableActionManager;
  28. import net.miginfocom.swing.MigLayout;
  29. import raven.extras.SlidePane;
  30. import raven.extras.SlidePaneTransition;
  31.  
  32. public class SessionRecords extends Form {
  33.  
  34.     private static final long serialVersionUID = 1L;
  35.     private JTable sessionTable;
  36.     private SessionsDAO sessionsDAO;
  37.     private final Connection connection;
  38.     private final String[] columnNames = { "#", "Session ID", "Session Type", "Participants", "Date & Time", "Status", "Actions" };
  39.     private SlidePane slidePane;
  40.     private JButton backBtn;
  41.     private JPanel mainPanel;
  42.     private JPanel sessionFullDataPanel; // Panel to show session details
  43.     private JButton addSessionBtn;
  44.  
  45.     public SessionRecords(Connection conn) {
  46.         this.connection = conn;
  47.         sessionsDAO = new SessionsDAO(conn);
  48.         initializeComponents();
  49.         setupLayout();
  50.         loadSessionData();
  51.     }
  52.  
  53.     private void initializeComponents() {
  54.         // Initialize table
  55.         DefaultTableModel model = new DefaultTableModel(null, columnNames);
  56.         sessionTable = new JTable(model);
  57.         setupTable();
  58.  
  59.         // Initialize SlidePane
  60.         slidePane = new SlidePane();
  61.         slidePane.setOpaque(true);
  62.  
  63.         // Create main panel that will contain the table
  64.         mainPanel = createSessionTablePanel();
  65.  
  66.         // Initialize back button
  67.         backBtn = new JButton("Back");
  68.         backBtn.setVisible(false);
  69.         backBtn.addActionListener(e -> {
  70.             FlatAnimatedLafChange.showSnapshot();
  71.             slidePane.addSlide(mainPanel, SlidePaneTransition.Type.BACK);
  72.             backBtn.setVisible(false);
  73.             FlatAnimatedLafChange.hideSnapshotWithAnimation();
  74.         });
  75.  
  76.         // Initialize add session button
  77.         addSessionBtn = new JButton("Add Session");
  78.         addSessionBtn.addActionListener(e -> openAddSessionForm());
  79.  
  80.         // Add the main panel as the first slide
  81.         slidePane.addSlide(mainPanel, SlidePaneTransition.Type.FORWARD);
  82.     }
  83.  
  84.     private void setupTable() {
  85.         sessionTable.setShowVerticalLines(false);
  86.         sessionTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  87.         sessionTable.setRowHeight(30);
  88.         sessionTable.setFont(new Font("Tahoma", Font.PLAIN, 14));
  89.         sessionTable.setShowGrid(false);
  90.  
  91.         // Set column widths
  92.         sessionTable.getColumnModel().getColumn(0).setPreferredWidth(50);  // #
  93.         sessionTable.getColumnModel().getColumn(1).setPreferredWidth(100); // Session ID
  94.         sessionTable.getColumnModel().getColumn(2).setPreferredWidth(150); // Session Type
  95.         sessionTable.getColumnModel().getColumn(3).setPreferredWidth(100); // Participants
  96.         sessionTable.getColumnModel().getColumn(4).setPreferredWidth(150); // Date & Time
  97.         sessionTable.getColumnModel().getColumn(5).setPreferredWidth(100); // Status
  98.         sessionTable.getColumnModel().getColumn(6).setPreferredWidth(150); // Actions
  99.         sessionTable.getColumnModel().getColumn(6).setResizable(false);
  100.  
  101.         // Setup table actions
  102.         setupTableActions();
  103.     }
  104.  
  105.     private void setupTableActions() {
  106.         TableActionManager actionManager = new TableActionManager();
  107.         actionManager.addAction("View", (table, row) -> {
  108.             int sessionId = (int) table.getValueAt(row, 1);
  109.             FlatAnimatedLafChange.showSnapshot();
  110.  
  111.             try {
  112.                 Sessions session = sessionsDAO.getSessionById(sessionId);
  113.                 showSessionFullData(session);
  114.                 backBtn.setVisible(true);
  115.             } catch (SQLException e) {
  116.                 JOptionPane.showMessageDialog(this, "Error retrieving session data: " + e.getMessage(),
  117.                     "Database Error", JOptionPane.ERROR_MESSAGE);
  118.                 e.printStackTrace();
  119.             }
  120.  
  121.             FlatAnimatedLafChange.hideSnapshotWithAnimation();
  122.         }, new Color(0x518b6f), new FlatSVGIcon("icons/view.svg", 0.5f));
  123.  
  124.         actionManager.applyTo(sessionTable, 6);
  125.     }
  126.  
  127.     private void showSessionFullData(Sessions session) {
  128.         try {
  129.             GuidanceCounselor counselor = sessionsDAO.getCounselorById(session.getGuidanceCounselorId());
  130.             List<Participants> participants = sessionsDAO.getParticipantsBySessionId(session.getSessionId());
  131.             sessionFullDataPanel = new SessionFullData(session, counselor, participants);
  132.             slidePane.addSlide(sessionFullDataPanel, SlidePaneTransition.Type.FORWARD);
  133.         } catch (SQLException e) {
  134.             JOptionPane.showMessageDialog(this, "Error retrieving session details: " + e.getMessage(),
  135.                 "Database Error", JOptionPane.ERROR_MESSAGE);
  136.             e.printStackTrace();
  137.         }
  138.     }
  139.  
  140.     private void setupLayout() {
  141.         setLayout(new BorderLayout());
  142.  
  143.         // Create header panel
  144.         JPanel headerPanel = new JPanel(new MigLayout("", "[][grow][][]", "[grow]"));
  145.         JLabel headerLabel = new JLabel("SESSION RECORDS");
  146.         headerLabel.setFont(new Font("Tahoma", Font.BOLD, 16));
  147.  
  148.         headerPanel.add(headerLabel, "flowx,cell 1 0,alignx center,growy");
  149.         headerPanel.add(addSessionBtn, "cell 2 0");
  150.         headerPanel.add(backBtn, "cell 3 0");
  151.  
  152.         // Add components to main frame
  153.         add(headerPanel, BorderLayout.NORTH);
  154.         add(slidePane, BorderLayout.CENTER);
  155.     }
  156.  
  157.     private JPanel createSessionTablePanel() {
  158.         JScrollPane scrollPane = new JScrollPane(sessionTable);
  159.         JPanel panel = new JPanel(new MigLayout("", "[grow]", "[grow]"));
  160.         panel.add(scrollPane, "cell 0 0,grow");
  161.         return panel;
  162.     }
  163.  
  164.     private void openAddSessionForm() {
  165.         SessionsForm sessionsForm = new SessionsForm(connection);
  166.         sessionsForm.setSaveCallback(this::loadSessionData);
  167.         sessionsForm.setVisible(true);
  168.     }
  169.  
  170.  
  171.     private void loadSessionData() {
  172.         try {
  173.             List<Sessions> sessions = sessionsDAO.getSessionDataWithParticipantCount();
  174.             DefaultTableModel model = (DefaultTableModel) sessionTable.getModel();
  175.             model.setRowCount(0);
  176.  
  177.             int rowNum = 1;
  178.             for (Sessions session : sessions) {
  179.                 model.addRow(new Object[] {
  180.                     rowNum++,
  181.                     session.getSessionId(),
  182.                     session.getConsultationType(),
  183.                     session.getParticipantCount(),
  184.                     session.getAppointmentDateTime(),
  185.                     session.getSessionStatus()
  186.                 });
  187.             }
  188.         } catch (SQLException e) {
  189.             JOptionPane.showMessageDialog(this, "Error loading session data: " + e.getMessage(),
  190.                 "Database Error", JOptionPane.ERROR_MESSAGE);
  191.             e.printStackTrace();
  192.         }
  193.     }
  194.  
  195.     // public static void main(String[] args) {
  196.     //     SwingUtilities.invokeLater(() -> {
  197.     //         try {
  198.     //             JFrame frame = new JFrame("Session Records");
  199.     //             frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  200.     //             frame.getContentPane().add(new SessionRecords(DBConnection.getConnection()));
  201.     //             frame.setSize(800, 600);
  202.     //             frame.setLocationRelativeTo(null);
  203.     //             frame.setVisible(true);
  204.     //         } catch (SQLException e) {
  205.     //             e.printStackTrace();
  206.     //             JOptionPane.showMessageDialog(null, "Error connecting to database: " + e.getMessage(),
  207.     //                 "Database Error", JOptionPane.ERROR_MESSAGE);
  208.     //         }
  209.     //     });
  210.     // }
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement