Start the implementation of inputs gathering and the comparator code (still buggy...
[Persons_Comparator.git] / src / PersonView.java
index ba0388950231ec42c2002aa73d0ff0f3a161d094..a98c1e7d89796ce7d1078d0b1c202252b261a104 100644 (file)
@@ -1,22 +1,54 @@
 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 FirstnameView firstnameView;
     private OriginView originView;
     private SizeView sizeView;
     private WeightView weightView;
     private EyeView eyeView;
+    private JPanel personPanel = new JPanel();
+    private JButton compareButton = new JButton("Compare");
+    /*private ImageIcon originImage;
+    private ImageIcon personImage;*/
 
-    PersonView(FirstnameView firstnameView, OriginView originView, SizeView sizeView, WeightView weightView, EyeView eyeView) {
-        setFirstnameView(firstnameView);
-        setOriginView(originView);
-        setSizeView(sizeView);
-        setWeightView(weightView);
-        setEyeView(eyeView);
+    PersonView(Person personObj) {
+        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()));
+
+        this.compareButton.addActionListener(this);
+        JLabel personLabel = new JLabel("Closest person found");
+        personPanel.add(personLabel);
+        setPreferredSize(new Dimension(this.width, this.height));
+        setLayout(new GridLayout(7, 1, 0, 4));
+        add(firstnameView);
+        add(originView);
+        add(sizeView);
+        add(weightView);
+        add(eyeView);
+        add(compareButton);
+        add(personPanel);
+    }
+
+    public Person getPersonObj() {
+        return personObj;
+    }
+
+    public void setPersonObj(Person personObj) {
+        this.personObj = personObj;
     }
 
     /**
-     *
      * @return
      */
     public FirstnameView getFirstnameView() {
@@ -24,7 +56,6 @@ public class PersonView extends JPanel {
     }
 
     /**
-     *
      * @param firstnameView
      */
     public void setFirstnameView(FirstnameView firstnameView) {
@@ -32,7 +63,6 @@ public class PersonView extends JPanel {
     }
 
     /**
-     *
      * @return
      */
     public OriginView getOriginView() {
@@ -40,7 +70,6 @@ public class PersonView extends JPanel {
     }
 
     /**
-     *
      * @param originView
      */
     public void setOriginView(OriginView originView) {
@@ -48,7 +77,6 @@ public class PersonView extends JPanel {
     }
 
     /**
-     *
      * @return
      */
     public SizeView getSizeView() {
@@ -56,7 +84,6 @@ public class PersonView extends JPanel {
     }
 
     /**
-     *
      * @param sizeView
      */
     public void setSizeView(SizeView sizeView) {
@@ -64,7 +91,6 @@ public class PersonView extends JPanel {
     }
 
     /**
-     *
      * @return
      */
     public WeightView getWeightView() {
@@ -72,7 +98,6 @@ public class PersonView extends JPanel {
     }
 
     /**
-     *
      * @param weightView
      */
     public void setWeightView(WeightView weightView) {
@@ -80,7 +105,6 @@ public class PersonView extends JPanel {
     }
 
     /**
-     *
      * @param eyeView
      */
     public void setEyeView(EyeView eyeView) {
@@ -88,10 +112,45 @@ public class PersonView extends JPanel {
     }
 
     /**
-     *
      * @return
      */
     public EyeView getEyeView() {
         return eyeView;
     }
+
+    @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));
+            //this.getPersonObj().displayPersonArrayList();
+            ArrayList<Person> personArrayList = this.getPersonObj().getPersonArrayList();
+            personArrayList.add(this.getPersonObj());
+            this.getPersonObj().displayArrayList(personArrayList);
+            personArrayList.sort(getPersonObj());
+            this.getPersonObj().displayArrayList(personArrayList);
+            Integer previousPersonIndex = personArrayList.indexOf(this.getPersonObj()) - 1;
+            Integer nextPersonIndex = personArrayList.indexOf(this.getPersonObj()) + 1;
+            //Person previousPerson = personArrayList.get(personArrayList.indexOf(this.getPersonObj()) - 1);
+            //Person nextPerson = personArrayList.get(personArrayList.indexOf(this.getPersonObj()) + 1);
+            System.out.println(previousPersonIndex);
+            System.out.println(nextPersonIndex);
+        }
+    }
 }