}\r
\r
public void mouseClicked(MouseEvent evt)\r
- {}\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
return seq;\r
}\r
\r
+\r
+\r
public void doMousePressed(MouseEvent evt)\r
{\r
\r
}\r
\r
// use aa to see if the mouse pointer is on a\r
- if (av.showSequenceFeatures\r
- && sequence.getSequenceFeatures() != null\r
- && av.featuresDisplayed != null)\r
- {\r
-\r
- Vector allFeatures = getAllFeaturesAtRes(sequence,\r
+ SequenceFeature [] allFeatures = findFeaturesAtRes(sequence,\r
sequence.findPosition(res));\r
\r
int index = 0;\r
- while (index < allFeatures.size())\r
+ while (index < allFeatures.length)\r
{\r
- SequenceFeature sf = (SequenceFeature) allFeatures.elementAt(index);\r
+ SequenceFeature sf = allFeatures[index];\r
\r
tooltipText.append(sf.getType() + " " + sf.begin + ":" + sf.end);\r
\r
\r
index++;\r
}\r
- }\r
\r
if (tooltip == null)\r
{\r
}\r
}\r
\r
- Vector getAllFeaturesAtRes(SequenceI seq, int res)\r
+ SequenceFeature[] findFeaturesAtRes(SequenceI sequence, int res)\r
{\r
- Vector allFeatures = new Vector();\r
- int index = 0;\r
- if (seq.getSequenceFeatures() != null)\r
+ Vector tmp = new Vector();\r
+ SequenceFeature[] features = sequence.getSequenceFeatures();\r
+ if (features != null)\r
{\r
- while (index < seq.getSequenceFeatures().length)\r
+ for (int i = 0; i < features.length; i++)\r
{\r
- SequenceFeature sf = seq.getSequenceFeatures()[index];\r
- if (sf.getBegin() <= res &&\r
- sf.getEnd() >= res)\r
+ if (av.featuresDisplayed == null\r
+ || !av.featuresDisplayed.containsKey(features[i].getType()))\r
{\r
- if (av.featuresDisplayed.containsKey(sf.getType()))\r
- {\r
- allFeatures.addElement(sf);\r
- }\r
+ continue;\r
+ }\r
+\r
+ if ( (features[i].getBegin() <= res) &&\r
+ (features[i].getEnd() >= res))\r
+ {\r
+ tmp.addElement(features[i]);\r
}\r
- index++;\r
}\r
}\r
- return allFeatures;\r
+\r
+ features = new SequenceFeature[tmp.size()];\r
+ tmp.copyInto(features);\r
+\r
+ return features;\r
}\r
\r
+\r
Tooltip tooltip;\r
\r
public void mouseDragged(MouseEvent evt)\r
if ( (evt.getModifiers() & InputEvent.BUTTON3_MASK) ==\r
InputEvent.BUTTON3_MASK)\r
{\r
- Vector allFeatures = getAllFeaturesAtRes(sequence,\r
+ SequenceFeature [] allFeatures = findFeaturesAtRes(sequence,\r
sequence.findPosition(res));\r
\r
Vector links = null;\r
if (allFeatures != null)\r
{\r
- for (int i = 0; i < allFeatures.size(); i++)\r
+ for (int i = 0; i < allFeatures.length; i++)\r
{\r
- SequenceFeature sf = (SequenceFeature) allFeatures.elementAt(i);\r
- if (sf.links != null)\r
+ if (allFeatures[i].links != null)\r
{\r
links = new Vector();\r
- for (int j = 0; j < sf.links.size(); j++)\r
+ for (int j = 0; j < allFeatures[i].links.size(); j++)\r
{\r
- links.addElement(sf.links.elementAt(j));\r
+ links.addElement(allFeatures[i].links.elementAt(j));\r
}\r
}\r
}\r