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 }