Newer
Older
marking / src / ui / MarkingFrame.java
Mark on 26 Aug 2014 3 KB A bunch of improvements.
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);
	}

}