source: src/main/java/genius/gui/session/ParticipantModel.java@ 3

Last change on this file since 3 was 1, checked in by Wouter Pasman, 7 years ago

Initial import : Genius 9.0.0

File size: 4.3 KB
Line 
1package genius.gui.session;
2
3
4import java.util.ArrayList;
5
6import javax.swing.event.ListDataEvent;
7import javax.swing.event.ListDataListener;
8
9import genius.core.AgentID;
10import genius.core.listener.Listener;
11import genius.core.repository.DomainRepItem;
12import genius.core.repository.MultiPartyProtocolRepItem;
13import genius.core.repository.ParticipantRepItem;
14import genius.core.repository.ProfileRepItem;
15import genius.core.session.Participant;
16import genius.gui.negosession.ContentProxy;
17import genius.gui.panels.BooleanModel;
18import genius.gui.panels.SingleSelectionModel;
19import genius.gui.panels.TextModel;
20import genius.gui.uncertainty.UncertaintyOptionModel;
21import genius.gui.uncertainty.UncertaintyOptionPanel;
22
23/**
24 * Holds the MVC model information for a participant in the negotiation.
25 */
26public class ParticipantModel {
27 private final TextModel partyIdModel = new TextModel("Party 1");
28 private final SingleSelectionModel<ParticipantRepItem> partyModel = new SingleSelectionModel<>(
29 new ArrayList<ParticipantRepItem>());
30 private final SingleSelectionModel<ProfileRepItem> profileModel = new SingleSelectionModel<ProfileRepItem>(
31 new ArrayList<ProfileRepItem>());
32 private final SingleSelectionModel<MultiPartyProtocolRepItem> protocolModel;
33 private final SingleSelectionModel<DomainRepItem> domainModel;
34 private final BooleanModel uncertaintyOptionBox = new BooleanModel(false);
35
36 private UncertaintyOptionModel uncertaintyModel;
37
38
39 /**
40 *
41 * @param protocolModel
42 * holding the protocol that this participant has to use.
43 * @param domainModel, holding the negotiation domain. It is used also for the selection of domain specific preference profiles
44 */
45
46 public ParticipantModel(SingleSelectionModel<MultiPartyProtocolRepItem> protocolModel, SingleSelectionModel<DomainRepItem> domainModel) {
47 this.protocolModel = protocolModel;
48 this.domainModel = domainModel;
49 connect();
50 protocolChanged();
51 domainChanged();
52 }
53
54 public TextModel getIdModel() {
55 return partyIdModel;
56 }
57
58 public SingleSelectionModel<ParticipantRepItem> getPartyModel() {
59 return partyModel;
60 }
61
62 public SingleSelectionModel<DomainRepItem> getDomainModel() {
63 return domainModel;
64 }
65
66 public SingleSelectionModel<ProfileRepItem> getProfileModel() {
67 return profileModel;
68 }
69
70 public BooleanModel getUncertaintyOptionBox() {
71 return uncertaintyOptionBox;
72 }
73
74 /**
75 * Automatically increments the current ID, strategy and profile.
76 */
77 public void increment() {
78 partyIdModel.increment();
79 partyModel.increment();
80 profileModel.increment();
81 uncertaintyOptionBox.setValue(false);
82 }
83
84 /**
85 * @return {@link Participant} as set at this moment in this model
86 */
87 public Participant getParticipant()
88 {
89 return new Participant(new AgentID(partyIdModel.getText()), (ParticipantRepItem) partyModel.getSelectedItem(),
90 (ProfileRepItem) profileModel.getSelectedItem() , uncertaintyOptionBox.getValue() == false ? null : uncertaintyModel.getUncertainPrefContainer());
91 }
92
93 /*************************** private support funcs ********************/
94
95 /**
96 * connect. protocol changes -> update available parties.
97 */
98 private void connect() {
99 protocolModel.addListDataListener(new ListDataListener() {
100
101 @Override
102 public void intervalRemoved(ListDataEvent e) {
103
104 }
105
106 @Override
107 public void intervalAdded(ListDataEvent e) {
108 }
109
110 @Override
111 public void contentsChanged(ListDataEvent e) {
112 protocolChanged();
113 }
114 });
115
116 domainModel.addListDataListener(new ListDataListener() {
117
118 @Override
119 public void intervalRemoved(ListDataEvent e) {
120
121 }
122
123 @Override
124 public void intervalAdded(ListDataEvent e) {
125 }
126
127 @Override
128 public void contentsChanged(ListDataEvent e) {
129 domainChanged();
130 }
131 });
132
133 uncertaintyOptionBox.addListener (new Listener<Boolean>() {
134
135 @Override
136 public void notifyChange(Boolean data) {
137
138 if (uncertaintyOptionBox.getValue() == true) {
139 uncertaintyModel = new UncertaintyOptionModel((ProfileRepItem)getProfileModel().getSelectedItem());
140 UncertaintyOptionPanel uncertaintyPanel = new UncertaintyOptionPanel(uncertaintyModel);
141 }
142 }
143 });
144 }
145
146 private void protocolChanged() {
147 partyModel.setAllItems(ContentProxy.fetchPartiesForProtocol(protocolModel.getSelection()));
148
149 }
150 private void domainChanged() {
151 profileModel.setAllItems(ContentProxy.fetchDomainSpecificProfiles(domainModel.getSelection()));
152 }
153
154}
Note: See TracBrowser for help on using the repository browser.