- }\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
-\r
- seqCanvas.repaint();\r
- }\r
-\r
- void setSelectionAreaAtCursor(boolean topLeft)\r
- {\r
- SequenceI sequence =\r
- (Sequence) av.getAlignment().getSequenceAt(seqCanvas.cursorY);\r
-\r
- if(av.getSelectionGroup()!=null)\r
- {\r
- SequenceGroup sg = av.selectionGroup;\r
- //Find the top and bottom of this group\r
- int min = av.alignment.getHeight(), max = 0;\r
- for(int i=0; i<sg.getSize(); i++)\r
- {\r
- int index = av.alignment.findIndex( sg.getSequenceAt(i) );\r
- if(index > max)\r
- max = index;\r
- if(index < min)\r
- min = index;\r
- }\r
-\r
- max ++;\r
-\r
- if(topLeft)\r
- {\r
- sg.setStartRes(seqCanvas.cursorX);\r
- if(sg.getEndRes()<seqCanvas.cursorX)\r
- sg.setEndRes(seqCanvas.cursorX);\r
-\r
- min = seqCanvas.cursorY;\r
- }\r
- else\r
- {\r
- sg.setEndRes(seqCanvas.cursorX);\r
- if(sg.getStartRes()>seqCanvas.cursorX)\r
- sg.setStartRes(seqCanvas.cursorX);\r
-\r
- max = seqCanvas.cursorY+1;\r
- }\r
-\r
- if(min>max)\r
- {\r
- // Only the user can do this\r
- av.setSelectionGroup(null);\r
- }\r
- else\r
- {\r
- // Now add any sequences between min and max\r
- sg.sequences.removeAllElements();\r
- for (int i = min; i < max; i++)\r
- {\r
- sg.addSequence(av.alignment.getSequenceAt(i), false);\r
- }\r
- }\r
- }\r
-\r
- if (av.getSelectionGroup() == null)\r
- {\r
- SequenceGroup sg = new SequenceGroup();\r
- sg.setStartRes(seqCanvas.cursorX);\r
- sg.setEndRes(seqCanvas.cursorX);\r
- sg.addSequence(sequence, false);\r
- av.setSelectionGroup(sg);\r
- }\r
-\r
-\r
- ap.repaint();\r
- }\r
-\r
- void insertGapAtCursor(boolean group)\r
- {\r
- ap.alignFrame.addHistoryItem(new HistoryItem("Edit Sequence",\r
- av.alignment, HistoryItem.EDIT));\r
- groupEditing = group;\r
- startseq = seqCanvas.cursorY;\r
- lastres = seqCanvas.cursorX;\r
- editSequence(true, seqCanvas.cursorX+getKeyboardNo(keyboardNo1));\r
- editOccurred();\r
- }\r
-\r
- void deleteGapAtCursor(boolean group)\r
- {\r
- ap.alignFrame.addHistoryItem(new HistoryItem("Edit Sequence",\r
- av.alignment, HistoryItem.EDIT));\r
- groupEditing = group;\r
- startseq = seqCanvas.cursorY;\r
- lastres = seqCanvas.cursorX+getKeyboardNo(keyboardNo1);\r
- editSequence(false, seqCanvas.cursorX);\r
- editOccurred();\r
- }\r
-\r
- void numberPressed(char value)\r
- {\r
- if(keyboardNo1==null)\r
- keyboardNo1 = new StringBuffer();\r
-\r
- if(keyboardNo2!=null)\r
- keyboardNo2.append(value);\r
- else\r
- keyboardNo1.append(value);\r
- }\r
-\r
- int getKeyboardNo(StringBuffer kb)\r
- {\r
- if(kb==null)\r
- return 1;\r
- else\r
- return Integer.parseInt(kb.toString());\r
- }\r
-\r
- void setStatusMessage(SequenceI sequence, int res, int seq)\r
- {\r
- StringBuffer text = new StringBuffer("Sequence " + (seq + 1) + " ID: " +\r
- sequence.getName());\r
-\r
- Object obj = null;\r
- if (av.alignment.isNucleotide())\r
- {\r
- obj = ResidueProperties.nucleotideName.get(sequence.getCharAt(res) +\r
- "");\r
- if (obj != null)\r
- text.append(" Nucleotide: ");\r
- }\r
- else\r
- {\r
- obj = ResidueProperties.aa2Triplet.get(sequence.getCharAt(res) + "");\r
- if (obj != null)\r
- text.append(" Residue: ");\r
- }\r
-\r
- if (obj != null)\r
- {\r
-\r
- if (obj != "")\r
- {\r
- text.append(obj + " (" + sequence.findPosition(res) +\r
- ")");\r
- }\r
- }\r
- ap.alignFrame.statusBar.setText(text.toString());\r
-\r
- }\r
- public void mousePressed(MouseEvent evt)\r
- {\r
- if (evt.isShiftDown() || evt.isAltDown() ||\r
- evt.isControlDown())\r
- {\r
- if (evt.isAltDown() || evt.isControlDown())\r
- {\r
- groupEditing = true;\r
- }\r
- editingSeqs = true;\r
- }\r
- else\r
- {\r
- doMousePressedDefineMode(evt);\r
- return;\r
- }\r
-\r
-\r
- int seq = findSeq(evt);\r
- int res = findRes(evt);\r
-\r
- if(seq<0 || res<0)\r
- return;\r
-\r
- ap.alignFrame.addHistoryItem(new HistoryItem("Edit Sequence",\r
- av.alignment, HistoryItem.EDIT));\r
-\r
- if ((seq < av.getAlignment().getHeight()) &&\r
- (res < av.getAlignment().getSequenceAt(seq).getLength()))\r
- {\r
- startseq = seq;\r
- lastres = res;\r
- }\r
- else\r
- {\r
- startseq = -1;\r
- lastres = -1;\r
- }\r