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

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

Changes to uncertainty framework, including GUI. Removal of Perturbation and Flattening Strategy models. ONLY Pairwise Comparison / Bid Ranking models are supported from now on.

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