X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=08e11945428980d43b6c09617e78c1c953e0e5c0;hb=81029aa176cd9a4553e297f7be95931dddc89974;hp=e7bd20016db8e1ebc12c83c4162f864291681698;hpb=4eb8d7a0f14e5dd1dc5ad5ad0960bae9b25fa043;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index e7bd200..08e1194 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -910,12 +910,12 @@ public class SeqPanel extends JPanel .findComplementFeaturesAtResidue(ds, pos); if (mf != null) { - List pv = mf.findProteinVariants(); - for (String s : pv) + for (SequenceFeature sf : mf.features) { - if (!infos.contains(s)) + String pv = mf.findProteinVariants(sf); + if (pv.length() > 0 && !infos.contains(pv)) { - infos.addAll(pv); + infos.add(pv); } } } @@ -1042,12 +1042,14 @@ public class SeqPanel extends JPanel * add features that straddle the gap (pos may be the residue before or * after the gap) */ + int unshownFeatures = 0; if (av.isShowSequenceFeatures()) { List features = ap.getFeatureRenderer() .findFeaturesAtColumn(sequence, column + 1); - seqARep.appendFeatures(tooltipText, pos, features, - this.ap.getSeqPanel().seqCanvas.fr); + unshownFeatures = seqARep.appendFeaturesLengthLimit(tooltipText, pos, + features, + this.ap.getSeqPanel().seqCanvas.fr, MAX_TOOLTIP_LENGTH); /* * add features in CDS/protein complement at the corresponding @@ -1065,23 +1067,32 @@ public class SeqPanel extends JPanel pos); if (mf != null) { - seqARep.appendFeatures(tooltipText, pos, mf.features, fr2); + unshownFeatures = seqARep.appendFeaturesLengthLimit( + tooltipText, pos, mf, fr2, + MAX_TOOLTIP_LENGTH); } } } } - if (tooltipText.length() == 6) // + if (tooltipText.length() == 6) // "" { setToolTipText(null); lastTooltip = null; } else { - if (tooltipText.length() > MAX_TOOLTIP_LENGTH) // constant + if (tooltipText.length() > MAX_TOOLTIP_LENGTH) { tooltipText.setLength(MAX_TOOLTIP_LENGTH); tooltipText.append("..."); } + if (unshownFeatures > 0) + { + tooltipText.append("
").append("... ").append("") + .append(MessageManager.formatMessage( + "label.features_not_shown", unshownFeatures)) + .append(""); + } String textString = tooltipText.toString(); if (lastTooltip == null || !lastTooltip.equals(textString)) { @@ -2254,11 +2265,11 @@ public class SeqPanel extends JPanel final int column = pos.column; final int seq = pos.seqIndex; SequenceI sequence = av.getAlignment().getSequenceAt(seq); - List features = ap.getFeatureRenderer() - .findFeaturesAtColumn(sequence, column + 1); - - PopupMenu pop = new PopupMenu(ap, sequence, features); - pop.show(this, evt.getX(), evt.getY()); + if (sequence != null) + { + PopupMenu pop = new PopupMenu(ap, sequence, column); + pop.show(this, evt.getX(), evt.getY()); + } } /** @@ -2752,7 +2763,7 @@ public class SeqPanel extends JPanel * Map sequence selection */ SequenceGroup sg = MappingUtils.mapSequenceGroup(seqsel, sourceAv, av); - av.setSelectionGroup(sg); + av.setSelectionGroup(sg != null && sg.getSize() > 0 ? sg : null); av.isSelectionGroupChanged(true); /*