package genius.gui.uncertainty; import java.awt.Component; import java.awt.Dimension; import java.util.Hashtable; import javax.swing.BoxLayout; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSlider; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import genius.gui.panels.ButtonPanel; import genius.gui.panels.ExtendedCheckboxPanel; import genius.gui.panels.LabelAndComponent; public class PairwiseComparisonPanel extends JPanel{ private static final long serialVersionUID = 7745677414933157895L; private PairwiseComparisonModel model; private final JLabel label; private final JLabel numberOfCompsLabel; private JSlider uncertaintySlider; private LabelAndComponent uncertaintyComp; private JSlider errorSlider; private LabelAndComponent errorComp; private ExtendedCheckboxPanel experimentalBox; private final ButtonPanel okButton; public PairwiseComparisonPanel(PairwiseComparisonModel model) { this.model = model; this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); this.label = new JLabel("Set Pairwise Comparison User Model Parameters"); this.label.setPreferredSize(new Dimension(500, 35)); this.numberOfCompsLabel = new JLabel("(Maximum Number of Comparisons = " +this.model.calculateMaxNumberOfComparisons() +")"); this.numberOfCompsLabel.setPreferredSize(new Dimension(500, 35)); // this.pairwiseComparisonsTextPanel.setAlignmentX(CENTER_ALIGNMENT); this.uncertaintySlider = createUncertaintySlider(); this.uncertaintyComp = new LabelAndComponent("Uncertainty Level ", uncertaintySlider); this.errorSlider = createErrorSlider(); this.errorComp = new LabelAndComponent(" Error Rate ", errorSlider); numberOfCompsLabel.setAlignmentX(Component.LEFT_ALIGNMENT); label.setAlignmentX(Component.LEFT_ALIGNMENT); uncertaintyComp.setAlignmentX(Component.LEFT_ALIGNMENT); errorComp.setAlignmentX(Component.LEFT_ALIGNMENT); experimentalBox = new ExtendedCheckboxPanel("Experimental Setup (Agent has access to real utility function)", model.getExperimentalModel()); experimentalBox.setAlignmentX(LEFT_ALIGNMENT); okButton = new ButtonPanel("OK", model.getConfirmationModel()); okButton.setMaximumSize(new Dimension (50,50)) ; okButton.setAlignmentX(CENTER_ALIGNMENT); add(label); add(numberOfCompsLabel); add(uncertaintyComp); add(errorComp); add(experimentalBox); add(okButton); } private JSlider createUncertaintySlider() { JSlider slider = new JSlider(JSlider.HORIZONTAL,0,100,0); slider.setMajorTickSpacing( 1 ); slider.setMinorTickSpacing( 2 ); Hashtable sliderLabelsTable = new Hashtable(); sliderLabelsTable.put( 0 , new JLabel("0%") ); sliderLabelsTable.put( 100 , new JLabel("100%") ); slider.setLabelTable(sliderLabelsTable); slider.setPaintLabels(true); slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { model.getUncertaintyModel().setText(String.valueOf((double) slider.getValue() / 100)); } }); return slider; } private JSlider createErrorSlider() { JSlider slider = new JSlider(JSlider.HORIZONTAL,0,100,0); slider.setMajorTickSpacing( 1 ); slider.setMinorTickSpacing( 2 ); Hashtable sliderLabelsTable = new Hashtable(); sliderLabelsTable.put( 0 , new JLabel("0%") ); sliderLabelsTable.put( 100 , new JLabel("100%") ); slider.setLabelTable(sliderLabelsTable); slider.setPaintLabels(true); slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { model.getErrorModel().setText(String.valueOf((double) slider.getValue() / 100)); } }); return slider; } }