+ 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
+ {\r
+ text.append(" Nucleotide: ");\r
+ }\r
+ }\r
+ else\r
+ {\r
+ obj = ResidueProperties.aa2Triplet.get(sequence.getCharAt(res) + "");\r
+ if (obj != null)\r
+ {\r
+ text.append(" Residue: ");\r
+ }\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
+\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
+ int seq = findSeq(evt);\r
+ int res = findRes(evt);\r
+\r
+ if (seq < 0 || res < 0)\r
+ {\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
+\r
+ return;\r
+ }\r
+\r
+ public void mouseClicked(MouseEvent evt)\r
+ {\r
+ SequenceI sequence = av.alignment.getSequenceAt(findSeq(evt));\r
+ if (evt.getClickCount() > 1)\r
+ {\r
+ if (av.getSelectionGroup().getSize() == 1\r
+ && av.getSelectionGroup().getEndRes()\r
+ - av.getSelectionGroup().getStartRes() < 2)\r
+ {\r
+ av.setSelectionGroup(null);\r
+ }\r
+\r
+ SequenceFeature[] features = findFeaturesAtRes(\r
+ sequence,\r
+ sequence.findPosition(findRes(evt))\r
+ );\r
+\r
+ if (features != null && features.length > 0)\r
+ {\r
+ SearchResults highlight = new SearchResults();\r
+ highlight.addResult(sequence,\r
+ features[0].getBegin(),\r
+ features[0].getEnd());\r
+ seqCanvas.highlightSearchResults(highlight);\r
+ }\r
+ if (features != null && features.length > 0)\r
+ {\r
+ seqCanvas.getFeatureRenderer().amendFeatures(\r
+ new SequenceI[]\r
+ {sequence}, features, false, ap);\r
+\r
+ seqCanvas.highlightSearchResults(null);\r
+ }\r
+ }\r
+ }\r
+\r
+ public void mouseReleased(MouseEvent evt)\r
+ {\r
+ mouseDragging = false;\r
+ mouseWheelPressed = false;\r
+ ap.paintAlignment(true);\r
+\r
+ if (!editingSeqs)\r
+ {\r
+ doMouseReleasedDefineMode(evt);\r
+ return;\r
+ }\r
+\r
+ endEditing();\r
+\r
+ }\r
+\r
+ int startWrapBlock = -1;\r
+ int wrappedBlock = -1;\r
+ int findRes(MouseEvent evt)\r
+ {\r
+ int res = 0;\r