+ void endEditing()\r
+ {\r
+ startseq = -1;\r
+ lastres = -1;\r
+ seqEditOccurred = false;\r
+ editingSeqs = false;\r
+ groupEditing = false;\r
+ keyboardNo1 = null;\r
+ keyboardNo2 = null;\r
+ }\r
+\r
+ void setCursorRow()\r
+ {\r
+ seqCanvas.cursorY = getKeyboardNo(keyboardNo1)-1;\r
+ scrollToVisible();\r
+ }\r
+\r
+ void setCursorColumn()\r
+ {\r
+ seqCanvas.cursorX = getKeyboardNo(keyboardNo1)-1;\r
+ scrollToVisible();\r
+ }\r
+\r
+ void setCursorRowAndColumn()\r
+ {\r
+ if(keyboardNo2==null)\r
+ {\r
+ keyboardNo2 = new StringBuffer();\r
+ }\r
+ else\r
+ {\r
+ seqCanvas.cursorX = getKeyboardNo(keyboardNo1) - 1;\r
+ seqCanvas.cursorY = getKeyboardNo(keyboardNo2) - 1;\r
+ scrollToVisible();\r
+ }\r
+ }\r
+\r
+ void setCursorPosition()\r
+ {\r
+ SequenceI sequence =\r
+ (Sequence) av.getAlignment().getSequenceAt(seqCanvas.cursorY);\r
+\r
+ seqCanvas.cursorX = sequence.findIndex(\r
+ getKeyboardNo(keyboardNo1)-1\r
+ );\r
+ scrollToVisible();\r
+ }\r
+\r
+ void moveCursor(int dx, int dy)\r
+ {\r
+ seqCanvas.cursorX += dx;\r
+ seqCanvas.cursorY += dy;\r
+ scrollToVisible();\r
+ }\r
+\r
+ void scrollToVisible()\r
+ {\r
+ if (seqCanvas.cursorX < 0)\r
+ seqCanvas.cursorX = 0;\r
+ else if (seqCanvas.cursorX > av.alignment.getWidth() - 1)\r
+ seqCanvas.cursorX = av.alignment.getWidth() - 1;\r
+\r
+ if (seqCanvas.cursorY < 0)\r
+ seqCanvas.cursorY = 0;\r
+ else if (seqCanvas.cursorY > av.alignment.getHeight() - 1)\r
+ seqCanvas.cursorY = av.alignment.getHeight() - 1;\r
+\r
+\r
+ endEditing();\r
+ if (av.wrapAlignment)\r
+ {\r
+ ap.scrollToWrappedVisible(seqCanvas.cursorX);\r
+ }\r
+ else\r
+ {\r
+ while (seqCanvas.cursorY < av.startSeq)\r
+ {\r
+ ap.scrollUp(true);\r
+ }\r
+ while (seqCanvas.cursorY + 1 > av.endSeq)\r
+ {\r
+ ap.scrollUp(false);\r
+ }\r
+ while (seqCanvas.cursorX < av.startRes)\r
+ {\r
+\r
+ if (!ap.scrollRight(false))\r
+ break;\r
+ }\r
+ while (seqCanvas.cursorX > av.endRes)\r
+ {\r
+ if (!ap.scrollRight(true))\r
+ break;\r
+ }\r
+ }\r
+ setStatusMessage(av.alignment.getSequenceAt(seqCanvas.cursorY),\r
+ seqCanvas.cursorX, seqCanvas.cursorY);\r