X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2FAlignmentViewport.java;h=6f3a2af49b835a7f5e8c4380e50d69e97504a1d0;hb=3c947453177af853190071603cc7385c25391c2a;hp=dc352f40fa480b11feccad963c9d048c072c4100;hpb=a6ca346b004955c9db88f437ecafa24919119443;p=jalview.git diff --git a/src/jalview/viewmodel/AlignmentViewport.java b/src/jalview/viewmodel/AlignmentViewport.java index dc352f4..6f3a2af 100644 --- a/src/jalview/viewmodel/AlignmentViewport.java +++ b/src/jalview/viewmodel/AlignmentViewport.java @@ -40,7 +40,9 @@ import jalview.workers.AlignCalcManager; import jalview.workers.ConsensusThread; import jalview.workers.StrucConsensusThread; +import java.awt.Color; import java.util.ArrayList; +import java.util.BitSet; import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -783,6 +785,8 @@ public abstract class AlignmentViewport implements AlignViewportI protected boolean showConsensus = true; + Hashtable sequenceColours; + /** * Property change listener for changes in alignment * @@ -1413,7 +1417,7 @@ public abstract class AlignmentViewport implements AlignViewportI int charHeight = getCharHeight(); if (aa != null) { - boolean graphgrp[] = null; + BitSet graphgrp = new BitSet(); for (int i = 0; i < aa.length; i++) { if (aa[i] == null) @@ -1427,17 +1431,13 @@ public abstract class AlignmentViewport implements AlignViewportI } if (aa[i].graphGroup > -1) { - if (graphgrp == null) - { - graphgrp = new boolean[aa.length]; - } - if (graphgrp[aa[i].graphGroup]) + if (graphgrp.get(aa[i].graphGroup)) { continue; } else { - graphgrp[aa[i].graphGroup] = true; + graphgrp.set(aa[i].graphGroup); } } aa[i].height = 0; @@ -1542,4 +1542,60 @@ public abstract class AlignmentViewport implements AlignViewportI oldrfs.clear(); } + @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; + } + + @Override + public void setSequenceColour(SequenceI seq, Color col) + { + if (sequenceColours == null) + { + sequenceColours = new Hashtable(); + } + + if (col == null) + { + sequenceColours.remove(seq); + } + else + { + sequenceColours.put(seq, col); + } + } + + @Override + public void updateSequenceIdColours() + { + if (sequenceColours == null) + { + sequenceColours = new Hashtable(); + } + for (SequenceGroup sg : alignment.getGroups()) + { + if (sg.idColour != null) + { + for (SequenceI s : sg.getSequences(getHiddenRepSequences())) + { + sequenceColours.put(s, sg.idColour); + } + } + } + } + + @Override + public void clearSequenceColours() + { + sequenceColours = null; + }; }