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()); } }