// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.gui.conflict.pair.tags; import java.awt.Component; import java.text.MessageFormat; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import org.openstreetmap.josm.gui.conflict.ConflictColors; public abstract class TagMergeTableCellRenderer extends JLabel implements TableCellRenderer { protected abstract void renderKey(TagMergeItem item, boolean isSelected); protected abstract void renderValue(TagMergeItem item, boolean isSelected); protected void reset() { setOpaque(true); setBackground(ConflictColors.BGCOLOR.get()); setForeground(ConflictColors.FGCOLOR.get()); } @Override public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int col) { reset(); if (value == null) return this; TagMergeItem item = (TagMergeItem) value; switch(col) { case 0: renderKey(item, isSelected); break; case 1: renderValue(item, isSelected); break; default: // should not happen, but just in case throw new IllegalArgumentException(MessageFormat.format("Parameter 'col' must be 0 or 1. Got {0}.", col)); } return this; } }