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}