Tooltips for group names, descriptions
authoramwaterhouse <Andrew Waterhouse>
Mon, 29 Jan 2007 17:40:50 +0000 (17:40 +0000)
committeramwaterhouse <Andrew Waterhouse>
Mon, 29 Jan 2007 17:40:50 +0000 (17:40 +0000)
src/jalview/appletgui/SeqPanel.java
src/jalview/gui/SeqPanel.java

index 6b93206..1a2da1e 100755 (executable)
@@ -564,13 +564,28 @@ 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
+          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 +593,30 @@ 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(tooltipText.toString(), seqCanvas);\r
+    else\r
+      tooltip.setTip(tooltipText.toString());\r
 \r
-        if (tooltip == null)\r
-          tooltip = new Tooltip(featureText.toString(), seqCanvas);\r
-        else\r
-          tooltip.setTip(featureText.toString());\r
-\r
-        tooltip.repaint();\r
+    tooltip.repaint();\r
 \r
-    }\r
-    else if (tooltip != null)\r
-     {\r
-       tooltip.setTip("");\r
-     }\r
   }\r
 \r
   Vector getAllFeaturesAtRes(SequenceI seq, int res)\r
index 8de1d01..cd6fe2e 100755 (executable)
@@ -570,116 +570,124 @@ public class SeqPanel extends JPanel implements MouseListener,
 \r
       setStatusMessage(sequence, res, seq);\r
 \r
