3 import java
.awt
.event
.ActionEvent
;
4 import java
.awt
.event
.ActionListener
;
5 import java
.util
.ArrayList
;
7 public class PersonView
extends JComponent
implements ActionListener
{
8 private int width
= 600;
9 private int height
= 600;
10 private Person personObj
;
11 private ArrayList
<Person
> personArrayList
;
12 private FirstnameView firstnameView
;
13 private OriginView originView
;
14 private RegionView regionView
;
15 private SizeView sizeView
;
16 private WeightView weightView
;
17 private EyeView eyeView
;
18 private JPanel northPanel
= new JPanel();
19 private JPanel southPanel
= new JPanel();
20 private JPanel eastPanel
= new JPanel();
21 private JPanel westPanel
= new JPanel();
22 private PersonPanel personPanel
= new PersonPanel();
23 private JButton compareButton
= new JButton("Compare");
25 PersonView(Person personObj
, ArrayList
<Person
> personArrayList
) {
26 setPersonObj(personObj
);
27 setFirstnameView(new FirstnameView(14, this.personObj
.getFirstname()));
28 setOriginView(new OriginView(this.personObj
.getOrigin()));
29 setRegionView(new RegionView(new Region()));
30 setSizeView(new SizeView(this.personObj
.getPersonSize()));
31 setWeightView(new WeightView(this.personObj
.getWeight()));
32 setEyeView(new EyeView(this.personObj
.getEye()));
33 setPersonArrayList(personArrayList
);
35 this.compareButton
.addActionListener(this);
36 northPanel
.setBorder(BorderFactory
.createRaisedSoftBevelBorder());
37 northPanel
.add(firstnameView
);
38 southPanel
.setBorder(BorderFactory
.createRaisedSoftBevelBorder());
39 southPanel
.add(compareButton
);
40 eastPanel
.setLayout(new BoxLayout(this.eastPanel
, BoxLayout
.PAGE_AXIS
));
41 eastPanel
.setBorder(BorderFactory
.createRaisedSoftBevelBorder());
42 eastPanel
.add(sizeView
);
43 eastPanel
.add(weightView
);
44 eastPanel
.add(eyeView
);
45 westPanel
.setLayout(new BoxLayout(this.westPanel
, BoxLayout
.PAGE_AXIS
));
46 westPanel
.setBorder(BorderFactory
.createRaisedSoftBevelBorder());
47 //westPanel.add(originView);
48 westPanel
.add(regionView
);
51 public Person
getPersonObj() {
55 public void setPersonObj(Person personObj
) {
56 this.personObj
= personObj
;
62 public FirstnameView
getFirstnameView() {
67 * @param firstnameView
69 public void setFirstnameView(FirstnameView firstnameView
) {
70 this.firstnameView
= firstnameView
;
76 public OriginView
getOriginView() {
83 public void setOriginView(OriginView originView
) {
84 this.originView
= originView
;
87 public void setRegionView(RegionView regionView
) {
88 this.regionView
= regionView
;
95 public SizeView
getSizeView() {
102 public void setSizeView(SizeView sizeView
) {
103 this.sizeView
= sizeView
;
109 public WeightView
getWeightView() {
116 public void setWeightView(WeightView weightView
) {
117 this.weightView
= weightView
;
123 public EyeView
getEyeView() {
130 public void setEyeView(EyeView eyeView
) {
131 this.eyeView
= eyeView
;
134 public ArrayList
<Person
> getPersonArrayList() {
135 return personArrayList
;
138 public void setPersonArrayList(ArrayList
<Person
> personArrayList
) {
139 this.personArrayList
= personArrayList
;
142 public Dimension
getDimension() {
143 return new Dimension(this.width
, this.height
);
146 public JPanel
getNorthPanel() {
150 public JPanel
getSouthPanel() {
154 public JPanel
getEastPanel() {
158 public JPanel
getWestPanel() {
162 public PersonPanel
getPersonPanel() {
167 public void actionPerformed(ActionEvent actionEvent
) {
168 //TODO: one can implement a smarter way of getting all inputs values inside the main panel.
169 String firstname
= this.getFirstnameView().getTextField().getText();
170 String country
= null;
171 if (this.getOriginView().getComboBox().getSelectedIndex() != -1)
172 country
= (String
) this.getOriginView().getComboBox().getSelectedObjects()[0];
173 Integer size
= (Integer
) this.getSizeView().getSpinner().getValue();
174 Integer weight
= (Integer
) this.getWeightView().getComboBox().getSelectedItem();
175 String eye_color
= (String
) this.getEyeView().getColorsList().getSelectedValue();
176 if (firstname
.equals("") || country
== null || eye_color
== null) {
177 JOptionPane
.showMessageDialog(this,
178 "Some required fields are missing.",
180 JOptionPane
.ERROR_MESSAGE
);
182 this.getPersonObj().setFirstname(new Firstname(firstname
));
183 this.getPersonObj().setOrigin(new Origin(country
));
184 this.getPersonObj().setPersonSize(new Size(size
));
185 this.getPersonObj().setWeight(new Weight(weight
));
186 this.getPersonObj().setEye(new Eye(eye_color
));
187 ArrayList
<Person
> personArrayList
= this.getPersonArrayList();
188 //Utils.displayArrayList(personArrayList);
189 Utils
.computeDistanceFrom(getPersonObj(), personArrayList
);
190 personArrayList
.sort(getPersonObj());
191 //Utils.displayArrayList(personArrayList);
192 Person closestPerson
= personArrayList
.get(personArrayList
.indexOf(this.getPersonObj()) + 1);
193 personPanel
.setRightContentText(closestPerson
.getFirstname().getFirstname() + " at distance " + closestPerson
.getDistanceFromReference());
194 personPanel
.getRightPanel().drawPerson(closestPerson
);