Newer
Older
marking / src / ui / CategoryPanel.java
package ui;

import dao.ResultDAO;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import model.Criterion;

public class CategoryPanel extends JPanel {

	public CategoryPanel(String category, List<Criterion> criteria) {
		this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

		JLabel categoryHeading = new JLabel(category);
		Font headingFont = categoryHeading.getFont();
		headingFont = headingFont.deriveFont(Font.BOLD, (float) headingFont.getSize() + 3);
		categoryHeading.setFont(headingFont);

		// wrapping the heading label in a panel to force the box layout to make it full width
		JPanel headerPnl = new JPanel(new BorderLayout());
		headerPnl.add(categoryHeading, BorderLayout.CENTER);

		this.add(headerPnl);

		// add a some vertical padding
		this.add(Box.createVerticalStrut(5));

		ResultDAO dao = new ResultDAO();

		for (Criterion criterion : criteria) {
			CriterionPanel criterionEditor = new CriterionPanel(criterion);
			this.add(criterionEditor);
			this.add(Box.createVerticalStrut(15));

			dao.addEditor(criterion, criterionEditor);
		}

		// add a horizontal line for seperating categories
		JSeparator sep = new JSeparator();
		sep.setBorder(BorderFactory.createLineBorder(Color.BLACK));
		this.add(sep);

		this.add(Box.createHorizontalStrut(5));
	}

}