+\r
+\r
+      tooltipText.setLength(6); // Cuts the buffer back to <html>\r
+\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
+            tooltipText.append(groups[g].getName()+" ");\r
+            if(groups[g].getDescription()!=null)\r
+              tooltipText.append(groups[g].getDescription()+"<BR>");\r
+          }\r
+        }\r
+      }\r
+\r
+\r
         // use aa to see if the mouse pointer is on a\r
         if (av.showSequenceFeatures)\r
         {\r
-            tooltipText.setLength(6); // Cuts the buffer back to <html>\r
+          SequenceFeature[] features = findFeaturesAtRes(\r
+              sequence.getDatasetSequence(), sequence.findPosition(res));\r
 \r
-            SequenceFeature[] features = findFeaturesAtRes(\r
-                sequence.getDatasetSequence(), sequence.findPosition(res));\r
-\r
-            if(features!=null)\r
+          if (features != null)\r
+          {\r
+            for (int i = 0; i < features.length; i++)\r
             {\r
-              for (int i = 0; i < features.length; i++)\r
+              if (features[i].getType().equals("disulfide bond"))\r
               {\r
-                  if (features[i].getType().equals("disulfide bond"))\r
-                  {\r
-                    if (features[i].getBegin() == sequence.findPosition(res)\r
-                        || features[i].getEnd() == sequence.findPosition(res))\r
-                    {\r
-                      if (tooltipText.length() > 6)\r
-                        tooltipText.append("<br>");\r
-                      tooltipText.append("disulfide bond " + features[i].getBegin() + ":" +\r
+                if (features[i].getBegin() == sequence.findPosition(res)\r
+                    || features[i].getEnd() == sequence.findPosition(res))\r
+                {\r
+                  if (tooltipText.length() > 6)\r
+                    tooltipText.append("<br>");\r
+                  tooltipText.append("disulfide bond " + features[i].getBegin() + ":" +\r
                                      features[i].getEnd());\r
-                      if (features[i].links != null)\r
-                      tooltipText.append(" <img src=\"" + linkImageURL + "\">");\r
-                    }\r
-                  }\r
-                  else\r
-                  {\r
-                    if (tooltipText.length() > 6)\r
-                      tooltipText.append("<br>");\r
+                  if (features[i].links != null)\r
+                    tooltipText.append(" <img src=\"" + linkImageURL + "\">");\r
+                }\r
+              }\r
+              else\r
+              {\r
+                if (tooltipText.length() > 6)\r
+                  tooltipText.append("<br>");\r
 \r
-                    tooltipText.append(features[i].getType() + " " +\r
+                tooltipText.append(features[i].getType() + " " +\r
                                    features[i].begin);\r
-                    if (features[i].begin != features[i].end)\r
-                      tooltipText.append(" " + features[i].end);\r
+                if (features[i].begin != features[i].end)\r
+                  tooltipText.append(" " + features[i].end);\r
 \r
-                    if (features[i].getDescription() != null\r
-                        && !features[i].description.equals(features[i].getType()))\r
-                    {\r
-                      tmpString = features[i].getDescription();\r
-                      int startTag=tmpString.toUpperCase().indexOf("<HTML>");\r
-                      if(startTag>-1)\r
-                      {\r
-                        tmpString = tmpString.substring(startTag + 6);\r
-                      }\r
-                      int endTag=tmpString.toUpperCase().indexOf("</BODY>");\r
-                      if(endTag>-1)\r
-                      {\r
-                        tmpString = tmpString.substring(0, endTag);\r
-                      }\r
-                      endTag = tmpString.toUpperCase().indexOf("</HTML>");\r
-                      if(endTag>-1)\r
-                      {\r
-                        tmpString = tmpString.substring(0, endTag);\r
-                      }\r
-\r
-                      if(startTag>-1)\r
-                      {\r
-                        tooltipText.append("; " + tmpString);\r
-                      }\r
-                      else\r
-                      {\r
-                       if (tmpString.indexOf("<") > -1 || tmpString.indexOf(">") > -1)\r
-                       {\r
-                         //The description does not specify html is to\r
-                         //be used, so we must remove < > symbols\r
-                         tmpString = tmpString.replaceAll("<", "&lt;");\r
-                         tmpString = tmpString.replaceAll(">", "&gt;");\r
-\r
-                         tooltipText.append("; ");\r
-                         tooltipText.append(tmpString);\r
-\r
-                       }\r
-                       else\r
-                         tooltipText.append("; "+tmpString);\r
-                      }\r
-                    }\r
-                    if (features[i].getValue("status") != null )\r
+                if (features[i].getDescription() != null\r
+                    && !features[i].description.equals(features[i].getType()))\r
+                {\r
+                  tmpString = features[i].getDescription();\r
+                  int startTag = tmpString.toUpperCase().indexOf("<HTML>");\r
+                  if (startTag > -1)\r
+                  {\r
+                    tmpString = tmpString.substring(startTag + 6);\r
+                  }\r
+                  int endTag = tmpString.toUpperCase().indexOf("</BODY>");\r
+                  if (endTag > -1)\r
+                  {\r
+                    tmpString = tmpString.substring(0, endTag);\r
+                  }\r
+                  endTag = tmpString.toUpperCase().indexOf("</HTML>");\r
+                  if (endTag > -1)\r
+                  {\r
+                    tmpString = tmpString.substring(0, endTag);\r
+                  }\r
+\r
+                  if (startTag > -1)\r
+                  {\r
+                    tooltipText.append("; " + tmpString);\r
+                  }\r
+                  else\r
+                  {\r
+                    if (tmpString.indexOf("<") > -1 || tmpString.indexOf(">") > -1)\r
                     {\r
-                      String status = features[i].getValue("status").toString();\r
-                      if(status.length()>0)\r
-                        tooltipText.append("; (" + features[i].getValue("status") + ")");\r
-                    }\r
+                      //The description does not specify html is to\r
+                      //be used, so we must remove < > symbols\r
+                      tmpString = tmpString.replaceAll("<", "&lt;");\r
+                      tmpString = tmpString.replaceAll(">", "&gt;");\r
 \r
-                    if (features[i].links != null)\r
-                      tooltipText.append(" <img src=\"" + linkImageURL + "\">");\r
+                      tooltipText.append("; ");\r
+                      tooltipText.append(tmpString);\r
 \r
+                    }\r
+                    else\r
+                      tooltipText.append("; " + tmpString);\r
                   }\r
-\r
-               // else if(features[i].begin==0 && features[i].end==0)\r
+                }\r
+                if (features[i].getValue("status") != null)\r
                 {\r
-                  // seqSpecific.append(features[i].featureGroup+": "\r
-                  //                   + features[i].getType()+" "\r
-                   //                   +features[i].getDescription()+"<br>");\r
-\r
+                  String status = features[i].getValue("status").toString();\r
+                  if (status.length() > 0)\r
+                    tooltipText.append("; (" + features[i].getValue("status") + ")");\r
                 }\r
-              }\r
 \r
-              if(tooltipText.length()==6) // <html></html>\r
-              {\r
-                setToolTipText(null);\r
-              }\r
-              else\r
-              {\r
-                tooltipText.append("</html>");\r
-                setToolTipText(tooltipText.toString());\r
+                if (features[i].links != null)\r
+                  tooltipText.append(" <img src=\"" + linkImageURL + "\">");\r
+\r
               }\r
             }\r
-            else\r
-              setToolTipText(null);\r
+          }\r
+        }\r
+        if (tooltipText.length() == 6) // <html></html>\r
+        {\r
+          setToolTipText(null);\r
+        }\r
+        else\r
+        {\r
+          tooltipText.append("</html>");\r
+          setToolTipText(tooltipText.toString());\r
         }\r
+       // else\r
+        //  setToolTipText(null);\r
     }\r
 \r
     void setStatusMessage(SequenceI sequence, int res, int seq)\r