ElementCellRenderer.java

/**
 * Copyright (c) 2015 European Organisation for Nuclear Research (CERN), All Rights Reserved.
 */

package cern.accsoft.steering.jmad.gui.panels.var;

import java.awt.Color;
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

import cern.accsoft.steering.jmad.domain.elem.Element;

public class ElementCellRenderer extends DefaultTableCellRenderer {

    private static final long serialVersionUID = 1L;
    private List<Element> elements = new ArrayList<Element>();

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
            int row, int column) {

        JLabel toReturnSuper = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row,
                column);
        JLabel toReturn = new JLabel();
        Element element = (Element) value;
        String text = element.getName() + " / " + element.getMadxElementType();
        toReturn.setText(text);
        if (!isSelected) {
            if (!isInCommonElementList(element)) {
                toReturn.setBackground(Color.pink);
            } else {
                toReturn.setBackground(toReturnSuper.getBackground());
            }
        } else {
            if (!isInCommonElementList(element)) {
                toReturn.setBackground(Color.red);
            } else {
                toReturn.setBackground(toReturnSuper.getBackground());
            }
        }
        toReturn.setOpaque(true);
        return toReturn;
    }

    private boolean isInCommonElementList(Element element) {
        for (Element one : elements) {
            if (one.getName().equals(element.getName())) {
                return true;
            }
        }
        return false;
    }

    public void setElements(List<Element> elements) {
        this.elements = new ArrayList<Element>(elements);
    }
}