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    }