source: src/main/java/genius/gui/uncertainty/PairwiseComparisonPanel.java@ 31

Last change on this file since 31 was 31, checked in by dimitrios, 7 years ago

bug fix

File size: 5.3 KB
Line 
1package genius.gui.uncertainty;
2
3import java.awt.Component;
4import java.awt.Dimension;
5import java.util.Hashtable;
6
7import javax.swing.BoxLayout;
8import javax.swing.JLabel;
9import javax.swing.JPanel;
10import javax.swing.JSlider;
11import javax.swing.JTextField;
12
13import java.awt.event.ActionEvent;
14import java.awt.event.ActionListener;
15import javax.swing.event.ChangeEvent;
16import javax.swing.event.ChangeListener;
17
18import genius.gui.panels.ButtonPanel;
19import genius.gui.panels.ExtendedCheckboxPanel;
20import genius.gui.panels.LabelAndComponent;
21
22public class PairwiseComparisonPanel extends JPanel{
23
24 private static final long serialVersionUID = 7745677414933157895L;
25
26 private PairwiseComparisonModel model;
27
28 private final JLabel label;
29 private final JLabel numberOfCompsLabel;
30
31 private JPanel uncertaintyLevelPanel = new JPanel();
32 private JSlider uncertaintySlider;
33 private LabelAndComponent uncertaintyComp;
34 private JTextField generatedCompsField;
35
36 private JSlider errorSlider;
37 private LabelAndComponent errorComp;
38
39 private ExtendedCheckboxPanel experimentalBox;
40 private final ButtonPanel okButton;
41
42
43 public PairwiseComparisonPanel(PairwiseComparisonModel model) {
44
45 this.model = model;
46 this.setPreferredSize(new Dimension(900,200));
47
48 this.label = new JLabel("Set Pairwise Comparison User Model Parameters");
49// this.label.setPreferredSize(new Dimension(500, 35));
50 this.numberOfCompsLabel = new JLabel("(Maximum Number of Comparisons = " +this.model.getMaxNumberofComps() +")");
51// this.numberOfCompsLabel.setPreferredSize(new Dimension(500, 35));
52
53
54 this.uncertaintySlider = createUncertaintySlider();
55 this.uncertaintyComp = new LabelAndComponent("Uncertainty Level / \n (No Of Comparisons)", uncertaintySlider);
56 uncertaintyComp.getLabel().setPreferredSize(new Dimension(300, 50));
57
58 this.generatedCompsField = new JTextField(String.valueOf(model.getMaxNumberofComps()),8);
59 uncertaintyLevelPanel.add(uncertaintyComp);
60 uncertaintyLevelPanel.add(generatedCompsField);
61 uncertaintyLevelPanel.setMaximumSize(new Dimension(800, 50));
62
63
64 this.errorSlider = createErrorSlider();
65 this.errorComp = new LabelAndComponent(" Error Rate ", errorSlider);
66 this.errorComp.setMaximumSize(new Dimension(500, 30));
67
68 label.setAlignmentX(Component.CENTER_ALIGNMENT);
69 numberOfCompsLabel.setAlignmentX(Component.CENTER_ALIGNMENT);
70 uncertaintyLevelPanel.setAlignmentX(Component.CENTER_ALIGNMENT);
71 experimentalBox = new ExtendedCheckboxPanel("Experimental Setup (Agent has access to real utility function)",
72 model.getExperimentalModel());
73 experimentalBox.setMaximumSize(new Dimension(500,150));
74 experimentalBox.setAlignmentX(Component.CENTER_ALIGNMENT);
75 experimentalBox.getCheckBox().setSelected(true);
76
77
78 okButton = new ButtonPanel("OK", model.getConfirmationModel());
79 okButton.setMaximumSize(new Dimension (150,150)) ;
80 okButton.setAlignmentX(Component.CENTER_ALIGNMENT);
81 connect();
82
83 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
84 add(label);
85 add(numberOfCompsLabel);
86 add(uncertaintyLevelPanel);
87 add(errorComp);
88 add(experimentalBox);
89 add(okButton);
90 }
91
92 public void connect() {
93 uncertaintySlider.addChangeListener(new ChangeListener() {
94 @Override
95 public void stateChanged(ChangeEvent e) {
96 System.out.println(e.getSource());
97 if (e.getSource() != generatedCompsField) {
98 generatedCompsField.setText(String.valueOf((int)((1-(double)uncertaintySlider.getValue()/100)
99 * model.getMaxNumberofComps())));
100 model.getUncertaintyModel().setText(generatedCompsField.getText());
101 }
102 }
103 });
104
105 generatedCompsField.addActionListener(new ActionListener() {
106 @Override
107 public void actionPerformed(ActionEvent e) {
108 if (e.getSource() != uncertaintySlider) {
109 model.getUncertaintyModel().setText(generatedCompsField.getText());
110 uncertaintySlider.setValue((int)(100*((double)model.getMaxNumberofComps()
111 - Double.parseDouble(generatedCompsField.getText()))/(double)model.getMaxNumberofComps()));
112 }
113 }
114 });
115 }
116
117 private JSlider createUncertaintySlider() {
118 JSlider slider = new JSlider(JSlider.HORIZONTAL,0,100,0);
119 slider.setMajorTickSpacing( 1 );
120 slider.setMinorTickSpacing( 2 );
121 Hashtable<Integer, JLabel> sliderLabelsTable = new Hashtable<Integer, JLabel>();
122 sliderLabelsTable.put( 0 , new JLabel("0%") );
123 sliderLabelsTable.put( 100 , new JLabel("100%") );
124 slider.setLabelTable(sliderLabelsTable);
125 slider.setPaintLabels(true);
126// slider.addChangeListener(new ChangeListener() {
127// @Override
128// public void stateChanged(ChangeEvent e) {
129// model.getUncertaintyModel().setText(String.valueOf((double) slider.getValue() / 100));
130//
131// }
132// });
133 return slider;
134 }
135
136 private JSlider createErrorSlider() {
137 JSlider slider = new JSlider(JSlider.HORIZONTAL,0,100,0);
138 slider.setMajorTickSpacing( 1 );
139 slider.setMinorTickSpacing( 2 );
140 Hashtable<Integer, JLabel> sliderLabelsTable = new Hashtable<Integer, JLabel>();
141 sliderLabelsTable.put( 0 , new JLabel("0%") );
142 sliderLabelsTable.put( 100 , new JLabel("100%") );
143 slider.setLabelTable(sliderLabelsTable);
144 slider.setPaintLabels(true);
145 slider.setMaximumSize(new Dimension(50,50));
146 slider.addChangeListener(new ChangeListener() {
147 @Override
148 public void stateChanged(ChangeEvent e) {
149 model.getErrorModel().setText(String.valueOf((double) slider.getValue() / 100));
150 }
151 });
152 return slider;
153 }
154
155
156}
Note: See TracBrowser for help on using the repository browser.