CenterRendererWithIcon.java

package com.jsql.view.swing.panel.consoles;

import com.jsql.model.injection.strategy.blind.AbstractCallableBinary;
import com.jsql.view.swing.util.UiUtil;

import javax.swing.*;
import java.awt.*;
import java.util.List;

public class CenterRendererWithIcon extends CenterRenderer {
    
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        Object text = ((List<?>) value).get(0);
        Object objectCallableBoolean = ((List<?>) value).get(1);
        
        if (objectCallableBoolean != null) {
            AbstractCallableBinary<?> callableBoolean = (AbstractCallableBinary<?>) objectCallableBoolean;
            String charText = callableBoolean.getCharText();
            if (charText != null && charText.charAt(0) >= 32) {
                text += ":" + callableBoolean.getCharText();
            }
        }

        JLabel label = (JLabel) super.getTableCellRendererComponent(table, text, isSelected, hasFocus, row, column);
        label.setIcon(null);  // required to remove icon as same renderer applies to subsequent labels

        if (column == 3 && objectCallableBoolean != null) {
            AbstractCallableBinary<?> callableBoolean = (AbstractCallableBinary<?>) objectCallableBoolean;
            if (!callableBoolean.isMultibit()) {
                label.setIcon(callableBoolean.isTrue() ? UiUtil.TICK_GREEN.getIcon() : UiUtil.CROSS_RED.getIcon());
            }
        }
        return label;
    }
}