function to indicate job has finished but no results are available.
[jalview.git] / src / jalview / gui / IdPanel.java
index 011502b..47f43d5 100755 (executable)
@@ -59,6 +59,7 @@ public class IdPanel extends JPanel implements MouseListener,
         add(idCanvas, BorderLayout.CENTER);\r
         addMouseListener(this);\r
         addMouseMotionListener(this);\r
+        ToolTipManager.sharedInstance().registerComponent(this);\r
     }\r
 \r
     /**\r
@@ -68,15 +69,49 @@ public class IdPanel extends JPanel implements MouseListener,
      */\r
     public void mouseMoved(MouseEvent e)\r
     {\r
-    }\r
+      int seq = Math.max(0, alignPanel.seqPanel.findSeq(e));\r
+      if(seq>-1 && seq<av.alignment.getHeight())\r
+      {\r
+        SequenceI sequence = av.alignment.getSequenceAt(seq);\r
+        StringBuffer tip = new StringBuffer("<html>");\r
+        tip.append(sequence.getDisplayId(true));\r
+        if (av.alignment.getSequenceAt(seq).getDescription() != null)\r
+        {\r
+          tip.append("<table width=250 border=0><tr><td><i>");\r
+          tip.append(av.alignment.getSequenceAt(seq).getDescription());\r
+\r
+          //ADD NON POSITIONAL SEQUENCE INFO\r
+          SequenceFeature [] features = sequence.getDatasetSequence().getSequenceFeatures();\r
+          if(features!=null)\r
+          {\r
+            for(int i=0; i<features.length; i++)\r
+            {\r
+              if(features[i].begin == 0 && features[i].end ==0)\r
+              {\r
+                tip.append("<br>"+features[i].featureGroup\r
+                          +" "+ features[i].getType()+" "+features[i].description);\r
+              }\r
+            }\r
+          }\r
+          tip.append("</i></td></tr></table>");\r
+        }\r
 \r
-    int getWrappedY(int y)\r
-    {\r
-      int hgap = av.charHeight;\r
-      if (av.scaleAboveWrapped)\r
-        hgap += av.charHeight;\r
+        DBRefEntry[] dbrefs = sequence.getDatasetSequence().getDBRef();\r
+        if (dbrefs != null)\r
+        {\r
+          tip.append("<i>");\r
+          for (int i = 0; i < dbrefs.length; i++)\r
+          {\r
+            tip.append("<br>");\r
+            tip.append(dbrefs[i].getSource() + " "\r
+                       + dbrefs[i].getAccessionId());\r
+          }\r
+          tip.append("</i>");\r
+        }\r
 \r
-      return y - hgap;\r
+        tip.append("</html>");\r
+        setToolTipText(tip.toString());\r
+      }\r
     }\r
 \r
 \r
