X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSeqPanel.java;h=1ca4256a3e758aa5586029950e351bda30f128e0;hb=ffa5c07d90b4a933762a5d9faa0578c11693d63a;hp=14ea222758e1350968be62c3f21f6fd1012e917e;hpb=962347ea6afb8dc4efb68ebc039f1c8bf62915e0;p=jalview.git diff --git a/src/jalview/appletgui/SeqPanel.java b/src/jalview/appletgui/SeqPanel.java index 14ea222..1ca4256 100644 --- a/src/jalview/appletgui/SeqPanel.java +++ b/src/jalview/appletgui/SeqPanel.java @@ -54,6 +54,7 @@ import java.awt.event.InputEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; +import java.util.List; import java.util.Vector; public class SeqPanel extends Panel implements MouseMotionListener, @@ -563,20 +564,19 @@ public class SeqPanel extends Panel implements MouseMotionListener, av.setSelectionGroup(null); } - SequenceFeature[] features = findFeaturesAtRes(sequence, + List features = findFeaturesAtRes(sequence, sequence.findPosition(findRes(evt))); - if (features != null && features.length > 0) + if (!features.isEmpty()) { SearchResultsI highlight = new SearchResults(); - highlight.addResult(sequence, features[0].getBegin(), - features[0].getEnd()); + highlight.addResult(sequence, features.get(0).getBegin(), features + .get(0).getEnd()); seqCanvas.highlightSearchResults(highlight); - } - if (features != null && features.length > 0) - { + SequenceFeature[] featuresArray = features + .toArray(new SequenceFeature[features.size()]); seqCanvas.getFeatureRenderer().amendFeatures( - new SequenceI[] { sequence }, features, false, ap); + new SequenceI[] { sequence }, featuresArray, false, ap); seqCanvas.highlightSearchResults(null); } @@ -868,14 +868,10 @@ public class SeqPanel extends Panel implements MouseMotionListener, */ if (respos != -1) { - SequenceFeature[] allFeatures = findFeaturesAtRes(sequence, - sequence.findPosition(column)); - - int index = 0; - while (index < allFeatures.length) + List allFeatures = findFeaturesAtRes(sequence, + respos); + for (SequenceFeature sf : allFeatures) { - SequenceFeature sf = allFeatures[index]; - tooltipText.append(sf.getType() + " " + sf.begin + ":" + sf.end); if (sf.getDescription() != null) @@ -892,8 +888,6 @@ public class SeqPanel extends Panel implements MouseMotionListener, } } tooltipText.append("\n"); - - index++; } } @@ -907,40 +901,9 @@ public class SeqPanel extends Panel implements MouseMotionListener, } } - SequenceFeature[] findFeaturesAtRes(SequenceI sequence, int res) + List findFeaturesAtRes(SequenceI sequence, int res) { - Vector tmp = new Vector(); - SequenceFeature[] features = sequence.getSequenceFeatures(); - if (features != null) - { - for (int i = 0; i < features.length; i++) - { - if (av.getFeaturesDisplayed() == null - || !av.getFeaturesDisplayed().isVisible( - features[i].getType())) - { - continue; - } - - if (features[i].featureGroup != null - && !seqCanvas.fr.checkGroupVisibility( - features[i].featureGroup, false)) - { - continue; - } - - if ((features[i].getBegin() <= res) - && (features[i].getEnd() >= res)) - { - tmp.addElement(features[i]); - } - } - } - - features = new SequenceFeature[tmp.size()]; - tmp.copyInto(features); - - return features; + return seqCanvas.getFeatureRenderer().findFeaturesAtRes(sequence, res); } Tooltip tooltip; @@ -1466,25 +1429,20 @@ public class SeqPanel extends Panel implements MouseMotionListener, // DETECT RIGHT MOUSE BUTTON IN AWT if ((evt.getModifiers() & InputEvent.BUTTON3_MASK) == InputEvent.BUTTON3_MASK) { - SequenceFeature[] allFeatures = findFeaturesAtRes(sequence, + List allFeatures = findFeaturesAtRes(sequence, sequence.findPosition(res)); Vector links = null; - if (allFeatures != null) + for (int i = 0; i < allFeatures.size(); i++) { - for (int i = 0; i < allFeatures.length; i++) + SequenceFeature sf = allFeatures.get(i); + if (sf.links != null) { - if (allFeatures[i].links != null) + if (links == null) { - if (links == null) - { - links = new Vector(); - } - for (int j = 0; j < allFeatures[i].links.size(); j++) - { - links.addElement(allFeatures[i].links.elementAt(j)); - } + links = new Vector(); } + links.addAll(sf.links); } } APopupMenu popup = new APopupMenu(ap, null, links);