X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSeqPanel.java;h=89e2086a1ebbd81a81e2f2286dc7071a3fc7455c;hb=7724430e3293cbb862d0c50c5308a3b3b0417cac;hp=8e70e35dbabe3e213ce0dfd303a4abbcad8794ae;hpb=3e3378e2ccfea39a2b161600c5a2029716acd1b7;p=jalview.git diff --git a/src/jalview/appletgui/SeqPanel.java b/src/jalview/appletgui/SeqPanel.java index 8e70e35..89e2086 100755 --- a/src/jalview/appletgui/SeqPanel.java +++ b/src/jalview/appletgui/SeqPanel.java @@ -138,6 +138,24 @@ public class SeqPanel { seqCanvas.cursorX += dx; seqCanvas.cursorY += dy; + if (av.hasHiddenColumns && !av.colSel.isVisible(seqCanvas.cursorX)) + { + int original = seqCanvas.cursorX - dx; + int maxWidth = av.alignment.getWidth(); + + while(!av.colSel.isVisible(seqCanvas.cursorX) + && seqCanvas.cursorX0) + { + seqCanvas.cursorX += dx; + } + + if(seqCanvas.cursorX>=maxWidth + || !av.colSel.isVisible(seqCanvas.cursorX) ) + { + seqCanvas.cursorX = original; + } + } scrollToVisible(); } @@ -169,13 +187,13 @@ public class SeqPanel { ap.scrollUp(false); } - while (seqCanvas.cursorX < av.startRes) + while (seqCanvas.cursorX < av.colSel.adjustForHiddenColumns(av.startRes)) { if (!ap.scrollRight(false)) break; } - while (seqCanvas.cursorX > av.endRes) + while (seqCanvas.cursorX > av.colSel.adjustForHiddenColumns(av.endRes)) { if (!ap.scrollRight(true)) break; @@ -197,7 +215,7 @@ public class SeqPanel SequenceGroup sg = av.selectionGroup; //Find the top and bottom of this group int min = av.alignment.getHeight(), max = 0; - for(int i=0; i max) @@ -233,7 +251,7 @@ public class SeqPanel else { // Now add any sequences between min and max - sg.getSequences(false).removeAllElements(); + sg.getSequences(null).removeAllElements(); for (int i = min; i < max; i++) { sg.addSequence(av.alignment.getSequenceAt(i), false); @@ -712,24 +730,18 @@ public class SeqPanel boolean fixedColumns = false; SequenceGroup sg = av.getSelectionGroup(); + SequenceI seq = av.alignment.getSequenceAt(startseq); if (!groupEditing && av.hasHiddenRows) { - if (av.alignment.getSequenceAt(startseq).getHiddenSequences() != null) + if (av.hiddenRepSequences!=null + && av.hiddenRepSequences.containsKey(seq)) { + sg = (SequenceGroup)av.hiddenRepSequences.get(seq); groupEditing = true; - } - } - - //No group, but the sequence may represent a group - if (groupEditing - && sg == null - && av.alignment.getSequenceAt(startseq).getHiddenSequences() == null) - { - groupEditing = false; + } } - SequenceI seq = av.alignment.getSequenceAt(startseq); StringBuffer message = new StringBuffer(); if (groupEditing) { @@ -758,7 +770,7 @@ public class SeqPanel //Are we editing within a selection group? if (groupEditing - || (sg != null && sg.getSequences(true).contains(seq))) + || (sg != null && sg.getSequences(av.hiddenRepSequences).contains(seq))) { fixedColumns = true; @@ -766,9 +778,7 @@ public class SeqPanel //but the sequence represents a group if (sg == null) { - sg = new SequenceGroup(null, null, false, false, false, 0, - av.alignment.getWidth()-1); - sg.addSequence(av.alignment.getSequenceAt(startseq), false); + sg = (SequenceGroup) av.hiddenRepSequences.get(seq); } fixedLeft = sg.getStartRes(); @@ -827,7 +837,7 @@ public class SeqPanel if (groupEditing) { - Vector vseqs = sg.getSequences(true); + Vector vseqs = sg.getSequences(av.hiddenRepSequences); int g, groupSize = vseqs.size(); SequenceI[] groupSeqs = new SequenceI[groupSize]; for (g = 0; g < groupSeqs.length; g++) @@ -875,7 +885,7 @@ public class SeqPanel if (!blank) { - if(sg.getSize(false) == av.alignment.getHeight() ) + if(sg.getSize() == av.alignment.getHeight() ) { if((av.hasHiddenColumns && startres res || stretchGroup.getEndRes() < res) { @@ -1227,7 +1237,7 @@ public class SeqPanel if (stretchGroup.cs instanceof ClustalxColourScheme) { ( (ClustalxColourScheme) stretchGroup.cs).resetClustalX( - stretchGroup.getSequences(true), + stretchGroup.getSequences(av.hiddenRepSequences), stretchGroup.getWidth()); } @@ -1337,7 +1347,7 @@ public class SeqPanel Sequence nextSeq = (Sequence) av.getAlignment().getSequenceAt(oldSeq); - if (stretchGroup.getSequences(false).contains(nextSeq)) + if (stretchGroup.getSequences(null).contains(nextSeq)) { stretchGroup.deleteSequence(seq, false); }