X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fviewmodel%2FAlignmentViewport.java;h=d49572d8f3dbfee689d64fdb9fe53bd3cf868dc1;hb=dfa04e77181fccfa6229ffef1591fc9c622d9b39;hp=dc352f40fa480b11feccad963c9d048c072c4100;hpb=e3ff86bf4b17ec3cf58bfe8fdb152bfc431765b3;p=jalview.git diff --git a/src/jalview/viewmodel/AlignmentViewport.java b/src/jalview/viewmodel/AlignmentViewport.java index dc352f4..d49572d 100644 --- a/src/jalview/viewmodel/AlignmentViewport.java +++ b/src/jalview/viewmodel/AlignmentViewport.java @@ -1,6 +1,6 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8) - * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1) + * Copyright (C) 2014 The Jalview Authors * * This file is part of Jalview. * @@ -14,6 +14,7 @@ * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. */ package jalview.viewmodel; @@ -40,7 +41,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 +786,8 @@ public abstract class AlignmentViewport implements AlignViewportI protected boolean showConsensus = true; + Hashtable sequenceColours; + /** * Property change listener for changes in alignment * @@ -1413,7 +1418,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 +1432,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; @@ -1504,8 +1505,7 @@ public abstract class AlignmentViewport implements AlignViewportI if (aan[an].autoCalculated && aan[an].groupRef != null) { oldrfs.add(aan[an].groupRef); - alignment.deleteAnnotation(aan[an]); - aan[an] = null; + alignment.deleteAnnotation(aan[an],false); } } } @@ -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; + }; }