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 RegionView
getRegionView() {
91 public void setRegionView(RegionView regionView
) {
92 this.regionView
= regionView
;
98 public SizeView
getSizeView() {
105 public void setSizeView(SizeView sizeView
) {
106 this.sizeView
= sizeView
;
112 public WeightView
getWeightView() {
119 public void setWeightView(WeightView weightView
) {
120 this.weightView
= weightView
;
126 public EyeView
getEyeView() {
133 public void setEyeView(EyeView eyeView
) {
134 this.eyeView
= eyeView
;
137 public ArrayList
<Person
> getPersonArrayList() {
138 return personArrayList
;
141 public void setPersonArrayList(ArrayList
<Person
> personArrayList
) {
142 this.personArrayList
= personArrayList
;
145 public Dimension
getDimension() {
146 return new Dimension(this.width
, this.height
);
149 public JPanel
getNorthPanel() {
153 public JPanel
getSouthPanel() {
157 public JPanel
getEastPanel() {
161 public JPanel
getWestPanel() {
165 public PersonPanel
getPersonPanel() {
170 public void actionPerformed(ActionEvent actionEvent
) {
171 //TODO: one can implement a smarter way of getting all inputs values inside the main panel.
172 String firstname
= this.getFirstnameView().getTextField().getText();
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];*/
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();
181 if (firstname
.equals("") || countryName
== null || eye_color
== null) {
182 JOptionPane
.showMessageDialog(this,
183 "Some required fields are missing.",
185 JOptionPane
.ERROR_MESSAGE
);
187 this.getPersonObj().setFirstname(new Firstname(firstname
));
188 //this.getPersonObj().setOrigin(new Origin(countryName));
189 this.getPersonObj().setCountry(new Country(countryName
));
190 this.getPersonObj().setPersonSize(new Size(size
));
191 this.getPersonObj().setWeight(new Weight(weight
));
192 this.getPersonObj().setEye(new Eye(eye_color
));
193 ArrayList
<Person
> personArrayList
= this.getPersonArrayList();
194 //Utils.displayArrayList(personArrayList);
195 Utils
.computeDistanceFrom(getPersonObj(), personArrayList
);
196 personArrayList
.sort(getPersonObj());
197 //Utils.displayArrayList(personArrayList);
198 Person closestPerson
= personArrayList
.get(personArrayList
.indexOf(this.getPersonObj()) + 1);
199 personPanel
.setRightContentText(closestPerson
.getFirstname().getFirstname() + " at distance " + closestPerson
.getDistanceFromReference());
200 personPanel
.getRightPanel().drawPerson(closestPerson
);