@@ -89,19 +124,7 @@ public class IdPanel extends JPanel implements MouseListener,
     {\r
         mouseDragging = true;\r
 \r
-        int y = e.getY();\r
-\r
-        if (av.getWrapAlignment())\r
-        {\r
-            y = getWrappedY(y);\r
-        }\r
-\r
-        int seq = av.getIndex(y);\r
-\r
-        if (seq < 0)\r
-        {\r
-            return;\r
-        }\r
+        int seq = Math.max(0, alignPanel.seqPanel.findSeq(e));\r
 \r
         if (seq < lastid)\r
         {\r
@@ -124,23 +147,21 @@ public class IdPanel extends JPanel implements MouseListener,
      */\r
     public void mouseClicked(MouseEvent e)\r
     {\r
-        if (e.getClickCount() < 2)\r
+      if (e.getClickCount() < 2)\r
         return;\r
 \r
       java.util.Vector links = Preferences.sequenceURLLinks;\r
       if (links == null || links.size() < 1)\r
         return;\r
 \r
-      int y = e.getY();\r
-\r
-      if (av.getWrapAlignment())\r
-      {\r
-         y = getWrappedY(y);\r
-      }\r
+      int seq = alignPanel.seqPanel.findSeq(e);\r
 \r
       //DEFAULT LINK IS FIRST IN THE LINK LIST\r
-      int seq = av.getIndex(y);\r
+\r
       String id = av.getAlignment().getSequenceAt(seq).getName();\r
+      if (id.indexOf("|") > -1)\r
+        id = id.substring(id.lastIndexOf("|") + 1);\r
+\r
 \r
       String url = links.elementAt(0).toString();\r
       url = url.substring(url.indexOf("|")+1);\r
@@ -211,56 +232,29 @@ public class IdPanel extends JPanel implements MouseListener,
             return;\r
         }\r
 \r
-        int y = e.getY();\r
-\r
-        if (av.getWrapAlignment())\r
-        {\r
-            y = getWrappedY(y);\r
-        }\r
-\r
-        int seq = av.getIndex(y);\r
+        int seq = alignPanel.seqPanel.findSeq(e);\r
 \r
-        if (seq == -1)\r
-        {\r
-            return;\r
-        }\r
 \r
         if (javax.swing.SwingUtilities.isRightMouseButton(e))\r
         {\r
             jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(alignPanel,\r
-                    (Sequence) av.getAlignment().getSequenceAt(seq));\r
-            pop.show(this, e.getX(), y);\r
+                    (Sequence) av.getAlignment().getSequenceAt(seq),\r
+                    Preferences.sequenceURLLinks);\r
+            pop.show(this, e.getX(), e.getY());\r
 \r
             return;\r
         }\r
 \r
-        if (!e.isControlDown() && !e.isShiftDown() &&\r
-                (av.alignment.findGroup(av.alignment.getSequenceAt(seq)) != null))\r
-        {\r
-            SequenceGroup selection = new SequenceGroup();\r
-            SequenceGroup sg = av.alignment.findGroup(av.alignment.getSequenceAt(\r
-                        seq));\r
-            selection.setStartRes(0);\r
-            selection.setEndRes(av.alignment.getWidth() - 1);\r
-\r
-            for (int i = 0; i < sg.getSize(); i++)\r
-            {\r
-                selection.addSequence(sg.getSequenceAt(i), true);\r
-            }\r
-\r
-            av.setSelectionGroup(selection);\r
 \r
-            return;\r
-        }\r
 \r
         if ((av.getSelectionGroup() == null) ||\r
-                (!e.isControlDown() && (av.getSelectionGroup() != null)))\r
+                ((!e.isControlDown() && !e.isShiftDown()) && av.getSelectionGroup() != null))\r
         {\r
-            av.setSelectionGroup(new SequenceGroup());\r
+          av.setSelectionGroup(new SequenceGroup());\r
+          av.getSelectionGroup().setStartRes(0);\r
+          av.getSelectionGroup().setEndRes(av.alignment.getWidth() - 1);\r
         }\r
 \r
-        av.getSelectionGroup().setStartRes(0);\r
-        av.getSelectionGroup().setEndRes(av.alignment.getWidth() - 1);\r
 \r
         if (e.isShiftDown() && (lastid != -1))\r
         {\r
@@ -295,6 +289,9 @@ public class IdPanel extends JPanel implements MouseListener,
      */\r
     void selectSeqs(int start, int end)\r
     {\r
+      if(av.getSelectionGroup()==null)\r
+            return;\r
+\r
         lastid = start;\r
 \r
         if (end < start)\r
@@ -307,7 +304,7 @@ public class IdPanel extends JPanel implements MouseListener,
 \r
         for (int i = start; i <= end; i++)\r
         {\r
-            av.getSelectionGroup().addSequence(av.getAlignment().getSequenceAt(i),\r
+          av.getSelectionGroup().addSequence(av.getAlignment().getSequenceAt(i),\r
                 true);\r
         }\r
     }\r