X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FAlignmentAnnotationUtils.java;fp=src%2Fjalview%2Fanalysis%2FAlignmentAnnotationUtils.java;h=9bdbf7352a57513df57587766dc930e0243d5ebc;hb=49a7daf06cb98b45ce2d33ea25b15172c4204dda;hp=b5f77fd314c066e28f407097ead14535937a2c32;hpb=227ee1c1c69c228b67d408a0a83ae51bf5811272;p=jalview.git diff --git a/src/jalview/analysis/AlignmentAnnotationUtils.java b/src/jalview/analysis/AlignmentAnnotationUtils.java index b5f77fd..9bdbf73 100644 --- a/src/jalview/analysis/AlignmentAnnotationUtils.java +++ b/src/jalview/analysis/AlignmentAnnotationUtils.java @@ -129,21 +129,28 @@ public class AlignmentAnnotationUtils } } /* - * finally add the 'composite group labels' to the appropriate lists, - * depending on whether the group is identified as visible or hidden + * Finally add the 'composite group labels' to the appropriate lists, + * depending on whether the group is identified as visible or hidden. Don't + * add the same label more than once (there may be many graph groups that + * generate it). */ for (String calcId : groupLabels.keySet()) { for (int group : groupLabels.get(calcId).keySet()) { final List groupLabel = groupLabels.get(calcId).get(group); + // don't want to duplicate 'same types in different order' + Collections.sort(groupLabel); if (visibleGraphGroups.get(group)) { if (!shownTypes.containsKey(calcId)) { shownTypes.put(calcId, new ArrayList>()); } - shownTypes.get(calcId).add(groupLabel); + if (!shownTypes.get(calcId).contains(groupLabel)) + { + shownTypes.get(calcId).add(groupLabel); + } } else { @@ -151,7 +158,10 @@ public class AlignmentAnnotationUtils { hiddenTypes.put(calcId, new ArrayList>()); } - hiddenTypes.get(calcId).add(groupLabel); + if (!hiddenTypes.get(calcId).contains(groupLabel)) + { + hiddenTypes.get(calcId).add(groupLabel); + } } } } @@ -196,8 +206,7 @@ public class AlignmentAnnotationUtils * @param anns * @return */ - public static List asList( - AlignmentAnnotation[] anns) + public static List asList(AlignmentAnnotation[] anns) { // TODO use AlignmentAnnotationI instead when it exists return (anns == null ? Collections. emptyList()