001 // License: GPL. For details, see LICENSE file. 002 package org.openstreetmap.josm.gui.conflict.tags; 003 004 import java.awt.Component; 005 import java.awt.Font; 006 007 import javax.swing.JLabel; 008 import javax.swing.JList; 009 import javax.swing.JTable; 010 import javax.swing.ListCellRenderer; 011 import javax.swing.UIManager; 012 import javax.swing.table.TableCellRenderer; 013 014 import org.openstreetmap.josm.gui.widgets.JosmComboBox; 015 016 public class RelationMemberConflictDecisionRenderer extends JLabel implements TableCellRenderer, ListCellRenderer{ 017 018 private JosmComboBox cbDecisionTypes; 019 020 protected void resetTableRenderer() { 021 setOpaque(true); 022 setFont(UIManager.getFont("Table.font")); 023 setBackground(UIManager.getColor("Table.background")); 024 setForeground(UIManager.getColor("Table.foreground")); 025 } 026 027 protected void resetListRenderer() { 028 setOpaque(true); 029 setFont(UIManager.getFont("ComboBox.font")); 030 setBackground(UIManager.getColor("ComboBox.background")); 031 setForeground(UIManager.getColor("ComboBox.foreground")); 032 } 033 034 public RelationMemberConflictDecisionRenderer() { 035 cbDecisionTypes = new JosmComboBox(RelationMemberConflictDecisionType.values()); 036 cbDecisionTypes.setRenderer(this); 037 } 038 039 /* --------------------------------------------------------------------------------- */ 040 /* TableCellRenderer */ 041 /* --------------------------------------------------------------------------------- */ 042 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, 043 int row, int column) { 044 resetTableRenderer(); 045 if (value == null) 046 return this; 047 048 if (isSelected) { 049 setBackground(UIManager.getColor("Table.selectionBackground")); 050 setForeground(UIManager.getColor("Table.selectionForeground")); 051 } 052 RelationMemberConflictDecisionType decision = (RelationMemberConflictDecisionType)value; 053 cbDecisionTypes.setSelectedItem(decision); 054 return cbDecisionTypes; 055 } 056 057 /* --------------------------------------------------------------------------------- */ 058 /* ListCellRenderer */ 059 /* --------------------------------------------------------------------------------- */ 060 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, 061 boolean cellHasFocus) { 062 resetListRenderer(); 063 if (isSelected) { 064 setBackground(UIManager.getColor("ComboBox.selectionBackground")); 065 setForeground(UIManager.getColor("ComboBox.selectionForeground")); 066 } 067 RelationMemberConflictDecisionType decision = (RelationMemberConflictDecisionType)value; 068 RelationMemberConflictDecisionType.prepareLabel(decision, this); 069 if (RelationMemberConflictDecisionType.UNDECIDED.equals(decision)) { 070 setFont(getFont().deriveFont(Font.ITALIC)); 071 } 072 return this; 073 } 074 }