Properly add all view JComponents to the JPanel in the main JFrame.
[Persons_Comparator.git] / src / Eye.java
CommitLineData
97491195 1import java.awt.Color;
1c118933 2import java.util.List;
6b48f570 3import java.util.Arrays;
97491195 4
1c118933 5public class Eye implements Comparable<Eye> {
97491195 6 private Color color;
6b48f570 7 private List<String> colorList = Arrays.asList("black", "green", "blue", "brown");
97491195 8
ac6c3ea2 9 /**
ac6c3ea2
JB
10 * @param color
11 */
1c118933 12 Eye(String color) {
97491195
JB
13 setColor(color);
14 }
15
ac6c3ea2 16 /**
ac6c3ea2
JB
17 * @return
18 */
97491195
JB
19 public Color getColor() {
20 return color;
21 }
22
ac6c3ea2 23 /**
ac6c3ea2
JB
24 * @param color
25 */
1c118933 26 public void setColor(String color) {
6b48f570 27 if (validateColor(color)) {
6977e614 28 if (color.equals("brown"))
6b48f570 29 this.color = new Color(88, 41, 0);
6977e614
JB
30 else
31 this.color = Color.getColor(color);
32
6b48f570
JB
33 } else {
34 throw new IllegalArgumentException("Color must be " + colorList.toString());
35 }
36 }
37
ac6c3ea2 38 /**
ac6c3ea2
JB
39 * @param color
40 * @return
41 */
6b48f570
JB
42 private boolean validateColor(String color) {
43 return colorList.contains(color);
1c118933
JB
44 }
45
ac6c3ea2 46 /**
ac6c3ea2
JB
47 * @param eye
48 * @return
49 */
1c118933
JB
50 @Override
51 public int compareTo(Eye eye) {
6b48f570
JB
52 double r_diff = this.getColor().getRed() - eye.getColor().getRed();
53 double g_diff = this.getColor().getGreen() - eye.getColor().getGreen();
54 double b_diff = this.getColor().getBlue() - eye.getColor().getBlue();
55 // See https://en.wikipedia.org/wiki/Color_difference
56 Double distance = Math.sqrt(2 * Math.pow(r_diff, 2) + 4 * Math.pow(g_diff, 2) + 3 * Math.pow(b_diff, 2));
57 return distance.intValue();
97491195
JB
58 }
59}