// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.dialogs.validator;
import java.awt.Component;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellRenderer;
import org.openstreetmap.josm.data.validation.Severity;
import org.openstreetmap.josm.data.validation.TestError;
import org.openstreetmap.josm.data.validation.util.MultipleNameVisitor;
import org.openstreetmap.josm.tools.ImageProvider;
/**
* Tree renderer for displaying errors
* @author frsantos
*/
public class ValidatorTreeRenderer extends DefaultTreeCellRenderer {
@Override
public Component getTreeCellRendererComponent(JTree tree, Object value,
boolean selected, boolean expanded, boolean leaf, int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
Object nodeInfo = node.getUserObject();
if (nodeInfo instanceof Severity) {
Severity s = (Severity) nodeInfo;
setIcon(ImageProvider.get("data", s.getIcon()));
} else if (nodeInfo instanceof TestError) {
TestError error = (TestError) nodeInfo;
MultipleNameVisitor v = new MultipleNameVisitor();
v.visit(error.getPrimitives());
setText(v.getText());
setIcon(v.getIcon());
}
return this;
}
}