package net.gcdc.plugtestcms4.ping; import java.awt.Color; import java.awt.Component; import javax.swing.BorderFactory; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.border.Border; import javax.swing.table.TableCellRenderer; public class PingStatusRenderer extends JLabel implements TableCellRenderer { Border unselectedBorder = null; Border selectedBorder = null; boolean isBordered = true; public PingStatusRenderer (boolean isBordered) { this.isBordered = isBordered; setOpaque (true); } public Component getTableCellRendererComponent ( JTable table, Object pingStatus, boolean isSelected, boolean hasFocus, int row, int column) { final Color newColor; if (pingStatus == null || ! (pingStatus instanceof PingStatus)) newColor = Color.ORANGE; else switch ((PingStatus) pingStatus) { case UNKNOWN: newColor = Color.ORANGE; break; case READY: newColor = Color.GREEN; break; case NOT_READY: newColor = Color.RED; break; default: newColor = Color.ORANGE; break; } setBackground (newColor); if (this.isBordered) { if (isSelected) { if (this.selectedBorder == null) { this.selectedBorder = BorderFactory.createMatteBorder (2, 5, 2, 5, table.getSelectionBackground ()); } setBorder (this.selectedBorder); } else { if (this.unselectedBorder == null) { this.unselectedBorder = BorderFactory.createMatteBorder (2, 5, 2, 5, table.getBackground ()); } setBorder (this.unselectedBorder); } } return this; } }