Newer
Older
marking / src / ui / CriterionPanel.java
Mark on 6 Jun 2014 1 KB Initial commit.
package ui;

import model.CriterionEditor;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import model.Criterion;

/**
 *
 * @author mark
 */
public class CriterionPanel extends JPanel implements CriterionEditor {

	private final RadioGroup radioGroup;
	private final JTextArea txtComment;

	public CriterionPanel(Criterion criterion) {
		this.setLayout(new GridBagLayout());

		// label is left aligned and full width
		GridBagConstraints gbc = new GridBagConstraints();
		gbc.gridx = 0;
		gbc.gridy = 0;
		gbc.gridwidth = 2;
		gbc.weightx = 1;
		gbc.fill = GridBagConstraints.HORIZONTAL;
		gbc.insets = new Insets(0, 0, 5, 0);

		this.add(new JLabel(criterion.getDescription()), gbc);

		// radio group is left aligned, but doesn't grow
		gbc = new GridBagConstraints();
		gbc.gridx = 0;
		gbc.gridy = 1;
		radioGroup = new RadioGroup(0, 5);

		this.add(radioGroup, gbc);

		// text area is right aligned, but grows in both directions
		gbc = new GridBagConstraints();
		gbc.gridx = 1;
		gbc.gridy = 1;
		gbc.weightx = 1;
		gbc.weighty = 1;
		gbc.fill = GridBagConstraints.BOTH;

		txtComment = new JTextArea();
		this.add(new JScrollPane(txtComment), gbc);
	}

	@Override
	public String getComment() {
		return txtComment.getText().trim();
	}

	@Override
	public Double getResult() {
		Integer result = radioGroup.getSelected();
		return result != null ? new Double(result) : null;
	}

	@Override
	public boolean isComplete() {
		return getResult() != null;
	}

	@Override
	public void setComment(String comment) {
		txtComment.setText(comment);
	}

	@Override
	public void setResult(Double result) {
		radioGroup.setSelected(result.intValue());
	}

}