Changeset 14907 in josm


Ignore:
Timestamp:
2019-03-19T18:01:44+01:00 (5 weeks ago)
Author:
GerdP
Message:

see #17412: improve code which identifies previously expanded rows
Old code did not work when text was created by concatenating message and description, for example "suspicious tag combination - maxspeed on suspicious object (1)"
New code is simpler and a bit faster.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/validator/ValidatorTreePanel.java

    r14899 r14907  
    184184                        oldExpandedRows.add(userObject);
    185185                    } else if (userObject instanceof String) {
    186                         String msg = (String) userObject;
    187                         int index = msg.lastIndexOf(" (");
    188                         if (index > 0) {
    189                             msg = msg.substring(0, index);
    190                         }
     186                        String msg = removeSize((String) userObject);
    191187                        oldExpandedRows.add(msg);
    192188                    }
     
    215211
    216212            if (oldExpandedRows.contains(severity)) {
    217                 expandedPaths.add(new TreePath(new Object[] {rootNode, severityNode}));
     213                expandedPaths.add(new TreePath(severityNode.getPath()));
    218214            }
    219215
     
    221217            if (errorsWithEmptyMessageByDescription != null) {
    222218                errorsWithEmptyMessageByDescription.forEach((description, noDescriptionErrors) -> {
    223                     final String msg = tr("{0} ({1})", description, noDescriptionErrors.size());
     219                    final String msg = addSize(description, noDescriptionErrors);
    224220                    final DefaultMutableTreeNode messageNode = new DefaultMutableTreeNode(msg);
    225221                    severityNode.add(messageNode);
    226222
    227223                    if (oldExpandedRows.contains(description)) {
    228                         expandedPaths.add(new TreePath(new Object[] {rootNode, severityNode, messageNode}));
     224                        expandedPaths.add(new TreePath(messageNode.getPath()));
    229225                    }
    230226                    // add the matching errors to the current node
     
    243239                    severityNode.add(groupNode);
    244240                    if (oldExpandedRows.contains(message)) {
    245                         expandedPaths.add(new TreePath(new Object[] {rootNode, severityNode, groupNode}));
     241                        expandedPaths.add(new TreePath(groupNode.getPath()));
    246242                    }
    247243                } else {
     
    250246
    251247                errorsByDescription.forEach((description, errorsWithDescription) -> {
    252                     boolean emptyDescription = description == null || description.isEmpty();
    253248                    // Message node
    254                     final String msg;
     249                    final String searchMsg;
    255250                    if (groupNode != null) {
    256                         msg = tr("{0} ({1})", description, errorsWithDescription.size());
    257                     } else if (emptyDescription) {
    258                         msg = tr("{0} ({1})", message, errorsWithDescription.size());
     251                        searchMsg = description;
     252                    } else if (description == null || description.isEmpty()) {
     253                        searchMsg = message;
    259254                    } else {
    260                         msg = tr("{0} - {1} ({2})", message, description, errorsWithDescription.size());
     255                        searchMsg = message + " - " + description;
    261256                    }
     257                    final String msg = addSize(searchMsg, errorsWithDescription);
     258
    262259                    final DefaultMutableTreeNode messageNode = new DefaultMutableTreeNode(msg);
    263                     if (groupNode != null) {
    264                         groupNode.add(messageNode);
    265                     } else {
    266                         severityNode.add(messageNode);
    267                     }
    268 
    269                     if (oldExpandedRows.contains(description) || (emptyDescription && oldExpandedRows.contains(message))) {
    270                         if (groupNode != null) {
    271                             expandedPaths.add(new TreePath(new Object[] {rootNode, severityNode, groupNode, messageNode}));
    272                         } else {
    273                             expandedPaths.add(new TreePath(new Object[] {rootNode, severityNode, messageNode}));
    274                         }
     260                    DefaultMutableTreeNode  currNode = groupNode != null ? groupNode : severityNode;
     261                    currNode.add(messageNode);
     262                    if (oldExpandedRows.contains(searchMsg)) {
     263                        expandedPaths.add(new TreePath(messageNode.getPath()));
    275264                    }
    276265
     
    300289            String msg = null;
    301290            if (searchObject instanceof String) {
    302                 msg = (String) searchObject;
    303                 int index = msg.lastIndexOf(" (");
    304                 if (index > 0) {
    305                     msg = msg.substring(0, index);
    306                 }
     291                msg = removeSize((String) searchObject);
    307292            }
    308293            String searchString = msg;
     
    338323    }
    339324
     325    private static String addSize(String msg, Collection<?> coll) {
     326        return msg + " (" + coll.size() + ")";
     327    }
     328
     329    private static String removeSize(String msg) {
     330        int index = msg.lastIndexOf(" (");
     331        return index > 0 ? msg.substring(0, index) : msg;
     332    }
     333
    340334    /**
    341335     * Sort list of errors in place (#8517).
Note: See TracChangeset for help on using the changeset viewer.