001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.dialogs.validator;
003
004import java.awt.Component;
005
006import javax.swing.JTree;
007import javax.swing.tree.DefaultMutableTreeNode;
008import javax.swing.tree.DefaultTreeCellRenderer;
009
010import org.openstreetmap.josm.data.validation.Severity;
011import org.openstreetmap.josm.data.validation.TestError;
012import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor;
013import org.openstreetmap.josm.tools.ImageProvider;
014
015/**
016 * Tree renderer for displaying errors
017 * @author frsantos
018 */
019public class ValidatorTreeRenderer extends DefaultTreeCellRenderer {
020
021    @Override
022    public Component getTreeCellRendererComponent(JTree tree, Object value,
023            boolean selected, boolean expanded, boolean leaf, int row,
024            boolean hasFocus) {
025        super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
026
027        DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
028        Object nodeInfo = node.getUserObject();
029
030        if (nodeInfo instanceof Severity) {
031            Severity s = (Severity) nodeInfo;
032            setIcon(ImageProvider.get("data", s.getIcon()));
033        } else if (nodeInfo instanceof TestError) {
034            TestError error = (TestError) nodeInfo;
035            MultipleNameVisitor v = error.getNameVisitor();
036            setText(v.getText());
037            setIcon(v.getIcon());
038        }
039        return this;
040    }
041}