package ui; import dao.ResultDAO; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import model.Criterion; /** * * @author mark */ public class MarkingFrame extends JDialog { private String student; private final JPanel schedulePane; private final ResultDAO result = new ResultDAO(); public MarkingFrame(Window parent) { super(parent); setModal(true); // add scroll pane to the root JScrollPane scrollPane = new JScrollPane(); JPanel contentPane = new JPanel(); scrollPane.setViewportView(contentPane); scrollPane.getVerticalScrollBar().setUnitIncrement(16); getContentPane().add(scrollPane, java.awt.BorderLayout.CENTER); // add other panes schedulePane = new JPanel(); JPanel buttonPane = new JPanel(); contentPane.setLayout(new BorderLayout()); contentPane.add(schedulePane, BorderLayout.CENTER); contentPane.add(buttonPane, BorderLayout.SOUTH); schedulePane.setLayout(new BoxLayout(schedulePane, BoxLayout.Y_AXIS)); // add buttons JButton btnSave = new JButton("Save"); btnSave.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { save(); } }); // add buttons JButton btnCancel = new JButton("Cancel"); btnCancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { dispose(); } }); JButton btnMin = new JButton("Min"); btnMin.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { min(); } }); JButton btnMax = new JButton("Max"); btnMax.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent ae) { max(); } }); buttonPane.add(btnMin); buttonPane.add(btnMax); buttonPane.add(btnCancel); buttonPane.add(btnSave); } public void addCategory(String category, List<Criterion> criteria) { schedulePane.add(new CategoryPanel(category, criteria)); } private void save() { if (!result.isComplete()) { int res = JOptionPane.showConfirmDialog(MarkingFrame.this, "You haven't entered values for all criteria. Are you sure you want save?", "Incomplete", JOptionPane.YES_NO_OPTION); if (JOptionPane.YES_OPTION == res) { result.save(student); dispose(); } } else { result.save(student); dispose(); } } private void min() { Component[] components = schedulePane.getComponents(); for (Component component : components) { if(component instanceof CategoryPanel) { CategoryPanel cp = (CategoryPanel) component; Component[] categories = cp.getComponents(); for (Component criterion : categories) { if(criterion instanceof CriterionPanel) { CriterionPanel c = (CriterionPanel) criterion; c.setZero(); } } } } } private void max() { Component[] components = schedulePane.getComponents(); for (Component component : components) { if(component instanceof CategoryPanel) { CategoryPanel cp = (CategoryPanel) component; Component[] categories = cp.getComponents(); for (Component criterion : categories) { if(criterion instanceof CriterionPanel) { CriterionPanel c = (CriterionPanel) criterion; c.setMax(); } } } } } public void load(String student) { this.student = student; this.setTitle(student); result.load(student); } public void display() { this.setPreferredSize(new Dimension(600, 980)); this.pack(); this.setVisible(true); } }