X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2FPersonView.java;h=901ce90158131b4f237ed5ca2c96a23a6152235e;hb=9f1e899962a92c9c1b8d3713eca0524964465014;hp=e703ef3c60b75d5020b87a0dc056ed9e32e0f400;hpb=c8da8eb79910c7ea33dc2970ebd8d1d1db234a89;p=Persons_Comparator.git diff --git a/src/PersonView.java b/src/PersonView.java index e703ef3..901ce90 100644 --- a/src/PersonView.java +++ b/src/PersonView.java @@ -2,41 +2,50 @@ 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 implements ActionListener { - private int width = 400; +public class PersonView extends JComponent implements ActionListener { + private int width = 600; private int height = 600; private Person personObj; + private ArrayList personArrayList; private FirstnameView firstnameView; private OriginView originView; + private RegionView regionView; private SizeView sizeView; private WeightView weightView; private EyeView eyeView; - private JPanel personPanel = new JPanel(); + 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(); private JButton compareButton = new JButton("Compare"); - /*private ImageIcon originImage; - private ImageIcon personImage;*/ - PersonView(Person personObj) { + PersonView(Person personObj, ArrayList personArrayList) { setPersonObj(personObj); - setFirstnameView(new FirstnameView(15, this.personObj.getFirstname())); + setFirstnameView(new FirstnameView(14, this.personObj.getFirstname())); setOriginView(new OriginView(this.personObj.getOrigin())); + setRegionView(new RegionView(new Region())); 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)); - setLayout(new GridLayout(7, 1, 0, 4)); - add(firstnameView); - add(originView); - add(sizeView); - add(weightView); - add(eyeView); - add(compareButton); - add(personPanel); + northPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder()); + northPanel.add(firstnameView); + southPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder()); + southPanel.add(compareButton); + eastPanel.setLayout(new BoxLayout(this.eastPanel, BoxLayout.PAGE_AXIS)); + eastPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder()); + eastPanel.add(sizeView); + eastPanel.add(weightView); + eastPanel.add(eyeView); + westPanel.setLayout(new BoxLayout(this.westPanel, BoxLayout.PAGE_AXIS)); + westPanel.setBorder(BorderFactory.createRaisedSoftBevelBorder()); + //westPanel.add(originView); + westPanel.add(regionView); } public Person getPersonObj() { @@ -75,6 +84,14 @@ public class PersonView extends JPanel implements ActionListener { this.originView = originView; } + public RegionView getRegionView() { + return regionView; + } + + public void setRegionView(RegionView regionView) { + this.regionView = regionView; + } + /** * @return */ @@ -103,6 +120,13 @@ public class PersonView extends JPanel implements ActionListener { this.weightView = weightView; } + /** + * @return + */ + public EyeView getEyeView() { + return eyeView; + } + /** * @param eyeView */ @@ -110,15 +134,70 @@ public class PersonView extends JPanel implements ActionListener { 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 countryName = null; + if (this.getRegionView().getTree().getLastSelectedPathComponent() != null) + countryName = this.getRegionView().getTree().getLastSelectedPathComponent().toString(); + /*if (this.getOriginView().getComboBox().getSelectedIndex() != -1) + countryName = (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("") || countryName == 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(countryName)); + this.getPersonObj().setCountry(new Country(countryName)); + 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.setRightContentText(closestPerson.getFirstname().getFirstname() + " at distance " + closestPerson.getDistanceFromReference()); + personPanel.getRightPanel().drawPerson(closestPerson); + } } }