import javax.swing.*;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import java.awt.*;
+import java.util.Arrays;
-public class EyeView extends JComponent {
+public class EyeView extends JPanel implements ListSelectionListener {
private Eye eyeObj;
private JLabel label;
private JList colorsList;
- EyeView() {
- setEyeObj(new Eye());
- this.label = new JLabel();
- this.label.setText("Eyes color");
- this.colorsList = new JList(getEyeObj().getColorsList());
- this.colorsList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
- add(label);
- add(colorsList);
- }
-
/**
* @param eyeObj
*/
EyeView(Eye eyeObj) {
setEyeObj(eyeObj);
+ this.label = new JLabel();
+ this.label.setText("Eyes color");
+ this.colorsList = new JList<>(this.getEyeObj().getColorsList());
+ 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);
}
/**
public void setEyeObj(Eye eyeObj) {
this.eyeObj = eyeObj;
}
+
+ 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;
+ }
+ }
}