Ticket #17295: 17295.patch

File 17295.patch, 2.2 KB (added by GerdP, 7 years ago)
  • src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java

     
    195195            = OsmValidator.getErrorsBySeverityMessageDescription(errors, filterToUse);
    196196
    197197        final List<TreePath> expandedPaths = new ArrayList<>();
     198        final List<TreePath> severityPaths = new ArrayList<>();
    198199        for (Entry<Severity, Map<String, Map<String, List<TestError>>>> entry: errorsBySeverityMessageDescription.entrySet()) {
    199200            Severity severity = entry.getKey();
    200201            Map<String, Map<String, List<TestError>>> errorsByMessageDescription = entry.getValue();
     
    202203            // Severity node
    203204            final DefaultMutableTreeNode severityNode = new GroupTreeNode(severity);
    204205            rootNode.add(severityNode);
     206            TreePath severityPath = new TreePath(new Object[] {rootNode, severityNode});
     207            severityPaths.add(severityPath);
    205208
    206209            if (oldExpandedRows.contains(severity)) {
    207                 expandedPaths.add(new TreePath(new Object[] {rootNode, severityNode}));
     210                expandedPaths.add(severityPath);
    208211            }
    209212
    210213            final Map<String, List<TestError>> errorsWithEmptyMessageByDescription = errorsByMessageDescription.get("");
     
    271274        }
    272275
    273276        valTreeModel.setRoot(rootNode);
     277        boolean hasExpanded = false;
    274278        for (TreePath path : expandedPaths) {
    275279            this.expandPath(path);
     280            hasExpanded = true;
    276281        }
    277282
    278283        if (selRow >= 0 && selRow < getRowCount()) {
    279284            setSelectionRow(selRow);
    280285            scrollRowToVisible(selRow);
     286            hasExpanded = true;
    281287        }
    282 
     288        if (!hasExpanded && !severityPaths.isEmpty()) {
     289            for (TreePath path : severityPaths) {
     290                expandPath(path);
     291                if (getRowCount() > 10)
     292                    break;
     293            }
     294        }
    283295        invalidationListeners.fireEvent(Runnable::run);
    284296    }
    285297