image is panel size
[jalview.git] / src / jalview / appletgui / SeqPanel.java
index 6b93206..6c1a619 100755 (executable)
@@ -522,12 +522,16 @@ public class SeqPanel
 \r
     if (seq >= av.getAlignment().getHeight() || seq<0 || res<0)\r
     {\r
+      if(tooltip!=null)\r
+        tooltip.setTip("");\r
       return;\r
     }\r
 \r
     SequenceI sequence = av.getAlignment().getSequenceAt(seq);\r
     if (res > sequence.getLength())\r
     {\r
+      if(tooltip!=null)\r
+        tooltip.setTip("");\r
       return;\r
     }\r
 \r
@@ -564,13 +568,30 @@ public class SeqPanel
 \r
     ap.alignFrame.statusBar.setText(text.toString());\r
 \r
+    StringBuffer tooltipText = new StringBuffer();\r
+    SequenceGroup []  groups = av.alignment.findAllGroups(sequence);\r
+    if(groups!=null)\r
+    {\r
+      for(int g=0; g<groups.length; g++)\r
+      {\r
+        if(groups[g].getStartRes()<=res && groups[g].getEndRes()>=res)\r
+        {\r
+          if (!groups[g].getName().startsWith("JTreeGroup") &&\r
+              !groups[g].getName().startsWith("JGroup"))\r
+            tooltipText.append(groups[g].getName() + " ");\r
+          if(groups[g].getDescription()!=null)\r
+            tooltipText.append(groups[g].getDescription());\r
+          tooltipText.append("\n");\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
-      StringBuffer featureText = new StringBuffer();\r
+\r
       Vector allFeatures = getAllFeaturesAtRes(sequence, sequence.findPosition(res));\r
 \r
       int index = 0;\r
@@ -578,35 +599,27 @@ public class SeqPanel
       {\r
         SequenceFeature sf = (SequenceFeature) allFeatures.elementAt(index);\r
 \r
-        featureText.append(sf.getType()+" "+sf.begin+":"+sf.end);\r
+        tooltipText.append(sf.getType()+" "+sf.begin+":"+sf.end);\r
 \r
         if (sf.getDescription() != null)\r
-          featureText.append(" " + sf.getDescription());\r
+          tooltipText.append(" " + sf.getDescription());\r
 \r
         if (sf.getValue("status") != null )\r
         {\r
           String status = sf.getValue("status").toString();\r
           if(status.length()>0)\r
-            featureText.append(" (" + sf.getValue("status") + ")");\r
+            tooltipText.append(" (" + sf.getValue("status") + ")");\r
         }\r
-        featureText.append("\n");\r
+        tooltipText.append("\n");\r
 \r
         index++;\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
     }\r
-    else if (tooltip != null)\r
-     {\r
-       tooltip.setTip("");\r
-     }\r
+\r
+    if (tooltip == null)\r
+      tooltip = new Tooltip(tooltipText.toString(), seqCanvas);\r
+    else\r
+      tooltip.setTip(tooltipText.toString());\r
   }\r
 \r
   Vector getAllFeaturesAtRes(SequenceI seq, int res)\r
@@ -778,6 +791,13 @@ public class SeqPanel
         //but the sequence represents a group\r
         if (sg == null)\r
         {\r
+          if (av.hiddenRepSequences == null\r
+              || !av.hiddenRepSequences.containsKey(seq))\r
+          {\r
+            endEditing();\r
+            return;\r
+          }\r
+\r
           sg = (SequenceGroup) av.hiddenRepSequences.get(seq);\r
         }\r
 \r