*/
package jalview.viewmodel;
-import java.awt.Color;
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Deque;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
import jalview.analysis.AnnotationSorter.SequenceAnnotationOrder;
import jalview.analysis.Conservation;
import jalview.api.AlignCalcManagerI;
import jalview.workers.ConsensusThread;
import jalview.workers.StrucConsensusThread;
+import java.awt.Color;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.BitSet;
+import java.util.Deque;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
/**
* base class holding visualization and analysis attributes and common logic for
* an active alignment view displayed in the GUI
*
*/
public abstract class AlignmentViewport implements AlignViewportI,
- ViewStyleI, CommandListener, VamsasSource
+ CommandListener, VamsasSource
{
protected ViewStyleI viewStyle = new ViewStyle();
}
/**
- * @param selected
- * @see jalview.api.ViewStyleI#setShowSeqFeaturesHeight(boolean)
- */
- public void setShowSeqFeaturesHeight(boolean selected)
- {
- viewStyle.setShowSeqFeaturesHeight(selected);
- }
-
- /**
* alignment displayed in the viewport. Please use get/setter
*/
protected AlignmentI alignment;
// hasHiddenColumns = colSel.hasHiddenColumns();
}
- protected boolean hasHiddenRows = false;
-
@Override
public boolean hasHiddenRows()
{
- return hasHiddenRows;
+ return alignment.getHiddenSequences().getSize() > 0;
}
+
protected SequenceGroup selectionGroup;
public void setSequenceSetId(String newid)
setSequenceAnnotationsVisible(seq, true);
}
- hasHiddenRows = false;
hiddenRepSequences = null;
firePropertyChange("alignment", null, alignment.getSequences());
selectionGroup.addSequence(seq, false);
setSequenceAnnotationsVisible(seq, true);
}
- // JBPNote: refactor: only update flag if we modified visiblity (used to
- // do this regardless)
- if (alignment.getHiddenSequences().getSize() < 1)
- {
- hasHiddenRows = false;
- }
firePropertyChange("alignment", null, alignment.getSequences());
sendSelection();
}
alignment.getHiddenSequences().hideSequence(seq[i]);
setSequenceAnnotationsVisible(seq[i], false);
}
- hasHiddenRows = true;
firePropertyChange("alignment", null, alignment.getSequences());
}
}
@Override
public void setShowSequenceFeaturesHeight(boolean selected)
{
- viewStyle.setShowSeqFeaturesHeight(selected);
+ viewStyle.setShowSequenceFeaturesHeight(selected);
}
@Override
{
return viewStyle.isShowColourText();
}
- /**
- * @return
- * @see jalview.api.ViewStyleI#isShowSeqFeaturesHeight()
- */
- public boolean isShowSeqFeaturesHeight()
- {
- return viewStyle.isShowSeqFeaturesHeight();
- }
/**
* @param conservationColourSelected
*/
protected int findComplementScrollTarget(SearchResults sr)
{
- final AlignViewportI codingComplement = getCodingComplement();
- if (codingComplement == null || !codingComplement.isFollowHighlight())
+ final AlignViewportI complement = getCodingComplement();
+ if (complement == null || !complement.isFollowHighlight())
{
return 0;
}
boolean iAmProtein = !getAlignment().isNucleotide();
AlignmentI proteinAlignment = iAmProtein ? getAlignment()
- : codingComplement.getAlignment();
+ : complement.getAlignment();
if (proteinAlignment == null)
{
return 0;
*/
int seqOffset = 0;
SequenceI sequence = null;
+
+ /*
+ * locate 'middle' column (true middle if an odd number visible, left of
+ * middle if an even number visible)
+ */
int middleColumn = getStartRes() + (getEndRes() - getStartRes()) / 2;
final HiddenSequences hiddenSequences = getAlignment()
.getHiddenSequences();
- for (int seqNo = getStartSeq(); seqNo < getEndSeq(); seqNo++, seqOffset++)
+
+ /*
+ * searching to the bottom of the alignment gives smoother scrolling across all gapped visible regions
+ */
+ int lastSeq = alignment.getHeight() - 1;
+ for (int seqNo = getStartSeq(); seqNo < lastSeq; seqNo++, seqOffset++)
{
sequence = getAlignment().getSequenceAt(seqNo);
if (hiddenSequences != null && hiddenSequences.isHidden(sequence))
.findMappingsForSequence(sequence, mappings);
if (!seqMappings.isEmpty())
{
- break;
+ break;
}
}