From: jprocter Date: Tue, 28 Aug 2012 13:19:24 +0000 (+0100) Subject: JAL-1145 patch: sequence associated annotation with graphGroups>-1 have relocated... X-Git-Tag: Jalview_2_9~386 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=f186f2abe25325f1cb9da40d1e8623d6bfa781a8;hp=a825b584a274cdabbaf79949a809ecf848f630d5;p=jalview.git JAL-1145 patch: sequence associated annotation with graphGroups>-1 have relocated groups in destination alignment --- diff --git a/src/jalview/gui/AlignFrame.java b/src/jalview/gui/AlignFrame.java index e71e649..a50e724 100755 --- a/src/jalview/gui/AlignFrame.java +++ b/src/jalview/gui/AlignFrame.java @@ -1781,6 +1781,8 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, } int alwidth = 0; + ArrayList newGraphGroups=new ArrayList(); + int fgroup=-1; if (newAlignment) { @@ -1848,6 +1850,16 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { newDs.clear(); // tidy up } + if (alignment.getAlignmentAnnotation()!=null) + { + for (AlignmentAnnotation alan:alignment.getAlignmentAnnotation()) + { + if (alan.graphGroup>fgroup) + { + fgroup=alan.graphGroup; + } + } + } if (pastedal.getAlignmentAnnotation() != null) { // Add any annotation attached to alignment. @@ -1858,6 +1870,19 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, if (alann[i].sequenceRef == null && !alann[i].autoCalculated) { AlignmentAnnotation newann = new AlignmentAnnotation(alann[i]); + if (newann.graphGroup>-1) + { + if (newGraphGroups.size()<=newann.graphGroup || newGraphGroups.get(newann.graphGroup)==null) + { + for (int q=newGraphGroups.size();q<=newann.graphGroup; q++) + { + newGraphGroups.add(q, null); + } + newGraphGroups.set(newann.graphGroup,new Integer(++fgroup)); + } + newann.graphGroup = newGraphGroups.get(newann.graphGroup).intValue(); + } + newann.padAnnotation(alwidth); alignment.addAnnotation(newann); } @@ -1877,11 +1902,28 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, { if (sequences[i].getAnnotation() != null) { + AlignmentAnnotation newann; for (int a = 0; a < sequences[i].getAnnotation().length; a++) { annotationAdded = true; - sequences[i].getAnnotation()[a].adjustForAlignment(); - sequences[i].getAnnotation()[a].padAnnotation(alwidth); + newann=sequences[i].getAnnotation()[a]; + newann.adjustForAlignment(); + newann.padAnnotation(alwidth); + if (newann.graphGroup>-1) + { + if (newann.graphGroup>-1) + { + if (newGraphGroups.size()<=newann.graphGroup || newGraphGroups.get(newann.graphGroup)==null) + { + for (int q=newGraphGroups.size();q<=newann.graphGroup; q++) + { + newGraphGroups.add(q, null); + } + newGraphGroups.set(newann.graphGroup,new Integer(++fgroup)); + } + newann.graphGroup = newGraphGroups.get(newann.graphGroup).intValue(); + } + } alignment.addAnnotation(sequences[i].getAnnotation()[a]); // annotation // was // duplicated @@ -1921,6 +1963,7 @@ public class AlignFrame extends GAlignFrame implements DropTargetListener, newann.padAnnotation(avwidth); alview[avnum].addAnnotation(newann); // annotation was // duplicated earlier + // TODO JAL-1145 graphGroups are not updated for sequence annotation added to several views. This may cause strangeness alview[avnum].setAnnotationIndex(newann, a); } }