Merge remote-tracking branch 'origin/master'
[Persons_Comparator.git] / src / EyeView.java
index 2f892e4b99e47239078137243c3554caaa181363..48ad0b5636d36d28b8f1cbaa9565d19e7b0d905d 100644 (file)
@@ -1,7 +1,10 @@
 import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import java.awt.*;
 import java.util.Arrays;
 
-public class EyeView extends JPanel {
+public class EyeView extends JPanel implements ListSelectionListener {
     private Eye eyeObj;
     private JLabel label;
     private JList colorsList;
@@ -17,6 +20,8 @@ public class EyeView extends JPanel {
         this.colorsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         this.colorsList.setLayoutOrientation(JList.VERTICAL);
         this.colorsList.setSelectedIndex(Arrays.asList(this.getEyeObj().getColorsList()).indexOf(this.getEyeObj().getStrColor()));
+        this.colorsList.setCellRenderer(new EyeCellRenderer());
+        this.colorsList.addListSelectionListener(this);
         add(label);
         add(colorsList);
     }
@@ -38,4 +43,24 @@ public class EyeView extends JPanel {
     public JList getColorsList() {
         return colorsList;
     }
+
+    @Override
+    public void valueChanged(ListSelectionEvent listSelectionEvent) {
+        Eye currentEye = new Eye((String) getColorsList().getSelectedValue());
+        PersonLeftPanel personLeftPanel = MainWindowsView.getInstance().getCurrentPersonView().getPersonPanel().getLeftPanel();
+        personLeftPanel.drawEyes(currentEye.getColor());
+    }
+
+    private static class EyeCellRenderer extends DefaultListCellRenderer {
+        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
+            Component c = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
+            Eye currentEye = new Eye((String) list.getModel().getElementAt(index));
+            c.setBackground(currentEye.getColor());
+            c.setForeground(Color.WHITE);
+            if (isSelected) {
+                setBackground(getBackground().darker());
+            }
+            return c;
+        }
+    }
 }