001// License: GPL. See LICENSE file for details. 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 /** Serializable ID */ 022 private static final long serialVersionUID = 5567632718124640198L; 023 024 @Override 025 public Component getTreeCellRendererComponent(JTree tree, Object value, 026 boolean selected, boolean expanded, boolean leaf, int row, 027 boolean hasFocus) { 028 super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); 029 030 DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; 031 Object nodeInfo = node.getUserObject(); 032 033 if (nodeInfo instanceof Severity) { 034 Severity s = (Severity) nodeInfo; 035 setIcon(ImageProvider.get("data", s.getIcon())); 036 } else if (nodeInfo instanceof TestError) { 037 TestError error = (TestError) nodeInfo; 038 MultipleNameVisitor v = new MultipleNameVisitor(); 039 v.visit(error.getPrimitives()); 040 setText(v.getText()); 041 setIcon(v.getIcon()); 042 } 043 return this; 044 } 045}