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 }