sequences are private in SequenceGroup
[jalview.git] / src / jalview / gui / IdPanel.java
index 011502b..d1dc11d 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,8 +69,46 @@ public class IdPanel extends JPanel implements MouseListener,
      */\r
     public void mouseMoved(MouseEvent e)\r
     {\r
+      int y = e.getY();\r
+\r
+      if (av.getWrapAlignment())\r
+      {\r
+        y = getWrappedY(y);\r
+      }\r
+\r
+      final int seq = av.getIndex(y);\r
+      if(seq!=-1)\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
+\r
+          tip.append("</i></td></tr></table>");\r
+        }\r
+        tip.append("</html>");\r
+        setToolTipText(tip.toString());\r
+      }\r
     }\r
 \r
+\r
     int getWrappedY(int y)\r
     {\r
       int hgap = av.charHeight;\r
@@ -124,7 +163,7 @@ 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
@@ -140,7 +179,13 @@ public class IdPanel extends JPanel implements MouseListener,
 \r
       //DEFAULT LINK IS FIRST IN THE LINK LIST\r
       int seq = av.getIndex(y);\r
+      if(seq==-1)\r
+        return;\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
@@ -228,15 +273,17 @@ public class IdPanel extends JPanel implements MouseListener,
         if (javax.swing.SwingUtilities.isRightMouseButton(e))\r
         {\r
             jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(alignPanel,\r
-                    (Sequence) av.getAlignment().getSequenceAt(seq));\r
+                    (Sequence) av.getAlignment().getSequenceAt(seq),\r
+                    Preferences.sequenceURLLinks);\r
             pop.show(this, e.getX(), y);\r
 \r
             return;\r
         }\r
 \r
-        if (!e.isControlDown() && !e.isShiftDown() &&\r
+      /*  if (!e.isControlDown() && !e.isShiftDown() &&\r
                 (av.alignment.findGroup(av.alignment.getSequenceAt(seq)) != null))\r
         {\r
+          System.out.println("no modifiers");\r
             SequenceGroup selection = new SequenceGroup();\r
             SequenceGroup sg = av.alignment.findGroup(av.alignment.getSequenceAt(\r
                         seq));\r
@@ -251,16 +298,17 @@ public class IdPanel extends JPanel implements MouseListener,
             av.setSelectionGroup(selection);\r
 \r
             return;\r
-        }\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
 \r
         if (e.isShiftDown() && (lastid != -1))\r
         {\r
@@ -295,6 +343,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 +358,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