// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.history;
import static org.openstreetmap.josm.tools.I18n.tr;
import java.awt.Color;
import java.awt.Component;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
import org.openstreetmap.josm.gui.history.TwoColumnDiff.Item.DiffItemType;
import org.openstreetmap.josm.gui.util.GuiHelper;
import org.openstreetmap.josm.tools.ImageProvider;
public class NodeListTableCellRenderer extends JLabel implements TableCellRenderer {
public static final Color BGCOLOR_SELECTED = new Color(143, 170, 255);
private final ImageIcon nodeIcon;
/**
* Constructs a new {@code NodeListTableCellRenderer}.
*/
public NodeListTableCellRenderer() {
setOpaque(true);
nodeIcon = ImageProvider.get("data", "node");
setIcon(nodeIcon);
}
protected void renderNode(TwoColumnDiff.Item item, boolean isSelected) {
String text = "";
setIcon(nodeIcon);
if (item.value != null) {
text = tr("Node {0}", item.value.toString());
}
Color bgColor = item.state.getColor();
if (item.state == DiffItemType.EMPTY) {
text = "";
setIcon(null);
}
if (isSelected) {
bgColor = BGCOLOR_SELECTED;
}
setText(text);
GuiHelper.setBackgroundReadable(this, bgColor);
}
// Warning: The model pads with null-rows to match the size of the opposite table. 'value' could be null
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if (value != null) {
renderNode((TwoColumnDiff.Item) value, isSelected);
}
return this;
}
}