001 // License: GPL. See LICENSE file for details. 002 package org.openstreetmap.josm.gui.dialogs.validator; 003 004 import java.awt.Component; 005 006 import javax.swing.JTree; 007 import javax.swing.tree.DefaultMutableTreeNode; 008 import javax.swing.tree.DefaultTreeCellRenderer; 009 010 import org.openstreetmap.josm.data.validation.Severity; 011 import org.openstreetmap.josm.data.validation.TestError; 012 import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor; 013 import org.openstreetmap.josm.tools.ImageProvider; 014 015 /** 016 * Tree renderer for displaying errors 017 * @author frsantos 018 */ 019 public 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 }