X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FPersonView.java;h=6823579d2bc162a43ea1fc6d1b377a1e43c73fe0;hb=d252f672e7ed73d9f4e588f855d20f042f2e2df8;hp=ba0388950231ec42c2002aa73d0ff0f3a161d094;hpb=ac6c3ea2922a7d424c1244809f68026c5a77bcdf;p=Persons_Comparator.git diff --git a/src/PersonView.java b/src/PersonView.java index ba03889..6823579 100644 --- a/src/PersonView.java +++ b/src/PersonView.java @@ -1,22 +1,59 @@ 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 JComponent implements ActionListener { + private int width = 800; + private int height = 500; + private Person personObj; + private ArrayList personArrayList; private FirstnameView firstnameView; private OriginView originView; private SizeView sizeView; private WeightView weightView; private EyeView eyeView; + private JPanel northPanel = new JPanel(); + private JPanel southPanel = new JPanel(); + private JPanel eastPanel = new JPanel(); + private JPanel westPanel = new JPanel(); + private PersonPanel personPanel = new PersonPanel("Person comparison"); + private JButton compareButton = new JButton("Compare"); - PersonView(FirstnameView firstnameView, OriginView originView, SizeView sizeView, WeightView weightView, EyeView eyeView) { - setFirstnameView(firstnameView); - setOriginView(originView); - setSizeView(sizeView); - setWeightView(weightView); - setEyeView(eyeView); + 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); + northPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder()); + northPanel.add(firstnameView); + southPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder()); + southPanel.add(compareButton); + eastPanel.setLayout(new BoxLayout(this.eastPanel, BoxLayout.Y_AXIS)); + eastPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder()); + eastPanel.add(sizeView); + eastPanel.add(weightView); + eastPanel.add(eyeView); + westPanel.setLayout(new BoxLayout(this.westPanel, BoxLayout.Y_AXIS)); + westPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder()); + westPanel.add(originView); + } + + public Person getPersonObj() { + return personObj; + } + + public void setPersonObj(Person personObj) { + this.personObj = personObj; } /** - * * @return */ public FirstnameView getFirstnameView() { @@ -24,7 +61,6 @@ public class PersonView extends JPanel { } /** - * * @param firstnameView */ public void setFirstnameView(FirstnameView firstnameView) { @@ -32,7 +68,6 @@ public class PersonView extends JPanel { } /** - * * @return */ public OriginView getOriginView() { @@ -40,7 +75,6 @@ public class PersonView extends JPanel { } /** - * * @param originView */ public void setOriginView(OriginView originView) { @@ -48,7 +82,6 @@ public class PersonView extends JPanel { } /** - * * @return */ public SizeView getSizeView() { @@ -56,7 +89,6 @@ public class PersonView extends JPanel { } /** - * * @param sizeView */ public void setSizeView(SizeView sizeView) { @@ -64,7 +96,6 @@ public class PersonView extends JPanel { } /** - * * @return */ public WeightView getWeightView() { @@ -72,7 +103,6 @@ public class PersonView extends JPanel { } /** - * * @param weightView */ public void setWeightView(WeightView weightView) { @@ -80,18 +110,79 @@ public class PersonView extends JPanel { } /** - * + * @return + */ + public EyeView getEyeView() { + return eyeView; + } + + /** * @param eyeView */ public void setEyeView(EyeView eyeView) { this.eyeView = eyeView; } - /** - * - * @return - */ - public EyeView getEyeView() { - return eyeView; + public ArrayList getPersonArrayList() { + return personArrayList; + } + + public void setPersonArrayList(ArrayList personArrayList) { + this.personArrayList = personArrayList; + } + + public Dimension getDimension() { + return new Dimension(this.width, this.height); + } + + public JPanel getNorthPanel() { + return northPanel; + } + + public JPanel getSouthPanel() { + return southPanel; + } + + public JPanel getEastPanel() { + return eastPanel; + } + + public JPanel getWestPanel() { + return westPanel; + } + + public PersonPanel getPersonPanel() { + return personPanel; + } + + @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); + personPanel.setContentText(closestPerson.toString()); + } } }