Take the chance to display attributes correctly in the designer

This commit is contained in:
Clément Fournier
2018-06-08 21:47:33 +02:00
parent 18df5835ff
commit cb86f2a4b0

View File

@ -6,6 +6,7 @@ package net.sourceforge.pmd.util.fxdesigner;
import java.net.URL;
import java.util.Collections;
import java.util.Iterator;
import java.util.Objects;
import java.util.ResourceBundle;
@ -14,6 +15,7 @@ import org.reactfx.EventStreams;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.ast.xpath.Attribute;
import net.sourceforge.pmd.lang.ast.xpath.AttributeAxisIterator;
import net.sourceforge.pmd.lang.ast.xpath.AttributeNode;
import net.sourceforge.pmd.lang.java.ast.TypeNode;
import net.sourceforge.pmd.lang.symboltable.NameDeclaration;
import net.sourceforge.pmd.util.fxdesigner.model.MetricEvaluator;
@ -138,9 +140,10 @@ public class NodeInfoPanelController implements Initializable {
*/
private static ObservableList<String> getAttributes(Node node) {
ObservableList<String> result = FXCollections.observableArrayList();
AttributeAxisIterator attributeAxisIterator = new AttributeAxisIterator(node);
Iterator<Attribute> attributeAxisIterator = node instanceof AttributeNode ? ((AttributeNode) node).getAttributeIterator() : new AttributeAxisIterator(node);
while (attributeAxisIterator.hasNext()) {
Attribute attribute = attributeAxisIterator.next();
// TODO the display should be handled in a ListCell
result.add(attribute.getName() + " = "
+ ((attribute.getValue() != null) ? attribute.getStringValue() : "null"));
}