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
RevLine 
[1]1package genius.gui.uncertainty;
2
3import java.awt.Component;
4import java.awt.Dimension;
5import java.util.Hashtable;
6
7import javax.swing.BoxLayout;
[44]8import javax.swing.JFrame;
[1]9import javax.swing.JLabel;
10import javax.swing.JPanel;
11import javax.swing.JSlider;
[30]12import javax.swing.JTextField;
13
14import java.awt.event.ActionEvent;
15import java.awt.event.ActionListener;
[42]16import java.awt.event.MouseEvent;
17import java.awt.event.MouseListener;
18
[1]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;
[30]34
35 private JPanel uncertaintyLevelPanel = new JPanel();
[1]36 private JSlider uncertaintySlider;
37 private LabelAndComponent uncertaintyComp;
[30]38 private JTextField generatedCompsField;
39
[1]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) {
[44]48 JFrame frame = new JFrame("Uncertainty Options");
[1]49 this.model = model;
[30]50 this.setPreferredSize(new Dimension(900,200));
51
[1]52 this.label = new JLabel("Set Pairwise Comparison User Model Parameters");
[30]53// this.label.setPreferredSize(new Dimension(500, 35));
[42]54 this.numberOfCompsLabel = new JLabel("(Maximum Number of Outcomes in Comparisons = " +this.model.getMaxNumberInComps() +")");
[30]55// this.numberOfCompsLabel.setPreferredSize(new Dimension(500, 35));
[1]56
57
58 this.uncertaintySlider = createUncertaintySlider();
[42]59 this.uncertaintyComp = new LabelAndComponent("Uncertainty Level / \n (No Of Outcomes In Comparisons)", uncertaintySlider);
[30]60 uncertaintyComp.getLabel().setPreferredSize(new Dimension(300, 50));
[1]61
[42]62 this.generatedCompsField = new JTextField(String.valueOf(model.getMaxNumberInComps()),8);
[30]63 uncertaintyLevelPanel.add(uncertaintyComp);
64 uncertaintyLevelPanel.add(generatedCompsField);
65 uncertaintyLevelPanel.setMaximumSize(new Dimension(800, 50));
66
67
[1]68 this.errorSlider = createErrorSlider();
69 this.errorComp = new LabelAndComponent(" Error Rate ", errorSlider);
[30]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);
[1]75 experimentalBox = new ExtendedCheckboxPanel("Experimental Setup (Agent has access to real utility function)",
76 model.getExperimentalModel());
[30]77 experimentalBox.setMaximumSize(new Dimension(500,150));
78 experimentalBox.setAlignmentX(Component.CENTER_ALIGNMENT);
79 experimentalBox.getCheckBox().setSelected(true);
80
[1]81
82 okButton = new ButtonPanel("OK", model.getConfirmationModel());
[30]83 okButton.setMaximumSize(new Dimension (150,150)) ;
84 okButton.setAlignmentX(Component.CENTER_ALIGNMENT);
85 connect();
[1]86
[30]87 setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
[1]88 add(label);
89 add(numberOfCompsLabel);
[30]90 add(uncertaintyLevelPanel);
[1]91 add(errorComp);
92 add(experimentalBox);
93 add(okButton);
[44]94
95 frame.add(this);
96 frame.setSize(900,900);
97 frame.setLocationRelativeTo(null);
98 frame.setVisible(true);
[1]99 }
100
[30]101 public void connect() {
[42]102
103
104 uncertaintySlider.addMouseListener(new MouseListener() {
105
[30]106 @Override
[42]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
[30]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());
[42]141 uncertaintySlider.setValue((int)(100*((double)model.getMaxNumberInComps()
142 - Double.parseDouble(generatedCompsField.getText()))/(double)model.getMaxNumberInComps()));
[30]143 }
144 }
145 });
146 }
[1]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);
[30]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// });
[1]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);
[30]176 slider.setMaximumSize(new Dimension(50,50));
[1]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.