X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2FAlignmentViewport.java;h=67db6fcc48c096a8b53fb4511661bcaf04434cf7;hb=67f546e39d0c247fef34a5fbb7ac841be7bae5be;hp=3a40a1689b42b76e4d87f6db3f8acb9edb8b2e14;hpb=7b0ab0889b9ecaf301c2259fe63e843fa9a895b3;p=jalview.git diff --git a/src/jalview/viewmodel/AlignmentViewport.java b/src/jalview/viewmodel/AlignmentViewport.java index 3a40a16..67db6fc 100644 --- a/src/jalview/viewmodel/AlignmentViewport.java +++ b/src/jalview/viewmodel/AlignmentViewport.java @@ -30,6 +30,7 @@ import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.AlignmentView; import jalview.datamodel.Annotation; +import jalview.datamodel.CigarArray; import jalview.datamodel.ColumnSelection; import jalview.datamodel.Sequence; import jalview.datamodel.SequenceCollectionI; @@ -47,10 +48,10 @@ import jalview.workers.StrucConsensusThread; import java.awt.Color; import java.util.ArrayList; import java.util.BitSet; +import java.util.HashMap; import java.util.Hashtable; import java.util.List; import java.util.Map; -import java.util.Vector; /** * base class holding visualization and analysis attributes and common logic for @@ -63,8 +64,13 @@ public abstract class AlignmentViewport implements AlignViewportI, ViewStyleI { protected ViewStyleI viewStyle = new ViewStyle(); - - + + /** + * A viewport that hosts the cDna view of this (protein), or vice versa (if + * set). + */ + AlignViewportI codingComplement = null; + /** * @param name * @see jalview.api.ViewStyleI#setFontName(java.lang.String) @@ -1127,7 +1133,7 @@ public abstract class AlignmentViewport implements AlignViewportI, protected boolean showConsensus = true; - Hashtable sequenceColours; + private Map sequenceColours = new HashMap(); /** * Property change listener for changes in alignment @@ -1364,9 +1370,6 @@ public abstract class AlignmentViewport implements AlignViewportI, } @Override - public abstract void sendSelection(); - - @Override public void invertColumnSelection() { colSel.invertColumnSelection(0, alignment.getWidth()); @@ -1420,10 +1423,10 @@ public abstract class AlignmentViewport implements AlignViewportI, @Override - public jalview.datamodel.CigarArray getViewAsCigars( + public CigarArray getViewAsCigars( boolean selectedRegionOnly) { - return new jalview.datamodel.CigarArray(alignment, colSel, + return new CigarArray(alignment, colSel, (selectedRegionOnly ? selectionGroup : null)); } @@ -1485,9 +1488,9 @@ public abstract class AlignmentViewport implements AlignViewportI, @Override - public int[][] getVisibleRegionBoundaries(int min, int max) + public List getVisibleRegionBoundaries(int min, int max) { - Vector regions = new Vector(); + ArrayList regions = new ArrayList(); int start = min; int end = max; @@ -1511,7 +1514,7 @@ public abstract class AlignmentViewport implements AlignViewportI, } } - regions.addElement(new int[] + regions.add(new int[] { start, end }); if (colSel != null && colSel.hasHiddenColumns()) @@ -1523,10 +1526,7 @@ public abstract class AlignmentViewport implements AlignViewportI, int[][] startEnd = new int[regions.size()][2]; - regions.copyInto(startEnd); - - return startEnd; - + return regions; } @Override @@ -1877,35 +1877,22 @@ public abstract class AlignmentViewport implements AlignViewportI, viewStyle.setDisplayReferenceSeq(displayReferenceSeq); } + @Override public boolean isColourByReferenceSeq() { return alignment.hasSeqrep() && viewStyle.isColourByReferenceSeq(); } - @Override public Color getSequenceColour(SequenceI seq) { - Color sqc = Color.white; - if (sequenceColours != null) - { - sqc = (Color) sequenceColours.get(seq); - if (sqc == null) - { - sqc = Color.white; - } - } - return sqc; + Color sqc = sequenceColours.get(seq); + return (sqc == null ? Color.white : sqc); } @Override public void setSequenceColour(SequenceI seq, Color col) { - if (sequenceColours == null) - { - sequenceColours = new Hashtable(); - } - if (col == null) { sequenceColours.remove(seq); @@ -1919,10 +1906,6 @@ public abstract class AlignmentViewport implements AlignViewportI, @Override public void updateSequenceIdColours() { - if (sequenceColours == null) - { - sequenceColours = new Hashtable(); - } for (SequenceGroup sg : alignment.getGroups()) { if (sg.idColour != null) @@ -1938,9 +1921,43 @@ public abstract class AlignmentViewport implements AlignViewportI, @Override public void clearSequenceColours() { - sequenceColours = null; + sequenceColours.clear(); }; + @Override + public AlignViewportI getCodingComplement() + { + 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 setCodingComplement(AlignViewportI av) + { + if (this == av) + { + System.err.println("Ignoring recursive setCodingComplement request"); + } + else + { + this.codingComplement = av; + // avoid infinite recursion! + if (av.getCodingComplement() != this) + { + av.setCodingComplement(this); + } + } + } + + @Override + public boolean isNucleotide() + { + return getAlignment() == null ? false : getAlignment().isNucleotide(); + } + FeaturesDisplayedI featuresDisplayed = null; @Override @@ -2081,7 +2098,6 @@ public abstract class AlignmentViewport implements AlignViewportI, { return viewStyle.isShowColourText(); } - /** * @return * @see jalview.api.ViewStyleI#isShowSeqFeaturesHeight()