8cee3e23e100c5ed70d01dd669f78c294693b0da
[Persons_Comparator.git] / src / PersonView.java
1 import javax.swing.*;
2 import java.awt.*;
3 import java.awt.event.ActionEvent;
4 import java.awt.event.ActionListener;
5 import java.util.ArrayList;
6
7 public class PersonView extends JPanel implements ActionListener {
8 private int width = 400;
9 private int height = 600;
10 private Person personObj;
11 private ArrayList<Person> personArrayList;
12 private FirstnameView firstnameView;
13 private OriginView originView;
14 private SizeView sizeView;
15 private WeightView weightView;
16 private EyeView eyeView;
17 private JPanel personPanel = new JPanel();
18 private JButton compareButton = new JButton("Compare");
19 /*private ImageIcon originImage;
20 private ImageIcon personImage;*/
21
22 PersonView(Person personObj, ArrayList<Person> personArrayList) {
23 setPersonObj(personObj);
24 setFirstnameView(new FirstnameView(15, this.personObj.getFirstname()));
25 setOriginView(new OriginView(this.personObj.getOrigin()));
26 setSizeView(new SizeView(this.personObj.getPersonSize()));
27 setWeightView(new WeightView(this.personObj.getWeight()));
28 setEyeView(new EyeView(this.personObj.getEye()));
29 setPersonArrayList(personArrayList);
30
31 this.compareButton.addActionListener(this);
32 JLabel personLabel = new JLabel("Closest person found");
33 personPanel.add(personLabel);
34 setPreferredSize(new Dimension(this.width, this.height));
35 setLayout(new GridLayout(7, 1, 0, 4));
36 add(firstnameView);
37 add(originView);
38 add(sizeView);
39 add(weightView);
40 add(eyeView);
41 add(compareButton);
42 add(personPanel);
43 }
44
45 public Person getPersonObj() {
46 return personObj;
47 }
48
49 public void setPersonObj(Person personObj) {
50 this.personObj = personObj;
51 }
52
53 /**
54 * @return
55 */
56 public FirstnameView getFirstnameView() {
57 return firstnameView;
58 }
59
60 /**
61 * @param firstnameView
62 */
63 public void setFirstnameView(FirstnameView firstnameView) {
64 this.firstnameView = firstnameView;
65 }
66
67 /**
68 * @return
69 */
70 public OriginView getOriginView() {
71 return originView;
72 }
73
74 /**
75 * @param originView
76 */
77 public void setOriginView(OriginView originView) {
78 this.originView = originView;
79 }
80
81 /**
82 * @return
83 */
84 public SizeView getSizeView() {
85 return sizeView;
86 }
87
88 /**
89 * @param sizeView
90 */
91 public void setSizeView(SizeView sizeView) {
92 this.sizeView = sizeView;
93 }
94
95 /**
96 * @return
97 */
98 public WeightView getWeightView() {
99 return weightView;
100 }
101
102 /**
103 * @param weightView
104 */
105 public void setWeightView(WeightView weightView) {
106 this.weightView = weightView;
107 }
108
109 /**
110 * @return
111 */
112 public EyeView getEyeView() {
113 return eyeView;
114 }
115
116 /**
117 * @param eyeView
118 */
119 public void setEyeView(EyeView eyeView) {
120 this.eyeView = eyeView;
121 }
122
123 public ArrayList<Person> getPersonArrayList() {
124 return personArrayList;
125 }
126
127 public void setPersonArrayList(ArrayList<Person> personArrayList) {
128 this.personArrayList = personArrayList;
129 }
130
131 @Override
132 public void actionPerformed(ActionEvent actionEvent) {
133 //TODO: one can implement a smarter way of getting all inputs values inside the main panel.
134 String firstname = this.getFirstnameView().getTextField().getText();
135 String country = null;
136 if (this.getOriginView().getComboBox().getSelectedIndex() != -1)
137 country = (String) this.getOriginView().getComboBox().getSelectedObjects()[0];
138 Integer size = (Integer) this.getSizeView().getSpinner().getValue();
139 Integer weight = (Integer) this.getWeightView().getComboBox().getSelectedItem();
140 String eye_color = (String) this.getEyeView().getColorsList().getSelectedValue();
141 if (firstname.equals("") || country == null || eye_color == null) {
142 JOptionPane.showMessageDialog(this,
143 "Some required fields are missing.",
144 "Error",
145 JOptionPane.ERROR_MESSAGE);
146 } else {
147 this.getPersonObj().setFirstname(new Firstname(firstname));
148 this.getPersonObj().setOrigin(new Origin(country));
149 this.getPersonObj().setPersonSize(new Size(size));
150 this.getPersonObj().setWeight(new Weight(weight));
151 this.getPersonObj().setEye(new Eye(eye_color));
152 ArrayList<Person> personArrayList = this.getPersonArrayList();
153 //Utils.displayArrayList(personArrayList);
154 Utils.computeDistanceFrom(getPersonObj(), personArrayList);
155 personArrayList.sort(getPersonObj());
156 //Utils.displayArrayList(personArrayList);
157 Person closestPerson = personArrayList.get(personArrayList.indexOf(this.getPersonObj()) + 1);
158 JLabel closestPersonLabel = new JLabel();
159 closestPersonLabel.setText(closestPerson.toString());
160 this.personPanel.add(closestPersonLabel);
161 }
162 }
163 }