001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.conflict.pair.tags; 003 004import java.awt.Component; 005import java.text.MessageFormat; 006 007import javax.swing.JLabel; 008import javax.swing.JTable; 009import javax.swing.table.TableCellRenderer; 010 011import org.openstreetmap.josm.gui.conflict.ConflictColors; 012 013public 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 @Override 026 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, 027 int col) { 028 029 reset(); 030 if (value == null) 031 return this; 032 033 TagMergeItem item = (TagMergeItem)value; 034 switch(col) { 035 case 0: 036 renderKey(item, isSelected); 037 break; 038 case 1: 039 renderValue(item, isSelected); 040 break; 041 default: 042 // should not happen, but just in case 043 throw new IllegalArgumentException(MessageFormat.format("Parameter 'col' must be 0 or 1. Got {0}.", col)); 044 } 045 return this; 046 } 047 048}