import jalview.datamodel.*;\r
import jalview.schemes.*;\r
\r
+import java.util.Vector;\r
+\r
public class SeqPanel\r
extends Panel implements MouseMotionListener, MouseListener\r
{\r
")");\r
}\r
}\r
+\r
ap.alignFrame.statusBar.setText(text.toString());\r
\r
}\r
&& sequence.getSequenceFeatures()!=null\r
&& av.featuresDisplayed!=null)\r
{\r
+ StringBuffer featureText = new StringBuffer();\r
+ Vector allFeatures = getAllFeaturesAtRes(sequence, sequence.findPosition(res));\r
+\r
int index = 0;\r
- sequence.getSequenceFeatures();\r
- boolean first = true;\r
- while (index < sequence.getSequenceFeatures().length)\r
+ while (index < allFeatures.size())\r
{\r
- SequenceFeature sf = sequence.getSequenceFeatures()[index];\r
- if (sf.getBegin() <= sequence.findPosition(res) &&\r
- sf.getEnd() >= sequence.findPosition(res))\r
- {\r
- if(!av.featuresDisplayed.containsKey(sf.getType()))\r
- {\r
- index++;\r
- continue;\r
- }\r
+ SequenceFeature sf = (SequenceFeature) allFeatures.elementAt(index);\r
\r
- if(first)\r
- {\r
- text.append(" Sequence Feature:");\r
- first = false;\r
- }\r
-\r
- text.append(" "+sf.getType());\r
+ featureText.append(sf.getType()+" "+sf.begin+":"+sf.end);\r
\r
- if(sf.getDescription()!=null)\r
- text.append(" "+sf.getDescription());\r
+ if (sf.getDescription() != null)\r
+ featureText.append(" " + sf.getDescription());\r
\r
- if (sf.getStatus()!=null && sf.getStatus().length() > 0)\r
- {\r
- text.append(" (" + sf.getStatus() + ")");\r
- }\r
- text.append("; ");\r
+ if (sf.getStatus() != null && sf.getStatus().length() > 0)\r
+ {\r
+ featureText.append(" (" + sf.getStatus() + ")");\r
}\r
+ featureText.append("\n");\r
\r
index++;\r
-\r
}\r
+\r
+\r
+ if (tooltip == null)\r
+ tooltip = new Tooltip(featureText.toString(), seqCanvas);\r
+ else\r
+ tooltip.setTip(featureText.toString());\r
+\r
+ tooltip.repaint();\r
+\r
+ // text.append(" Sequence Feature:");\r
+ // text.append(featureText);\r
+\r
}\r
\r
+\r
ap.alignFrame.statusBar.setText(text.toString());\r
\r
}\r
\r
+ Vector getAllFeaturesAtRes(SequenceI seq, int res)\r
+ {\r
+ Vector allFeatures = new Vector();\r
+ int index = 0;\r
+ if(seq.getSequenceFeatures()!=null)\r
+ {\r
+ while (index < seq.getSequenceFeatures().length)\r
+ {\r
+ SequenceFeature sf = seq.getSequenceFeatures()[index];\r
+ if (sf.getBegin() <= res &&\r
+ sf.getEnd() >= res)\r
+ {\r
+ if (av.featuresDisplayed.containsKey(sf.getType()))\r
+ {\r
+ allFeatures.addElement(sf);\r
+ }\r
+ }\r
+ index++;\r
+ }\r
+ }\r
+ return allFeatures;\r
+ }\r
+\r
+ Tooltip tooltip;\r
+\r
public void mouseDragged(MouseEvent evt)\r
{\r
if (mouseWheelPressed)\r
allGroups[i].getEndRes() >= res)\r
{\r
stretchGroup = allGroups[i];\r
- av.setSelectionGroup(stretchGroup);\r
break;\r
}\r
}\r
}\r
+ av.setSelectionGroup(stretchGroup);\r
}\r
\r
- if (stretchGroup == null)\r
+ if (av.cursorMode)\r
{\r
- // define a new group here\r
- SequenceGroup sg = new SequenceGroup();\r
- sg.setStartRes(res);\r
- sg.setEndRes(res);\r
- sg.addSequence(sequence, false);\r
- av.setSelectionGroup(sg);\r
- stretchGroup = sg;\r
-\r
- if (av.getConservationSelected())\r
- {\r
- SliderPanel.setConservationSlider(ap, av.getGlobalColourScheme(),\r
- "Background");\r
- }\r
- if (av.getAbovePIDThreshold())\r
- {\r
- SliderPanel.setPIDSliderSource(ap, av.getGlobalColourScheme(),\r
- "Background");\r
- }\r
-\r
+ seqCanvas.cursorX = findRes(evt);\r
+ seqCanvas.cursorY = findSeq(evt);\r
+ seqCanvas.repaint();\r
+ return;\r
}\r
\r
+\r
+\r
// DETECT RIGHT MOUSE BUTTON IN AWT\r
- else if ( (evt.getModifiers() & InputEvent.BUTTON3_MASK) ==\r
+ if ( (evt.getModifiers() & InputEvent.BUTTON3_MASK) ==\r
InputEvent.BUTTON3_MASK)\r
{\r
- APopupMenu popup = new APopupMenu(ap, null, null);\r
+ Vector allFeatures = getAllFeaturesAtRes(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
+ {\r
+ SequenceFeature sf = (SequenceFeature) allFeatures.elementAt(i);\r
+ if (sf.links != null)\r
+ {\r
+ links = new Vector();\r
+ for (int j = 0; j < sf.links.size(); j++)\r
+ {\r
+ links.addElement(sf.links.elementAt(j));\r
+ }\r
+ }\r
+ }\r
+ }\r
+ APopupMenu popup = new APopupMenu(ap, null, links);\r
this.add(popup);\r
popup.show(this, evt.getX(), evt.getY());\r
+ ap.repaint();\r
}\r
-\r
- if (stretchGroup != null && stretchGroup.getEndRes() == res)\r
+ else\r
{\r
- // Edit end res position of selected group\r
- changeEndRes = true;\r
- }\r
+ //Only if left mouse button do we want to change group sizes\r
\r
- else if (stretchGroup != null && stretchGroup.getStartRes() == res)\r
- {\r
- // Edit end res position of selected group\r
- changeStartRes = true;\r
- }\r
+ if (stretchGroup == null)\r
+ {\r
+ // define a new group here\r
+ SequenceGroup sg = new SequenceGroup();\r
+ sg.setStartRes(res);\r
+ sg.setEndRes(res);\r
+ sg.addSequence(sequence, false);\r
+ av.setSelectionGroup(sg);\r
+ stretchGroup = sg;\r
+\r
+ if (av.getConservationSelected())\r
+ {\r
+ SliderPanel.setConservationSlider(ap, av.getGlobalColourScheme(),\r
+ "Background");\r
+ }\r
+ if (av.getAbovePIDThreshold())\r
+ {\r
+ SliderPanel.setPIDSliderSource(ap, av.getGlobalColourScheme(),\r
+ "Background");\r
+ }\r
\r
+ }\r
+\r
+ if (stretchGroup != null && stretchGroup.getEndRes() == res)\r
+ {\r
+ // Edit end res position of selected group\r
+ changeEndRes = true;\r
+ }\r
+\r
+ else if (stretchGroup != null && stretchGroup.getStartRes() == res)\r
+ {\r
+ // Edit end res position of selected group\r
+ changeStartRes = true;\r
+ }\r
+ }\r
}\r
\r
public void doMouseReleasedDefineMode(MouseEvent evt)\r