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

Last change on this file since 65 was 65, checked in by Tim Baarslag, 7 years ago

GUI tweaks

File size: 5.9 KB
Line 
1package genius.gui.uncertainty;
2
3import java.util.Hashtable;
4
5import java.awt.Component;
6import java.awt.Dimension;
7import java.awt.event.ActionEvent;
8import java.awt.event.ActionListener;
9import java.awt.event.MouseEvent;
10import java.awt.event.MouseListener;
11
12import javax.swing.BoxLayout;
13import javax.swing.JFrame;
14import javax.swing.JLabel;
15import javax.swing.JPanel;
16import javax.swing.JSlider;
17import javax.swing.JTextField;
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 JFrame frame = new JFrame("Uncertainty options");
48 this.model = model;
49 this.setPreferredSize(new Dimension(900,200));
50
51 this.label = new JLabel("Set user model parameters");
52// this.label.setPreferredSize(new Dimension(500, 35));
53 this.numberOfCompsLabel = new JLabel("(Maximum number of rankings = " +this.model.getMaxNumberInComps() +")");
54// this.numberOfCompsLabel.setPreferredSize(new Dimension(500, 35));
55
56
57 this.uncertaintySlider = createUncertaintySlider();
58 this.uncertaintyComp = new LabelAndComponent("Amount of rankings", 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("Grant agent access to real utility function (experimental setup)",
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 (100,30)) ;
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 frame.add(this);
95 frame.setSize(600,600);
96 frame.setLocationRelativeTo(null);
97 frame.setVisible(true);
98 }
99
100 public void connect() {
101
102
103 uncertaintySlider.addMouseListener(new MouseListener() {
104
105 @Override
106 public void mouseClicked(MouseEvent e) {
107
108 }
109
110 @Override
111 public void mousePressed(MouseEvent e) {
112
113 }
114
115 @Override
116 public void mouseReleased(MouseEvent e) {
117 generatedCompsField.setText(String.valueOf((int)(((double)uncertaintySlider.getValue()/100)
118 * model.getMaxNumberInComps())));
119 model.getUncertaintyModel().setText(generatedCompsField.getText());
120 System.out.println(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.