git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
JAL-3010 fix up bad merge from develop
[jalview.git]
/
src
/
jalview
/
appletgui
/
SeqPanel.java
diff --git
a/src/jalview/appletgui/SeqPanel.java
b/src/jalview/appletgui/SeqPanel.java
index
fc7c46e
..
e07dae6
100644
(file)
--- a/
src/jalview/appletgui/SeqPanel.java
+++ b/
src/jalview/appletgui/SeqPanel.java
@@
-43,7
+43,6
@@
import jalview.util.Comparison;
import jalview.util.MappingUtils;
import jalview.util.MessageManager;
import jalview.viewmodel.AlignmentViewport;
import jalview.util.MappingUtils;
import jalview.util.MessageManager;
import jalview.viewmodel.AlignmentViewport;
-import jalview.viewmodel.ViewportRanges;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.BorderLayout;
import java.awt.Font;
@@
-148,13
+147,13
@@
public class SeqPanel extends Panel implements MouseMotionListener,
void setCursorRow()
{
seqCanvas.cursorY = getKeyboardNo1() - 1;
void setCursorRow()
{
seqCanvas.cursorY = getKeyboardNo1() - 1;
- scrollToVisible();
+ scrollToVisible(true);
}
void setCursorColumn()
{
seqCanvas.cursorX = getKeyboardNo1() - 1;
}
void setCursorColumn()
{
seqCanvas.cursorX = getKeyboardNo1() - 1;
- scrollToVisible();
+ scrollToVisible(true);
}
void setCursorRowAndColumn()
}
void setCursorRowAndColumn()
@@
-167,7
+166,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
{
seqCanvas.cursorX = getKeyboardNo1() - 1;
seqCanvas.cursorY = getKeyboardNo2() - 1;
{
seqCanvas.cursorX = getKeyboardNo1() - 1;
seqCanvas.cursorY = getKeyboardNo2() - 1;
- scrollToVisible();
+ scrollToVisible(true);
}
}
}
}
@@
-176,7
+175,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
SequenceI sequence = av.getAlignment().getSequenceAt(seqCanvas.cursorY);
seqCanvas.cursorX = sequence.findIndex(getKeyboardNo1()) - 1;
SequenceI sequence = av.getAlignment().getSequenceAt(seqCanvas.cursorY);
seqCanvas.cursorX = sequence.findIndex(getKeyboardNo1()) - 1;
- scrollToVisible();
+ scrollToVisible(true);
}
void moveCursor(int dx, int dy)
}
void moveCursor(int dx, int dy)
@@
-202,10
+201,16
@@
public class SeqPanel extends Panel implements MouseMotionListener,
seqCanvas.cursorX = original;
}
}
seqCanvas.cursorX = original;
}
}
- scrollToVisible();
+ scrollToVisible(false);
}
}
- void scrollToVisible()
+ /**
+ * Scroll to make the cursor visible in the viewport.
+ *
+ * @param jump
+ * just jump to the location rather than scrolling
+ */
+ void scrollToVisible(boolean jump)
{
if (seqCanvas.cursorX < 0)
{
{
if (seqCanvas.cursorX < 0)
{
@@
-226,44
+231,34
@@
public class SeqPanel extends Panel implements MouseMotionListener,
}
endEditing();
}
endEditing();
- if (av.getWrapAlignment())
+
+ boolean repaintNeeded = true;
+ if (jump)
{
{
- av.getRanges().scrollToWrappedVisible(seqCanvas.cursorX);
+ // only need to repaint if the viewport did not move, as otherwise it will
+ // get a repaint
+ repaintNeeded = !av.getRanges().setViewportLocation(seqCanvas.cursorX,
+ seqCanvas.cursorY);
}
else
{
}
else
{
- ViewportRanges ranges = av.getRanges();
- HiddenColumns hidden = av.getAlignment().getHiddenColumns();
- while (seqCanvas.cursorY < ranges.getStartSeq())
- {
- ranges.scrollUp(true);
- }
- while (seqCanvas.cursorY > ranges.getEndSeq())
+ if (av.getWrapAlignment())
{
{
- ranges.scrollUp(false);
- }
- while (seqCanvas.cursorX < hidden
- .adjustForHiddenColumns(ranges.getStartRes()))
- {
-
- if (!ranges.scrollRight(false))
- {
- break;
- }
+ av.getRanges().scrollToWrappedVisible(seqCanvas.cursorX);
}
}
- while (seqCanvas.cursorX > hidden
- .adjustForHiddenColumns(ranges.getEndRes()))
+ else
{
{
- if (!ranges.scrollRight(true))
- {
- break;
- }
+ av.getRanges().scrollToVisible(seqCanvas.cursorX,
+ seqCanvas.cursorY);
}
}
setStatusMessage(av.getAlignment().getSequenceAt(seqCanvas.cursorY),
seqCanvas.cursorX, seqCanvas.cursorY);
}
}
setStatusMessage(av.getAlignment().getSequenceAt(seqCanvas.cursorY),
seqCanvas.cursorX, seqCanvas.cursorY);
- seqCanvas.repaint();
+ if (repaintNeeded)
+ {
+ seqCanvas.repaint();
+ }
}
void setSelectionAreaAtCursor(boolean topLeft)
}
void setSelectionAreaAtCursor(boolean topLeft)
@@
-335,7
+330,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
sg.addSequence(sequence, false);
av.setSelectionGroup(sg);
}
sg.addSequence(sequence, false);
av.setSelectionGroup(sg);
}
- ap.paintAlignment(false);
+ ap.paintAlignment(false, false);
av.sendSelection();
}
av.sendSelection();
}
@@
-417,7
+412,6
@@
public class SeqPanel extends Panel implements MouseMotionListener,
* alignment column
* @param seq
* index of sequence in alignment
* alignment column
* @param seq
* index of sequence in alignment
- * @return position of column in sequence or -1 if at gap
*/
void setStatusMessage(SequenceI sequence, int column, int seq)
{
*/
void setStatusMessage(SequenceI sequence, int column, int seq)
{
@@
-653,7
+647,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
if (av.hasHiddenColumns())
{
res = av.getAlignment().getHiddenColumns()
if (av.hasHiddenColumns())
{
res = av.getAlignment().getHiddenColumns()
- .adjustForHiddenColumns(res);
+ .visibleToAbsoluteColumn(res);
}
return res;
}
return res;
@@
-983,7
+977,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
lastMousePress = evt.getPoint();
lastMousePress = evt.getPoint();
- ap.paintAlignment(false);
+ ap.paintAlignment(false, false);
ap.annotationPanel.image = null;
return;
}
ap.annotationPanel.image = null;
return;
}
@@
-1129,9
+1123,9
@@
public class SeqPanel extends Panel implements MouseMotionListener,
{
fixedColumns = true;
int y1 = av.getAlignment().getHiddenColumns()
{
fixedColumns = true;
int y1 = av.getAlignment().getHiddenColumns()
- .getHiddenBoundaryLeft(startres);
+ .getNextHiddenBoundary(true, startres);
int y2 = av.getAlignment().getHiddenColumns()
int y2 = av.getAlignment().getHiddenColumns()
- .getHiddenBoundaryRight(startres);
+ .getNextHiddenBoundary(false, startres);
if ((insertGap && startres > y1 && lastres < y1)
|| (!insertGap && startres < y2 && lastres > y2))
if ((insertGap && startres > y1 && lastres < y1)
|| (!insertGap && startres < y2 && lastres > y2))
@@
-1203,7
+1197,8
@@
public class SeqPanel extends Panel implements MouseMotionListener,
if (sg.getSize() == av.getAlignment().getHeight())
{
if ((av.hasHiddenColumns() && startres < av.getAlignment()
if (sg.getSize() == av.getAlignment().getHeight())
{
if ((av.hasHiddenColumns() && startres < av.getAlignment()
- .getHiddenColumns().getHiddenBoundaryRight(startres)))
+ .getHiddenColumns()
+ .getNextHiddenBoundary(false, startres)))
{
endEditing();
return;
{
endEditing();
return;
@@
-1402,7
+1397,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
{
if (scrollThread != null)
{
{
if (scrollThread != null)
{
- scrollThread.running = false;
+ scrollThread.threadRunning = false;
scrollThread = null;
}
scrollThread = null;
}
@@
-1450,7
+1445,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
{
if (links == null)
{
{
if (links == null)
{
- links = new Vector<String>();
+ links = new Vector<>();
}
links.addAll(sf.links);
}
}
links.addAll(sf.links);
}
@@
-1524,7
+1519,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
}
}
PaintRefresher.Refresh(ap, av.getSequenceSetId());
}
}
PaintRefresher.Refresh(ap, av.getSequenceSetId());
- ap.paintAlignment(needOverviewUpdate);
+ ap.paintAlignment(needOverviewUpdate, needOverviewUpdate);
needOverviewUpdate = false;
changeEndRes = false;
changeStartRes = false;
needOverviewUpdate = false;
changeEndRes = false;
changeStartRes = false;
@@
-1649,7
+1644,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
mouseExited(evt);
}
mouseExited(evt);
}
- if (scrollThread != null)
+ if ((scrollThread != null) && (scrollThread.isRunning()))
{
scrollThread.setEvent(evt);
}
{
scrollThread.setEvent(evt);
}
@@
-1665,9
+1660,9
@@
public class SeqPanel extends Panel implements MouseMotionListener,
oldSeq = 0;
}
oldSeq = 0;
}
- if (scrollThread != null)
+ if ((scrollThread != null) && (scrollThread.isRunning()))
{
{
- scrollThread.running = false;
+ scrollThread.stopScrolling();
scrollThread = null;
}
}
scrollThread = null;
}
}
@@
-1690,9
+1685,9
@@
public class SeqPanel extends Panel implements MouseMotionListener,
{
if (evt == null)
{
{
if (evt == null)
{
- if (scrollThread != null)
+ if ((scrollThread != null) && (scrollThread.isRunning()))
{
{
- scrollThread.running = false;
+ scrollThread.stopScrolling();
scrollThread = null;
}
mouseDragging = false;
scrollThread = null;
}
mouseDragging = false;
@@
-1715,7
+1710,7
@@
public class SeqPanel extends Panel implements MouseMotionListener,
{
MouseEvent evt;
{
MouseEvent evt;
- boolean running = false;
+ private volatile boolean threadRunning = true;
public ScrollThread()
{
public ScrollThread()
{
@@
-1729,14
+1724,18
@@
public class SeqPanel extends Panel implements MouseMotionListener,
public void stopScrolling()
{
public void stopScrolling()
{
- running = false;
+ threadRunning = false;
+ }
+
+ public boolean isRunning()
+ {
+ return threadRunning;
}
@Override
public void run()
{
}
@Override
public void run()
{
- running = true;
- while (running)
+ while (threadRunning)
{
if (evt != null)
{
if (evt != null)
@@
-1745,23
+1744,23
@@
public class SeqPanel extends Panel implements MouseMotionListener,
if (mouseDragging && evt.getY() < 0
&& av.getRanges().getStartSeq() > 0)
{
if (mouseDragging && evt.getY() < 0
&& av.getRanges().getStartSeq() > 0)
{
- running = av.getRanges().scrollUp(true);
+ av.getRanges().scrollUp(true);
}
if (mouseDragging && evt.getY() >= getSize().height && av
.getAlignment().getHeight() > av.getRanges().getEndSeq())
{
}
if (mouseDragging && evt.getY() >= getSize().height && av
.getAlignment().getHeight() > av.getRanges().getEndSeq())
{
- running = av.getRanges().scrollUp(false);
+ av.getRanges().scrollUp(false);
}
if (mouseDragging && evt.getX() < 0)
{
}
if (mouseDragging && evt.getX() < 0)
{
- running = av.getRanges().scrollRight(false);
+ av.getRanges().scrollRight(false);
}
else if (mouseDragging && evt.getX() >= getSize().width)
{
}
else if (mouseDragging && evt.getX() >= getSize().width)
{
- running = av.getRanges().scrollRight(true);
+ av.getRanges().scrollRight(true);
}
}
}
}