001 // License: GPL. For details, see LICENSE file.
002 package org.openstreetmap.josm.gui.conflict.pair.tags;
003
004 import java.awt.Component;
005 import java.text.MessageFormat;
006
007 import javax.swing.JLabel;
008 import javax.swing.JTable;
009 import javax.swing.table.TableCellRenderer;
010
011 import org.openstreetmap.josm.gui.conflict.ConflictColors;
012
013 public abstract class TagMergeTableCellRenderer extends JLabel implements TableCellRenderer {
014
015 protected abstract void renderKey(TagMergeItem item, boolean isSelected );
016
017 protected abstract void renderValue(TagMergeItem item, boolean isSelected);
018
019 protected void reset() {
020 setOpaque(true);
021 setBackground(ConflictColors.BGCOLOR.get());
022 setForeground(ConflictColors.FGCOLOR.get());
023 }
024
025 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
026 int col) {
027
028 reset();
029 if (value == null)
030 return this;
031
032 TagMergeItem item = (TagMergeItem)value;
033 switch(col) {
034 case 0:
035 renderKey(item, isSelected);
036 break;
037 case 1:
038 renderValue(item, isSelected);
039 break;
040 default:
041 // should not happen, but just in case
042 throw new IllegalArgumentException(MessageFormat.format("Parameter 'col' must be 0 or 1. Got {0}.", col));
043 }
044 return this;
045 }
046
047 }