source: src/main/java/genius/gui/dialogs/EditIssueDialog.java@ 126

Last change on this file since 126 was 126, checked in by Aron Hammond, 6 years ago

Added function to calculate opposition to MultiLateralAnalysis.java

Moved code to add RLBOA listeners to RLBOAUtils is misc package

Added input for strategyParameters to SessionPanel (gui)

!! close SessionInfo after tournament; this caused /tmp/ to fill up with GeniusData files

Our own package:

  • Added opponents and strategies that are mentioned in the report
  • Change class hierarchy, agents can now extend from RLBOAagentBilateral to inherit RL functionality.
  • States extend from AbstractState
File size: 6.3 KB
Line 
1package genius.gui.dialogs;
2
3import java.awt.CardLayout;
4import java.awt.event.ActionEvent;
5import java.util.List;
6
7import javax.swing.JOptionPane;
8
9import genius.core.issue.Issue;
10import genius.core.issue.IssueDiscrete;
11import genius.core.issue.IssueInteger;
12import genius.core.issue.IssueReal;
13import genius.core.issue.ValueDiscrete;
14import genius.core.utility.AdditiveUtilitySpace;
15import genius.core.utility.EvaluatorDiscrete;
16import genius.core.utility.EvaluatorInteger;
17import genius.core.utility.EvaluatorReal;
18import genius.gui.tree.NegotiatorTreeTableModel;
19import genius.gui.tree.DomainAndProfileEditorPanel;
20
21/**
22 *
23 * @author Richard Noorlandt
24 *
25 * This launches a editissue dialog window. Wouter: this is ugly. The
26 * EditIssueDialog also handles editing of evaluators. it gets access to
27 * the util space via the treeFrame, the parent of this dialog.
28 */
29public class EditIssueDialog extends NewIssueDialog {
30
31 private static final long serialVersionUID = 5730169200768833303L;
32 private Issue issue;
33
34 // Constructors
35 public EditIssueDialog(DomainAndProfileEditorPanel owner, Issue issue) {
36 this(owner, false, issue);
37 }
38
39 public EditIssueDialog(DomainAndProfileEditorPanel owner, boolean modal, Issue issue) {
40 this(owner, modal, "Edit Issue", issue);
41 this.issue = issue;
42 }
43
44 public EditIssueDialog(DomainAndProfileEditorPanel owner, boolean modal, String name, Issue issue) {
45 super(owner, modal, name);
46 this.issue = issue;
47 setPanelContents(issue);
48 }
49
50 /**
51 * Load the appropriate contents into the right panel.
52 *
53 * @param issue
54 */
55 private void setPanelContents(Issue issue) {
56 AdditiveUtilitySpace utilSpace = treeFrame.getNegotiatorTreeTableModel().getUtilitySpace();
57
58 nameField.setText(issue.getName());
59 numberField.setText("" + issue.getNumber());
60
61 if (!treeFrame.isDomain() || !treeFrame.hasNoProfiles()) {
62 nameField.setEnabled(false);
63 }
64
65 if (issue instanceof IssueDiscrete) {
66 this.issueType.setSelectedItem(DISCRETE);
67 this.issueType.setEnabled(false);
68 ((CardLayout) issuePropertyCards.getLayout()).show(issuePropertyCards, DISCRETE);
69 List<ValueDiscrete> values = ((IssueDiscrete) issue).getValues();
70
71 String valueString = "";
72 String descString = "";
73 for (ValueDiscrete val : values) {
74 valueString = valueString + val.getValue() + "\n";
75 String desc = ((IssueDiscrete) issue).getDesc(val);
76 if (desc != null)
77 descString = descString + desc;
78 descString = descString + "\n";
79 }
80 discreteTextArea.setText(valueString);
81 if (utilSpace != null) {
82 EvaluatorDiscrete eval = (EvaluatorDiscrete) utilSpace.getEvaluator(issue.getNumber());
83 if (eval != null) {
84 // load the eval values
85 valueString = "";
86
87 for (ValueDiscrete val : values) {
88 Integer util = eval.getValue(val); // get the utility
89 // for this value
90 // System.out.println("util="+util);
91 if (util != null)
92 valueString = valueString + util;
93
94 valueString = valueString + "\n";
95 }
96 discreteTextEvaluationArea.setText(valueString);
97 }
98 }
99 } else if (issue instanceof IssueInteger) {
100 this.issueType.setSelectedItem(INTEGER);
101 this.issueType.setEnabled(false);
102
103 ((CardLayout) issuePropertyCards.getLayout()).show(issuePropertyCards, INTEGER);
104 integerMinField.setText("" + ((IssueInteger) issue).getLowerBound());
105 integerMaxField.setText("" + ((IssueInteger) issue).getUpperBound());
106 if (utilSpace != null) {
107 EvaluatorInteger eval = (EvaluatorInteger) utilSpace.getEvaluator(issue.getNumber());
108
109 if (eval != null) {
110 integerUtilityLowestValue.setText("" + eval.getUtilLowestValue());
111 integerUtilityHighestValue.setText("" + eval.getUtilHighestValue());
112 }
113 }
114 } else if (issue instanceof IssueReal) {
115 this.issueType.setSelectedItem(REAL);
116 this.issueType.setEnabled(false);
117 ((CardLayout) issuePropertyCards.getLayout()).show(issuePropertyCards, REAL);
118 realMinField.setText("" + ((IssueReal) issue).getLowerBound());
119 realMaxField.setText("" + ((IssueReal) issue).getUpperBound());
120 if (utilSpace != null) {
121 EvaluatorReal eval = (EvaluatorReal) utilSpace.getEvaluator(issue.getNumber());
122 if (eval != null) {
123 switch (eval.getFuncType()) {
124 case LINEAR:
125 realLinearField.setText("" + eval.getLinearParam());
126 case CONSTANT:
127 realParameterField.setText("" + eval.getConstantParam());
128 default:
129 break;
130 }
131 }
132 }
133 }
134 }
135
136 /**
137 * Overrides getObjectiveNumber from NewObjectiveDialog
138 */
139 @Override
140 protected int getObjectiveNumber() throws InvalidInputException {
141 try {
142 return Integer.parseInt(numberField.getText());
143 } catch (Exception e) {
144 throw new InvalidInputException("Error reading objective number from (hidden) field.");
145 }
146 }
147
148 /**
149 * Overrides actionPerformed from NewIssueDialog.
150 */
151 @Override
152 public void actionPerformed(ActionEvent e) {
153 if (e.getSource() == okButton) {
154 if (issue == null)
155 return;
156
157 boolean valid = true;
158 if (issue instanceof IssueInteger) {
159 if (((NegotiatorTreeTableModel) treeFrame.getTreeTable().getTree().getModel())
160 .getUtilitySpace() != null) {
161 double utilLIV = Double.parseDouble(integerUtilityLowestValue.getText());
162 double utilHIV = Double.parseDouble(integerUtilityHighestValue.getText());
163 if (utilLIV < 0.0 || utilLIV > 1.0) {
164 valid = false;
165 JOptionPane.showConfirmDialog(null,
166 "The utility of the lowest value should be \n" + "in the range [0, 1]", "Input",
167 JOptionPane.PLAIN_MESSAGE);
168 } else if (utilHIV < 0.0 || utilHIV > 1.0) {
169 valid = false;
170 JOptionPane.showConfirmDialog(null,
171 "The utility of the heighest value should be \n" + "in the range [0, 1]", "Input",
172 JOptionPane.PLAIN_MESSAGE);
173 }
174 }
175 }
176 if (valid) {
177 updateIssue(issue);
178
179 // Notify the model that the contents of the treetable have
180 // changed
181 NegotiatorTreeTableModel model = (NegotiatorTreeTableModel) treeFrame.getTreeTable().getTree()
182 .getModel();
183
184 (model.getIssueValuePanel(issue)).displayValues(issue);
185 Object[] path = { model.getRoot() };
186 if (treeFrame.getTreeTable().getTree().getSelectionPath() != null) {
187 path = treeFrame.getTreeTable().getTree().getSelectionPath().getPath();
188 }
189 model.treeStructureChanged(this, path);
190
191 this.dispose();
192 }
193 } else if (e.getSource() == cancelButton) {
194 this.dispose();
195 }
196 }
197}
Note: See TracBrowser for help on using the repository browser.