X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2FAlignmentViewport.java;h=7145f7b2682c332c342d8e165f0dad88a3f938d5;hb=10ff37d2cb03f342ddbed679951d3e2fef0a404b;hp=ed63e0f1f5ac6fd2fbb5c5839a4c36b2e10d01c2;hpb=95ceead3cb4ea5aa5260e1fd4ab53658b64866e1;p=jalview.git diff --git a/src/jalview/viewmodel/AlignmentViewport.java b/src/jalview/viewmodel/AlignmentViewport.java index ed63e0f..7145f7b 100644 --- a/src/jalview/viewmodel/AlignmentViewport.java +++ b/src/jalview/viewmodel/AlignmentViewport.java @@ -37,6 +37,7 @@ import jalview.schemes.Blosum62ColourScheme; import jalview.schemes.ColourSchemeI; import jalview.schemes.PIDColourScheme; import jalview.schemes.ResidueProperties; +import jalview.util.MappingUtils; import jalview.workers.AlignCalcManager; import jalview.workers.ConsensusThread; import jalview.workers.StrucConsensusThread; @@ -60,9 +61,10 @@ import java.util.Vector; public abstract class AlignmentViewport implements AlignViewportI { /* - * A viewport that is a slave of (driven by) this one in some sense. + * A viewport that hosts the cDna view of this (protein), or vice versa (if + * set). */ - AlignViewportI slave = null; + AlignViewportI codingComplement = null; /** * alignment displayed in the viewport. Please use get/setter @@ -963,6 +965,17 @@ public abstract class AlignmentViewport implements AlignViewportI hideSequence(seqs); + AlignViewportI peer = getCodingComplement(); + if (peer != null) + { + SequenceGroup mappedGroup = MappingUtils.mapSequenceGroup( + selectionGroup, this, peer); + ((AlignmentViewport) peer).hideSequence(mappedGroup + .getSequencesInOrder(peer.getAlignment())); + peer.setSelectionGroup(null); + + } + setSelectionGroup(null); } @@ -1650,21 +1663,36 @@ public abstract class AlignmentViewport implements AlignViewportI }; @Override - public AlignViewportI getSlave() + public AlignViewportI getCodingComplement() { - return this.slave; + return this.codingComplement; } + /** + * Set this as the (cDna/protein) complement of the given viewport. Also + * ensures the reverse relationship is set on the given viewport. + */ @Override - public void setSlave(AlignViewportI sl) + public void setCodingComplement(AlignViewportI av) { - if (this == sl.getSlave()) + if (this == av) { - System.err.println("Ignoring recursive setSlave request"); + System.err.println("Ignoring recursive setCodingComplement request"); } else { - this.slave = sl; + this.codingComplement = av; + // avoid infinite recursion! + if (av.getCodingComplement() != this) + { + av.setCodingComplement(this); + } } } + + @Override + public boolean isNucleotide() + { + return getAlignment() == null ? false : getAlignment().isNucleotide(); + } }