- if (features != null && features.size()> 0)
- {
- SearchResults highlight = new SearchResults();
- highlight.addResult(sequence, features.get(0).getBegin(),
- features.get(0).getEnd());
- seqCanvas.highlightSearchResults(highlight);
- }
- if (features != null && features.size()> 0)
- {
- seqCanvas.getFeatureRenderer().amendFeatures(new SequenceI[]
- { sequence }, features.toArray(new SequenceFeature[features.size()]), false, ap);
-
- seqCanvas.highlightSearchResults(null);
+ /*
+ * find features at the position (if not gapped), or straddling
+ * the position (if at a gap)
+ */
+ List<SequenceFeature> features = seqCanvas.getFeatureRenderer()
+ .findFeaturesAtColumn(sequence, column + 1);
+
+ if (!features.isEmpty())
+ {
+ /*
+ * highlight the first feature at the position on the alignment
+ */
+ SearchResultsI highlight = new SearchResults();
+ highlight.addResult(sequence, features.get(0).getBegin(), features
+ .get(0).getEnd());
+ seqCanvas.highlightSearchResults(highlight, false);
+
+ /*
+ * open the Amend Features dialog; clear highlighting afterwards,
+ * whether changes were made or not
+ */
+ List<SequenceI> seqs = Collections.singletonList(sequence);
+ seqCanvas.getFeatureRenderer().amendFeatures(seqs, features, false,
+ ap);
+ av.setSearchResults(null); // clear highlighting
+ seqCanvas.repaint(); // draw new/amended features