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 }