Switch person class usage of Origin class to Country class and use it for distance...
[Persons_Comparator.git] / src / PersonView.java
CommitLineData
6977e614 1import javax.swing.*;
bb6c655a 2import java.awt.*;
c8da8eb7
JB
3import java.awt.event.ActionEvent;
4import java.awt.event.ActionListener;
9b3bfcdd 5import java.util.ArrayList;
6977e614 6
d252f672 7public class PersonView extends JComponent implements ActionListener {
255d3354
JB
8 private int width = 600;
9 private int height = 600;
883508ca 10 private Person personObj;
5687dc10 11 private ArrayList<Person> personArrayList;
6977e614
JB
12 private FirstnameView firstnameView;
13 private OriginView originView;
822afd4f 14 private RegionView regionView;
6977e614
JB
15 private SizeView sizeView;
16 private WeightView weightView;
17 private EyeView eyeView;
d252f672
JB
18 private JPanel northPanel = new JPanel();
19 private JPanel southPanel = new JPanel();
20 private JPanel eastPanel = new JPanel();
21 private JPanel westPanel = new JPanel();
255d3354 22 private PersonPanel personPanel = new PersonPanel();
bb6c655a 23 private JButton compareButton = new JButton("Compare");
6977e614 24
5687dc10 25 PersonView(Person personObj, ArrayList<Person> personArrayList) {
b974e749 26 setPersonObj(personObj);
255d3354 27 setFirstnameView(new FirstnameView(14, this.personObj.getFirstname()));
b974e749 28 setOriginView(new OriginView(this.personObj.getOrigin()));
822afd4f 29 setRegionView(new RegionView(new Region()));
b974e749
JB
30 setSizeView(new SizeView(this.personObj.getPersonSize()));
31 setWeightView(new WeightView(this.personObj.getWeight()));
32 setEyeView(new EyeView(this.personObj.getEye()));
5687dc10 33 setPersonArrayList(personArrayList);
60971873 34
c8da8eb7 35 this.compareButton.addActionListener(this);
d252f672
JB
36 northPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder());
37 northPanel.add(firstnameView);
38 southPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder());
39 southPanel.add(compareButton);
255d3354 40 eastPanel.setLayout(new BoxLayout(this.eastPanel, BoxLayout.PAGE_AXIS));
d252f672
JB
41 eastPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder());
42 eastPanel.add(sizeView);
43 eastPanel.add(weightView);
44 eastPanel.add(eyeView);
255d3354 45 westPanel.setLayout(new BoxLayout(this.westPanel, BoxLayout.PAGE_AXIS));
d252f672 46 westPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder());
822afd4f
SP
47 //westPanel.add(originView);
48 westPanel.add(regionView);
60971873
JB
49 }
50
883508ca
JB
51 public Person getPersonObj() {
52 return personObj;
53 }
54
55 public void setPersonObj(Person personObj) {
56 this.personObj = personObj;
ac6c3ea2
JB
57 }
58
59 /**
ac6c3ea2
JB
60 * @return
61 */
6977e614
JB
62 public FirstnameView getFirstnameView() {
63 return firstnameView;
64 }
65
ac6c3ea2 66 /**
ac6c3ea2
JB
67 * @param firstnameView
68 */
6977e614
JB
69 public void setFirstnameView(FirstnameView firstnameView) {
70 this.firstnameView = firstnameView;
71 }
72
ac6c3ea2 73 /**
ac6c3ea2
JB
74 * @return
75 */
6977e614
JB
76 public OriginView getOriginView() {
77 return originView;
78 }
79
ac6c3ea2 80 /**
ac6c3ea2
JB
81 * @param originView
82 */
6977e614
JB
83 public void setOriginView(OriginView originView) {
84 this.originView = originView;
85 }
86
9f1e8999
JB
87 public RegionView getRegionView() {
88 return regionView;
89 }
90
822afd4f
SP
91 public void setRegionView(RegionView regionView) {
92 this.regionView = regionView;
93 }
94
ac6c3ea2 95 /**
ac6c3ea2
JB
96 * @return
97 */
6977e614
JB
98 public SizeView getSizeView() {
99 return sizeView;
100 }
101
ac6c3ea2 102 /**
ac6c3ea2
JB
103 * @param sizeView
104 */
6977e614
JB
105 public void setSizeView(SizeView sizeView) {
106 this.sizeView = sizeView;
107 }
108
ac6c3ea2 109 /**
ac6c3ea2
JB
110 * @return
111 */
6977e614
JB
112 public WeightView getWeightView() {
113 return weightView;
114 }
115
ac6c3ea2 116 /**
ac6c3ea2
JB
117 * @param weightView
118 */
119 public void setWeightView(WeightView weightView) {
120 this.weightView = weightView;
6977e614
JB
121 }
122
5687dc10
JB
123 /**
124 * @return
125 */
126 public EyeView getEyeView() {
127 return eyeView;
128 }
129
ac6c3ea2 130 /**
ac6c3ea2
JB
131 * @param eyeView
132 */
6977e614
JB
133 public void setEyeView(EyeView eyeView) {
134 this.eyeView = eyeView;
135 }
136
5687dc10
JB
137 public ArrayList<Person> getPersonArrayList() {
138 return personArrayList;
139 }
140
141 public void setPersonArrayList(ArrayList<Person> personArrayList) {
142 this.personArrayList = personArrayList;
6977e614 143 }
c8da8eb7 144
d252f672
JB
145 public Dimension getDimension() {
146 return new Dimension(this.width, this.height);
147 }
148
149 public JPanel getNorthPanel() {
150 return northPanel;
151 }
152
153 public JPanel getSouthPanel() {
154 return southPanel;
155 }
156
157 public JPanel getEastPanel() {
158 return eastPanel;
159 }
160
161 public JPanel getWestPanel() {
162 return westPanel;
163 }
164
165 public PersonPanel getPersonPanel() {
166 return personPanel;
167 }
168
c8da8eb7
JB
169 @Override
170 public void actionPerformed(ActionEvent actionEvent) {
9b3bfcdd
JB
171 //TODO: one can implement a smarter way of getting all inputs values inside the main panel.
172 String firstname = this.getFirstnameView().getTextField().getText();
9f1e8999
JB
173 String countryName = null;
174 if (this.getRegionView().getTree().getLastSelectedPathComponent() != null)
175 countryName = this.getRegionView().getTree().getLastSelectedPathComponent().toString();
176 /*if (this.getOriginView().getComboBox().getSelectedIndex() != -1)
177 countryName = (String) this.getOriginView().getComboBox().getSelectedObjects()[0];*/
9b3bfcdd
JB
178 Integer size = (Integer) this.getSizeView().getSpinner().getValue();
179 Integer weight = (Integer) this.getWeightView().getComboBox().getSelectedItem();
180 String eye_color = (String) this.getEyeView().getColorsList().getSelectedValue();
9f1e8999 181 if (firstname.equals("") || countryName == null || eye_color == null) {
9b3bfcdd
JB
182 JOptionPane.showMessageDialog(this,
183 "Some required fields are missing.",
184 "Error",
185 JOptionPane.ERROR_MESSAGE);
186 } else {
187 this.getPersonObj().setFirstname(new Firstname(firstname));
9f1e8999
JB
188 //this.getPersonObj().setOrigin(new Origin(countryName));
189 this.getPersonObj().setCountry(new Country(countryName));
9b3bfcdd
JB
190 this.getPersonObj().setPersonSize(new Size(size));
191 this.getPersonObj().setWeight(new Weight(weight));
192 this.getPersonObj().setEye(new Eye(eye_color));
5687dc10
JB
193 ArrayList<Person> personArrayList = this.getPersonArrayList();
194 //Utils.displayArrayList(personArrayList);
195 Utils.computeDistanceFrom(getPersonObj(), personArrayList);
9b3bfcdd 196 personArrayList.sort(getPersonObj());
5687dc10
JB
197 //Utils.displayArrayList(personArrayList);
198 Person closestPerson = personArrayList.get(personArrayList.indexOf(this.getPersonObj()) + 1);
255d3354 199 personPanel.setRightContentText(closestPerson.getFirstname().getFirstname() + " at distance " + closestPerson.getDistanceFromReference());
d418dae1 200 personPanel.getRightPanel().drawPerson(closestPerson);
9b3bfcdd 201 }
c8da8eb7 202 }
6977e614 203}