Add some basic data for the Origin class and implement the associated view to allow...
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 11 Jan 2019 19:54:23 +0000 (20:54 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Fri, 11 Jan 2019 19:54:23 +0000 (20:54 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
src/Main.java
src/MainWindowsView.java
src/Origin.java
src/OriginView.java

index 5bac73ebab3fa905a7284370d082a79ba12e49a1..f455313b42216e69173a19fec3acaf7dac5f5cbe 100644 (file)
@@ -8,7 +8,7 @@ public class Main {
         String programName = "Person Comparator";
 
         ArrayList<Person> personArrayList = new ArrayList<>();
-        Person person1 = new Person("Alan", "USA", 180, 95, "black");
+        Person person1 = new Person("Alan", "United States of America", 180, 95, "black");
         personArrayList.add(person1);
         Person person2 = new Person("Brice", "France", 190, 82, "brown");
         personArrayList.add(person2);
index 406fcd58f18a8783375fa37e1670ff287367bd3a..58a37fb435f4a011af37a213a5adcdab9f9004c1 100644 (file)
@@ -11,7 +11,7 @@ public class MainWindowsView extends JFrame {
     MainWindowsView(String title, JPanel panel) {
         //Create and set up the window.
         setTitle(title);
-        setSize(300, 300);
+        setSize(400, 300);
         setLocationRelativeTo(null);
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
index 6e89fb93e36900638f8ea51dd4728d48d3e047e2..aa63762a374c74d7592626a4c34c4db0a4e14d1e 100644 (file)
@@ -1,14 +1,24 @@
+import java.util.ArrayList;
+import java.util.Arrays;
+
 public class Origin implements Comparable<Origin> {
-    private String continent;
+    private String continent = "Unknown";
     private String country;
+    private String continents[] = {"Africa", "Americas", "Asia", "Europe", "Oceania"};
+    private String[][] content2DArray = {
+            {"Mali"}, /* Africa */
+            {"United States of America", "Brasil", "Mexico"}, /* Americas */
+            {"India"}, /* Asia */
+            {"France", "Germany", "United Kingdom", "Belgium", "Norway"} /* Europe */,
+            {"Australia"} /* Oceania */
+    };
 
     Origin() {
     }
 
     Origin(String country) {
         setCountry(country);
-        //TODO: properly set the continent from the country.
-        setContinent("Europe");
+        setContinent(this.getContinentFromCountry(country));
     }
 
     public String getContinent() {
@@ -27,6 +37,31 @@ public class Origin implements Comparable<Origin> {
         this.country = country;
     }
 
+    public String[] getCountriesArray() {
+        ArrayList<String> stringArrayList = new ArrayList<>();
+        for (int i = 0; i < this.content2DArray.length; i++) {
+            for (int j = 0; j < this.content2DArray[i].length; j++) {
+                stringArrayList.add(this.content2DArray[i][j]);
+            }
+        }
+        stringArrayList.sort(String::compareToIgnoreCase);
+        String[] rtArray = new String[stringArrayList.size()];
+        return stringArrayList.toArray(rtArray);
+    }
+
+    private String getContinentFromCountry(String country) {
+        int continentKey = -1;
+        for (int i = 0; i < content2DArray.length; i++) {
+            if (Arrays.asList(content2DArray[i]).indexOf(country) != -1) {
+                continentKey = i;
+            }
+        }
+        if (continentKey != -1)
+            return this.continents[continentKey];
+        else
+            return "Unknown";
+    }
+
     @Override
     public int compareTo(Origin origin) {
         return 0;
index 3c3b5183367901c7062e77b33ca7beaad310052c..a5df1ad987e4e353ad939763d51856f2c1f0bfc0 100644 (file)
@@ -3,12 +3,21 @@ import javax.swing.*;
 public class OriginView extends JPanel {
     private Origin originObj;
     private JLabel label;
+    private JComboBox<String> comboBox;
+    //FIXME: this label should be refreshed on country selection.
+    private JLabel continentLabel;
 
     OriginView(Origin originObj) {
         setOriginObj(originObj);
         this.label = new JLabel();
         this.label.setText("Origin");
+        this.comboBox = new JComboBox<>(this.getOriginObj().getCountriesArray());
+        this.comboBox.setSelectedItem(this.getOriginObj().getCountry());
+        this.continentLabel = new JLabel();
+        this.continentLabel.setText("(" + this.getOriginObj().getContinent() + ")");
         add(label);
+        add(comboBox);
+        add(continentLabel);
     }
 
     public Origin getOriginObj() {