blob: 5da0b049981c267c94cb377e4ac7b1c2a0fff542 [file] [log] [blame]
package com.intellij.util.ui.table;
import com.intellij.openapi.util.Iconable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.TableCellRenderer;
import java.awt.*;
public abstract class IconTableCellRenderer<T> extends DefaultTableCellRenderer {
public static final IconTableCellRenderer<Iconable> ICONABLE = new IconTableCellRenderer<Iconable>() {
@Nullable
@Override
protected Icon getIcon(@NotNull Iconable value, JTable table, int row) {
return value.getIcon(Iconable.ICON_FLAG_VISIBILITY);
}
};
public static TableCellRenderer create(@NotNull final Icon icon) {
return new IconTableCellRenderer() {
@Nullable
@Override
protected Icon getIcon(@NotNull Object value, JTable table, int row) {
return icon;
}
};
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean selected, boolean focus, int row, int column) {
super.getTableCellRendererComponent(table, value, selected, focus, row, column);
//noinspection unchecked
setIcon(value == null ? null : getIcon((T)value, table, row));
if (isCenterAlignment()) {
setHorizontalAlignment(CENTER);
setVerticalAlignment(CENTER);
}
return this;
}
protected boolean isCenterAlignment() {
return false;
}
@Nullable
protected abstract Icon getIcon(@NotNull T value, JTable table, int row);
}