// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.conflict.tags;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
import javax.swing.UIManager;
import javax.swing.table.TableCellRenderer;
import org.openstreetmap.josm.gui.widgets.JosmComboBox;
public class RelationMemberConflictDecisionRenderer extends JLabel
implements TableCellRenderer, ListCellRenderer<RelationMemberConflictDecisionType> {
private final JosmComboBox<RelationMemberConflictDecisionType> cbDecisionTypes;
protected void resetTableRenderer() {
setOpaque(true);
setFont(UIManager.getFont("Table.font"));
setBackground(UIManager.getColor("Table.background"));
setForeground(UIManager.getColor("Table.foreground"));
}
protected void resetListRenderer() {
setOpaque(true);
setFont(UIManager.getFont("ComboBox.font"));
setBackground(UIManager.getColor("ComboBox.background"));
setForeground(UIManager.getColor("ComboBox.foreground"));
}
/**
* Constructs a new {@code RelationMemberConflictDecisionRenderer}.
*/
public RelationMemberConflictDecisionRenderer() {
cbDecisionTypes = new JosmComboBox<>(RelationMemberConflictDecisionType.values());
cbDecisionTypes.setRenderer(this);
}
/* --------------------------------------------------------------------------------- */
/* TableCellRenderer */
/* --------------------------------------------------------------------------------- */
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
resetTableRenderer();
if (value == null)
return this;
if (isSelected) {
setBackground(UIManager.getColor("Table.selectionBackground"));
setForeground(UIManager.getColor("Table.selectionForeground"));
}
RelationMemberConflictDecisionType decision = (RelationMemberConflictDecisionType) value;
cbDecisionTypes.setSelectedItem(decision);
return cbDecisionTypes;
}
/* --------------------------------------------------------------------------------- */
/* ListCellRenderer */
/* --------------------------------------------------------------------------------- */
@Override
public Component getListCellRendererComponent(
JList<? extends RelationMemberConflictDecisionType> list,
RelationMemberConflictDecisionType decision, int index, boolean isSelected,
boolean cellHasFocus) {
resetListRenderer();
if (isSelected) {
setBackground(UIManager.getColor("ComboBox.selectionBackground"));
setForeground(UIManager.getColor("ComboBox.selectionForeground"));
}
RelationMemberConflictDecisionType.prepareLabel(decision, this);
if (RelationMemberConflictDecisionType.UNDECIDED.equals(decision)) {
setFont(getFont().deriveFont(Font.ITALIC));
}
return this;
}
}