001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.conflict.tags; 003 004import java.awt.Component; 005import java.awt.Font; 006 007import javax.swing.JLabel; 008import javax.swing.JList; 009import javax.swing.JTable; 010import javax.swing.ListCellRenderer; 011import javax.swing.UIManager; 012import javax.swing.table.TableCellRenderer; 013 014import org.openstreetmap.josm.gui.widgets.JosmComboBox; 015 016public 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 @Override 043 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, 044 int row, int column) { 045 resetTableRenderer(); 046 if (value == null) 047 return this; 048 049 if (isSelected) { 050 setBackground(UIManager.getColor("Table.selectionBackground")); 051 setForeground(UIManager.getColor("Table.selectionForeground")); 052 } 053 RelationMemberConflictDecisionType decision = (RelationMemberConflictDecisionType)value; 054 cbDecisionTypes.setSelectedItem(decision); 055 return cbDecisionTypes; 056 } 057 058 /* --------------------------------------------------------------------------------- */ 059 /* ListCellRenderer */ 060 /* --------------------------------------------------------------------------------- */ 061 @Override 062 public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, 063 boolean cellHasFocus) { 064 resetListRenderer(); 065 if (isSelected) { 066 setBackground(UIManager.getColor("ComboBox.selectionBackground")); 067 setForeground(UIManager.getColor("ComboBox.selectionForeground")); 068 } 069 RelationMemberConflictDecisionType decision = (RelationMemberConflictDecisionType)value; 070 RelationMemberConflictDecisionType.prepareLabel(decision, this); 071 if (RelationMemberConflictDecisionType.UNDECIDED.equals(decision)) { 072 setFont(getFont().deriveFont(Font.ITALIC)); 073 } 074 return this; 075 } 076}