From b5d51c11a6c4218d71f4e10dd0cb0368f04fb20b Mon Sep 17 00:00:00 2001 From: gmungoc Date: Mon, 19 Jan 2015 17:16:11 +0000 Subject: [PATCH] JAL-1636 fix for mouseover of 'X' in translated protein --- src/jalview/appletgui/SeqPanel.java | 62 ++++++++++++++-------------- src/jalview/gui/SeqPanel.java | 31 +++++++------- src/jalview/schemes/ResidueProperties.java | 9 ++-- 3 files changed, 53 insertions(+), 49 deletions(-) diff --git a/src/jalview/appletgui/SeqPanel.java b/src/jalview/appletgui/SeqPanel.java index ba42621..4328459 100644 --- a/src/jalview/appletgui/SeqPanel.java +++ b/src/jalview/appletgui/SeqPanel.java @@ -160,8 +160,7 @@ public class SeqPanel extends Panel implements MouseMotionListener, void setCursorPosition() { - SequenceI sequence = av.getAlignment().getSequenceAt( - seqCanvas.cursorY); + SequenceI sequence = av.getAlignment().getSequenceAt(seqCanvas.cursorY); seqCanvas.cursorX = sequence.findIndex(getKeyboardNo1()) - 1; scrollToVisible(); @@ -253,8 +252,7 @@ public class SeqPanel extends Panel implements MouseMotionListener, void setSelectionAreaAtCursor(boolean topLeft) { - SequenceI sequence = av.getAlignment().getSequenceAt( - seqCanvas.cursorY); + SequenceI sequence = av.getAlignment().getSequenceAt(seqCanvas.cursorY); if (av.getSelectionGroup() != null) { @@ -723,39 +721,38 @@ public class SeqPanel extends Panel implements MouseMotionListener, mouseOverSequence(sequence, res, respos); } - StringBuffer text = new StringBuffer("Sequence " + (seq + 1) + " ID: " - + sequence.getName()); + StringBuilder text = new StringBuilder(); + text.append("Sequence ").append(Integer.toString(seq + 1)) + .append(" ID: ").append(sequence.getName()); - Object obj = null; + String obj = null; + final String ch = String.valueOf(sequence.getCharAt(res)); if (av.getAlignment().isNucleotide()) { - obj = ResidueProperties.nucleotideName.get(sequence.getCharAt(res) - + ""); + obj = ResidueProperties.nucleotideName.get(ch); if (obj != null) { - text.append(" Nucleotide: "); + text.append(" Nucleotide: ").append(obj); } } else { - obj = ResidueProperties.aa2Triplet.get(sequence.getCharAt(res) + ""); + obj = "X".equalsIgnoreCase(ch) ? "STOP" + : ResidueProperties.aa2Triplet.get(ch); if (obj != null) { - text.append(" Residue: "); + text.append(" Residue: ").append(obj); } } if (obj != null) { - if (obj != "") - { - text.append(obj + " (" + respos + ")"); - } + text.append(" (").append(Integer.toString(respos)).append(")"); } ap.alignFrame.statusBar.setText(text.toString()); - StringBuffer tooltipText = new StringBuffer(); + StringBuilder tooltipText = new StringBuilder(); SequenceGroup[] groups = av.getAlignment().findAllGroups(sequence); if (groups != null) { @@ -766,7 +763,7 @@ public class SeqPanel extends Panel implements MouseMotionListener, if (!groups[g].getName().startsWith("JTreeGroup") && !groups[g].getName().startsWith("JGroup")) { - tooltipText.append(groups[g].getName() + " "); + tooltipText.append(groups[g].getName()).append(" "); } if (groups[g].getDescription() != null) { @@ -971,15 +968,18 @@ public class SeqPanel extends Panel implements MouseMotionListener, StringBuffer message = new StringBuffer(); if (groupEditing) { - message.append(MessageManager.getString("action.edit_group")).append(":"); + message.append(MessageManager.getString("action.edit_group")).append( + ":"); if (editCommand == null) { - editCommand = new EditCommand(MessageManager.getString("action.edit_group")); + editCommand = new EditCommand( + MessageManager.getString("action.edit_group")); } } else { - message.append(MessageManager.getString("label.edit_sequence")).append(" " + seq.getName()); + message.append(MessageManager.getString("label.edit_sequence")) + .append(" " + seq.getName()); String label = seq.getName(); if (label.length() > 10) { @@ -987,7 +987,9 @@ public class SeqPanel extends Panel implements MouseMotionListener, } if (editCommand == null) { - editCommand = new EditCommand(MessageManager.formatMessage("label.edit_params", new String[]{label})); + editCommand = new EditCommand(MessageManager.formatMessage( + "label.edit_params", new String[] + { label })); } } @@ -1189,8 +1191,8 @@ public class SeqPanel extends Panel implements MouseMotionListener, } else { - editCommand.appendEdit(Action.INSERT_GAP, groupSeqs, - startres, startres - lastres, av.getAlignment(), true); + editCommand.appendEdit(Action.INSERT_GAP, groupSeqs, startres, + startres - lastres, av.getAlignment(), true); } } else @@ -1205,8 +1207,8 @@ public class SeqPanel extends Panel implements MouseMotionListener, } else { - editCommand.appendEdit(Action.DELETE_GAP, groupSeqs, - startres, lastres - startres, av.getAlignment(), true); + editCommand.appendEdit(Action.DELETE_GAP, groupSeqs, startres, + lastres - startres, av.getAlignment(), true); } } @@ -1301,16 +1303,16 @@ public class SeqPanel extends Panel implements MouseMotionListener, editCommand.appendEdit(Action.DELETE_GAP, seq, blankColumn, 1, av.getAlignment(), true); - editCommand.appendEdit(Action.INSERT_GAP, seq, j, 1, - av.getAlignment(), true); + editCommand.appendEdit(Action.INSERT_GAP, seq, j, 1, av.getAlignment(), + true); } void deleteChar(int j, SequenceI[] seq, int fixedColumn) { - editCommand.appendEdit(Action.DELETE_GAP, seq, j, 1, - av.getAlignment(), true); + editCommand.appendEdit(Action.DELETE_GAP, seq, j, 1, av.getAlignment(), + true); editCommand.appendEdit(Action.INSERT_GAP, seq, fixedColumn, 1, av.getAlignment(), true); diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 2c9b7f6..e923be7 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -830,35 +830,36 @@ public class SeqPanel extends JPanel implements MouseListener, int setStatusMessage(SequenceI sequence, int res, int seq) { int pos = -1; - StringBuffer text = new StringBuffer("Sequence " + (seq + 1) + " ID: " - + sequence.getName()); + StringBuilder text = new StringBuilder(32); + text.append("Sequence " + (seq + 1) + " ID: " + sequence.getName()); - Object obj = null; + String residue = null; + /* + * Try to translate the display character to residue name (null for gap). + */ + final String displayChar = String.valueOf(sequence.getCharAt(res)); if (av.getAlignment().isNucleotide()) { - obj = ResidueProperties.nucleotideName.get(sequence.getCharAt(res) - + ""); - if (obj != null) + residue = ResidueProperties.nucleotideName.get(displayChar); + if (residue != null) { - text.append(" Nucleotide: "); + text.append(" Nucleotide: ").append(residue); } } else { - obj = ResidueProperties.aa2Triplet.get(sequence.getCharAt(res) + ""); - if (obj != null) + residue = "X".equalsIgnoreCase(displayChar) ? "STOP" + : ResidueProperties.aa2Triplet.get(displayChar); + if (residue != null) { - text.append(" Residue: "); + text.append(" Residue: ").append(residue); } } - if (obj != null) + if (residue != null) { pos = sequence.findPosition(res); - if (obj != "") - { - text.append(obj + " (" + pos + ")"); - } + text.append(" (").append(Integer.toString(pos)).append(")"); } ap.alignFrame.statusBar.setText(text.toString()); return pos; diff --git a/src/jalview/schemes/ResidueProperties.java b/src/jalview/schemes/ResidueProperties.java index 8801f50..2b07410 100755 --- a/src/jalview/schemes/ResidueProperties.java +++ b/src/jalview/schemes/ResidueProperties.java @@ -26,6 +26,7 @@ import jalview.api.analysis.ScoreModelI; import java.awt.Color; import java.util.ArrayList; import java.util.Enumeration; +import java.util.HashMap; import java.util.Hashtable; import java.util.List; import java.util.Map; @@ -42,11 +43,11 @@ public class ResidueProperties public static final int[] purinepyrimidineIndex; - public static final Hashtable aa3Hash = new Hashtable(); + public static final Map aa3Hash = new HashMap(); - public static final Hashtable aa2Triplet = new Hashtable(); + public static final Map aa2Triplet = new HashMap(); - public static final Hashtable nucleotideName = new Hashtable(); + public static final Map nucleotideName = new HashMap(); static { @@ -1521,7 +1522,7 @@ public class ResidueProperties return hyd; } - public static Hashtable getAA3Hash() + public static Map getAA3Hash() { return aa3Hash; } -- 1.7.10.2