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

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

Bug Fix

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