X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FPersonView.java;h=8cee3e23e100c5ed70d01dd669f78c294693b0da;hb=5687dc10a68b52d28b63151d8c16a45775ef2e77;hp=675f37f3ab7f72b17dabbaec15feee6a5f17a1bc;hpb=bb6c655ae5fafc833209b3950b3e69e8f539a42a;p=Persons_Comparator.git diff --git a/src/PersonView.java b/src/PersonView.java index 675f37f..8cee3e2 100644 --- a/src/PersonView.java +++ b/src/PersonView.java @@ -1,10 +1,14 @@ import javax.swing.*; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; -public class PersonView extends JPanel { +public class PersonView extends JPanel implements ActionListener { private int width = 400; private int height = 600; private Person personObj; + private ArrayList personArrayList; private FirstnameView firstnameView; private OriginView originView; private SizeView sizeView; @@ -15,14 +19,16 @@ public class PersonView extends JPanel { /*private ImageIcon originImage; private ImageIcon personImage;*/ - PersonView(Person personObj) { + PersonView(Person personObj, ArrayList personArrayList) { setPersonObj(personObj); setFirstnameView(new FirstnameView(15, this.personObj.getFirstname())); setOriginView(new OriginView(this.personObj.getOrigin())); setSizeView(new SizeView(this.personObj.getPersonSize())); setWeightView(new WeightView(this.personObj.getWeight())); setEyeView(new EyeView(this.personObj.getEye())); + setPersonArrayList(personArrayList); + this.compareButton.addActionListener(this); JLabel personLabel = new JLabel("Closest person found"); personPanel.add(personLabel); setPreferredSize(new Dimension(this.width, this.height)); @@ -100,6 +106,13 @@ public class PersonView extends JPanel { this.weightView = weightView; } + /** + * @return + */ + public EyeView getEyeView() { + return eyeView; + } + /** * @param eyeView */ @@ -107,10 +120,44 @@ public class PersonView extends JPanel { this.eyeView = eyeView; } - /** - * @return - */ - public EyeView getEyeView() { - return eyeView; + public ArrayList getPersonArrayList() { + return personArrayList; + } + + public void setPersonArrayList(ArrayList personArrayList) { + this.personArrayList = personArrayList; + } + + @Override + public void actionPerformed(ActionEvent actionEvent) { + //TODO: one can implement a smarter way of getting all inputs values inside the main panel. + String firstname = this.getFirstnameView().getTextField().getText(); + String country = null; + if (this.getOriginView().getComboBox().getSelectedIndex() != -1) + country = (String) this.getOriginView().getComboBox().getSelectedObjects()[0]; + Integer size = (Integer) this.getSizeView().getSpinner().getValue(); + Integer weight = (Integer) this.getWeightView().getComboBox().getSelectedItem(); + String eye_color = (String) this.getEyeView().getColorsList().getSelectedValue(); + if (firstname.equals("") || country == null || eye_color == null) { + JOptionPane.showMessageDialog(this, + "Some required fields are missing.", + "Error", + JOptionPane.ERROR_MESSAGE); + } else { + this.getPersonObj().setFirstname(new Firstname(firstname)); + this.getPersonObj().setOrigin(new Origin(country)); + this.getPersonObj().setPersonSize(new Size(size)); + this.getPersonObj().setWeight(new Weight(weight)); + this.getPersonObj().setEye(new Eye(eye_color)); + ArrayList personArrayList = this.getPersonArrayList(); + //Utils.displayArrayList(personArrayList); + Utils.computeDistanceFrom(getPersonObj(), personArrayList); + personArrayList.sort(getPersonObj()); + //Utils.displayArrayList(personArrayList); + Person closestPerson = personArrayList.get(personArrayList.indexOf(this.getPersonObj()) + 1); + JLabel closestPersonLabel = new JLabel(); + closestPersonLabel.setText(closestPerson.toString()); + this.personPanel.add(closestPersonLabel); + } } }