3 import java
.awt
.event
.ActionEvent
;
4 import java
.awt
.event
.ActionListener
;
5 import java
.util
.ArrayList
;
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;*/
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
);
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));
45 public Person
getPersonObj() {
49 public void setPersonObj(Person personObj
) {
50 this.personObj
= personObj
;
56 public FirstnameView
getFirstnameView() {
61 * @param firstnameView
63 public void setFirstnameView(FirstnameView firstnameView
) {
64 this.firstnameView
= firstnameView
;
70 public OriginView
getOriginView() {
77 public void setOriginView(OriginView originView
) {
78 this.originView
= originView
;
84 public SizeView
getSizeView() {
91 public void setSizeView(SizeView sizeView
) {
92 this.sizeView
= sizeView
;
98 public WeightView
getWeightView() {
105 public void setWeightView(WeightView weightView
) {
106 this.weightView
= weightView
;
112 public EyeView
getEyeView() {
119 public void setEyeView(EyeView eyeView
) {
120 this.eyeView
= eyeView
;
123 public ArrayList
<Person
> getPersonArrayList() {
124 return personArrayList
;
127 public void setPersonArrayList(ArrayList
<Person
> personArrayList
) {
128 this.personArrayList
= personArrayList
;
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.",
145 JOptionPane
.ERROR_MESSAGE
);
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
);