Make the main window a singleton to permit to query it from other views and update...
[Persons_Comparator.git] / src / Eye.java
CommitLineData
97491195 1import java.awt.Color;
d75d0a00 2import java.util.Arrays;
97491195 3
5687dc10 4public class Eye {
d75d0a00 5 private String strColor;
97491195 6 private Color color;
d75d0a00 7 private String[] colorsList = {"black", "blue", "brown", "green"};
883508ca
JB
8
9 Eye() {
7add5cb9 10 //this.color = Color.white;
d75d0a00 11 sortColorList();
883508ca 12 }
97491195 13
ac6c3ea2 14 /**
ac6c3ea2
JB
15 * @param color
16 */
1c118933 17 Eye(String color) {
d75d0a00 18 setStrColor(color);
97491195 19 setColor(color);
d75d0a00
JB
20 sortColorList();
21 }
22
23 public String getStrColor() {
24 return strColor;
25 }
26
27 public void setStrColor(String strColor) {
28 if (validateColor(strColor)) {
29 this.strColor = strColor;
30 } else {
480ff9f5 31 throw new IllegalArgumentException("Color must be" + this.colorListToString());
d75d0a00 32 }
97491195
JB
33 }
34
883508ca
JB
35 public String[] getColorsList() {
36 return colorsList;
37 }
38
ac6c3ea2 39 /**
ac6c3ea2
JB
40 * @return
41 */
97491195
JB
42 public Color getColor() {
43 return color;
44 }
45
ac6c3ea2 46 /**
ac6c3ea2
JB
47 * @param color
48 */
1c118933 49 public void setColor(String color) {
6b48f570 50 if (validateColor(color)) {
9b3bfcdd
JB
51 if (color.equals("black"))
52 this.color = Color.black;
53 else if (color.equals("blue"))
54 this.color = Color.blue;
55 else if (color.equals("brown"))
6b48f570 56 this.color = new Color(88, 41, 0);
9b3bfcdd
JB
57 else if (color.equals("green"))
58 this.color = Color.green;
6b48f570 59 } else {
480ff9f5 60 throw new IllegalArgumentException("Color must be" + this.colorListToString());
6b48f570
JB
61 }
62 }
63
ac6c3ea2 64 /**
ac6c3ea2
JB
65 * @param color
66 * @return
67 */
6b48f570 68 private boolean validateColor(String color) {
883508ca
JB
69 for (String c : colorsList) {
70 if (color.equals(c)) {
71 return true;
72 }
73 }
74 return false;
1c118933
JB
75 }
76
d75d0a00
JB
77 private void sortColorList() {
78 Arrays.sort(this.colorsList);
79 }
80
ac6c3ea2 81 /**
ac6c3ea2
JB
82 * @param eye
83 * @return
84 */
5687dc10 85 public int distanceTo(Eye eye) {
6b48f570
JB
86 double r_diff = this.getColor().getRed() - eye.getColor().getRed();
87 double g_diff = this.getColor().getGreen() - eye.getColor().getGreen();
88 double b_diff = this.getColor().getBlue() - eye.getColor().getBlue();
f1e9d6d2 89 //See https://en.wikipedia.org/wiki/Color_difference
6b48f570
JB
90 Double distance = Math.sqrt(2 * Math.pow(r_diff, 2) + 4 * Math.pow(g_diff, 2) + 3 * Math.pow(b_diff, 2));
91 return distance.intValue();
97491195 92 }
b974e749 93
d75d0a00 94 private String colorListToString() {
b974e749
JB
95 StringBuilder stringBuilder = new StringBuilder();
96 for (String c : colorsList) {
97 stringBuilder.append(" ");
98 stringBuilder.append(c);
99 }
100 return stringBuilder.toString();
101 }
97491195 102}