From a300ed430003b3c0af3f1badee464c0f40de63a0 Mon Sep 17 00:00:00 2001 From: gmungoc Date: Mon, 17 Nov 2014 13:26:47 +0000 Subject: [PATCH] JAL-1293 hide/show sequence annotations with hide/reveal sequences --- src/jalview/datamodel/HiddenSequences.java | 22 ++++++++------- src/jalview/viewmodel/AlignmentViewport.java | 37 ++++++++++++++++++++------ 2 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/jalview/datamodel/HiddenSequences.java b/src/jalview/datamodel/HiddenSequences.java index aefb5cc..bfeafd6 100755 --- a/src/jalview/datamodel/HiddenSequences.java +++ b/src/jalview/datamodel/HiddenSequences.java @@ -20,7 +20,9 @@ */ package jalview.datamodel; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; public class HiddenSequences { @@ -143,34 +145,34 @@ public class HiddenSequences alignment.deleteSequence(sequence); } - public Vector showAll( + public List showAll( Map hiddenRepSequences) { - Vector revealedSeqs = new Vector(); + List revealedSeqs = new ArrayList(); for (int i = 0; i < hiddenSequences.length; i++) { if (hiddenSequences[i] != null) { - Vector tmp = showSequence(i, hiddenRepSequences); - for (int t = 0; t < tmp.size(); t++) + List tmp = showSequence(i, hiddenRepSequences); + for (SequenceI seq : tmp) { - revealedSeqs.addElement(tmp.elementAt(t)); + revealedSeqs.add(seq); } } } return revealedSeqs; } - public Vector showSequence(int alignmentIndex, + public List showSequence(int alignmentIndex, Map hiddenRepSequences) { - Vector revealedSeqs = new Vector(); + List revealedSeqs = new ArrayList(); SequenceI repSequence = alignment.getSequenceAt(alignmentIndex); if (repSequence != null && hiddenRepSequences != null && hiddenRepSequences.containsKey(repSequence)) { hiddenRepSequences.remove(repSequence); - revealedSeqs.addElement(repSequence); + revealedSeqs.add(repSequence); } int start = adjustForHiddenSeqs(alignmentIndex - 1); @@ -192,7 +194,7 @@ public class HiddenSequences { if (seq.getLength() > 0) { - revealedSeqs.addElement(seq); + revealedSeqs.add(seq); asequences.add(alignmentIndex, seq); } else diff --git a/src/jalview/viewmodel/AlignmentViewport.java b/src/jalview/viewmodel/AlignmentViewport.java index 0fa4a3c..1b42faf 100644 --- a/src/jalview/viewmodel/AlignmentViewport.java +++ b/src/jalview/viewmodel/AlignmentViewport.java @@ -20,7 +20,6 @@ */ package jalview.viewmodel; -import jalview.analysis.AAFrequency; import jalview.analysis.Conservation; import jalview.api.AlignCalcManagerI; import jalview.api.AlignViewportI; @@ -35,7 +34,6 @@ import jalview.datamodel.SequenceCollectionI; import jalview.datamodel.SequenceGroup; import jalview.datamodel.SequenceI; import jalview.schemes.Blosum62ColourScheme; -import jalview.schemes.ClustalxColourScheme; import jalview.schemes.ColourSchemeI; import jalview.schemes.PIDColourScheme; import jalview.schemes.ResidueProperties; @@ -447,7 +445,9 @@ public abstract class AlignmentViewport implements AlignViewportI AlignmentAnnotation alignmentAnnotation) { if (!alignmentAnnotation.autoCalculated) + { return false; + } if (calculator.workingInvolvedWith(alignmentAnnotation)) { // System.err.println("grey out ("+alignmentAnnotation.label+")"); @@ -899,11 +899,12 @@ public abstract class AlignmentViewport implements AlignViewportI selectionGroup = new SequenceGroup(); selectionGroup.setEndRes(alignment.getWidth() - 1); } - Vector tmp = alignment.getHiddenSequences().showAll( + List tmp = alignment.getHiddenSequences().showAll( hiddenRepSequences); - for (int t = 0; t < tmp.size(); t++) + for (SequenceI seq : tmp) { - selectionGroup.addSequence((SequenceI) tmp.elementAt(t), false); + selectionGroup.addSequence(seq, false); + setSequenceAnnotationsVisible(seq, true); } hasHiddenRows = false; @@ -918,7 +919,8 @@ public abstract class AlignmentViewport implements AlignViewportI public void showSequence(int index) { - Vector tmp = alignment.getHiddenSequences().showSequence(index, + List tmp = alignment.getHiddenSequences().showSequence( + index, hiddenRepSequences); if (tmp.size() > 0) { @@ -928,9 +930,10 @@ public abstract class AlignmentViewport implements AlignViewportI selectionGroup.setEndRes(alignment.getWidth() - 1); } - for (int t = 0; t < tmp.size(); t++) + for (SequenceI seq : tmp) { - selectionGroup.addSequence((SequenceI) tmp.elementAt(t), false); + selectionGroup.addSequence(seq, false); + setSequenceAnnotationsVisible(seq, true); } // JBPNote: refactor: only update flag if we modified visiblity (used to // do this regardless) @@ -964,12 +967,30 @@ public abstract class AlignmentViewport implements AlignViewportI for (int i = 0; i < seq.length; i++) { alignment.getHiddenSequences().hideSequence(seq[i]); + setSequenceAnnotationsVisible(seq[i], false); } hasHiddenRows = true; firePropertyChange("alignment", null, alignment.getSequences()); } } + /** + * Set visibility for any annotations for the given sequence. + * + * @param sequenceI + */ + protected void setSequenceAnnotationsVisible(SequenceI sequenceI, + boolean visible) + { + for (AlignmentAnnotation ann : alignment.getAlignmentAnnotation()) + { + if (ann.sequenceRef == sequenceI) + { + ann.visible = visible; + } + } + } + public void hideRepSequences(SequenceI repSequence, SequenceGroup sg) { int sSize = sg.getSize(); -- 1.7.10.2