- editCommand = 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
- if (av.hasHiddenColumns && !av.colSel.isVisible(seqCanvas.cursorX))\r
- {\r
- int original = seqCanvas.cursorX - dx;\r
- int maxWidth = av.alignment.getWidth();\r
-\r
- while(!av.colSel.isVisible(seqCanvas.cursorX)\r
- && seqCanvas.cursorX<maxWidth\r
- && seqCanvas.cursorX>0)\r
- {\r
- seqCanvas.cursorX += dx;\r
- }\r
-\r
- if(seqCanvas.cursorX>=maxWidth\r
- || !av.colSel.isVisible(seqCanvas.cursorX) )\r
- {\r
- seqCanvas.cursorX = original;\r
- }\r
- }\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.colSel.adjustForHiddenColumns(av.startRes))\r
- {\r
-\r
- if (!ap.scrollRight(false))\r
- break;\r
- }\r
- while (seqCanvas.cursorX > av.colSel.adjustForHiddenColumns(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.getSequences(null).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
- groupEditing = group;\r
- startseq = seqCanvas.cursorY;\r
- lastres = seqCanvas.cursorX;\r
- editSequence(true, seqCanvas.cursorX+getKeyboardNo(keyboardNo1));\r
- endEditing();\r
- }\r
-\r
- void deleteGapAtCursor(boolean group)\r
- {\r
- groupEditing = group;\r
- startseq = seqCanvas.cursorY;\r
- lastres = seqCanvas.cursorX+getKeyboardNo(keyboardNo1);\r
- editSequence(false, seqCanvas.cursorX);\r
- endEditing();\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
-\r
- ap.alignFrame.statusBar.setText(text.toString());\r
-\r
- }\r
- public void mousePressed(MouseEvent evt)\r
- {\r
- lastMousePress = evt.getPoint();\r
-\r
- //For now, ignore the mouseWheel font resizing on Macs\r
- //As the Button2_mask always seems to be true\r
- if ( (evt.getModifiers() & InputEvent.BUTTON2_MASK) ==\r
- InputEvent.BUTTON2_MASK && !av.MAC)\r
- {\r
- mouseWheelPressed = true;\r
- return;\r
- }\r
-\r
- if (evt.isShiftDown()\r
- || evt.isControlDown()\r
- || evt.isAltDown())\r
- {\r
- if (evt.isControlDown() || evt.isAltDown())\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
-\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