groupURL link prototype
[jalview.git] / src / jalview / gui / IdPanel.java
index a325618..52ac6ad 100755 (executable)
@@ -1,6 +1,6 @@
 /*
- * Jalview - A Sequence Alignment Editor and Viewer (Version 2.4)
- * Copyright (C) 2008 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
+ * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1)
+ * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle
  * 
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -43,7 +43,8 @@ public class IdPanel extends JPanel implements MouseListener,
   protected AlignmentPanel alignPanel;
 
   ScrollThread scrollThread = null;
-
+  String linkImageURL;
+  
   int offy;
 
   // int width;
@@ -64,6 +65,7 @@ public class IdPanel extends JPanel implements MouseListener,
     this.av = av;
     alignPanel = parent;
     idCanvas = new IdCanvas(av);
+    linkImageURL = getClass().getResource("/images/link.gif").toString();
     setLayout(new BorderLayout());
     add(idCanvas, BorderLayout.CENTER);
     addMouseListener(this);
@@ -80,7 +82,8 @@ public class IdPanel extends JPanel implements MouseListener,
    */
   public void mouseMoved(MouseEvent e)
   {
-    int seq = Math.max(0, alignPanel.seqPanel.findSeq(e));
+    SeqPanel sp = alignPanel.seqPanel;
+    int seq = Math.max(0, sp.findSeq(e));
     String tmp;
     if (seq > -1 && seq < av.alignment.getHeight())
     {
@@ -111,25 +114,18 @@ public class IdPanel extends JPanel implements MouseListener,
       // ADD NON POSITIONAL SEQUENCE INFO
       SequenceFeature[] features = sequence.getDatasetSequence()
               .getSequenceFeatures();
+      SequenceFeature[] tfeat = new SequenceFeature[1];
       if (av.isShowNpFeats() && features != null)
       {
         for (int i = 0; i < features.length; i++)
         {
           if (features[i].begin == 0 && features[i].end == 0)
           {
-            tip.append("<br>");
             int sz = -tip.length();
-            boolean nl=false;
-            if (features[i].getFeatureGroup()!=null) { tip.append(features[i].getFeatureGroup()); nl=true;};
-            if (features[i].getType()!=null) { tip.append(" "); tip.append(features[i].getType()); nl=true;};
-            if (features[i].getDescription()!=null) { tip.append(" "); tip.append(features[i].getDescription()); nl=true;};
-            if (features[i].getScore()!=Float.NaN && features[i].getScore()!=0f) { tip.append(" Score = "); tip.append(features[i].getScore()); nl=true;};
-            if (features[i].getStatus()!=null && features[i].getStatus().length()>0) { tip.append(" ("); tip.append(features[i].getStatus()); tip.append(")");nl=true;};
-            if (nl) {
-              sz+=tip.length();
-              tip.append("<br>");
-              maxWidth = Math.max(maxWidth, sz);
-            }
+            tfeat[0] = features[i];
+            sp.appendFeatures(tip, linkImageURL, 0, tfeat,sp.seqCanvas.fr.minmax);
+            sz+=tip.length();
+            maxWidth = Math.max(maxWidth, sz);
           }
         }
       }
@@ -167,7 +163,7 @@ public class IdPanel extends JPanel implements MouseListener,
     {
       selectSeqs(lastid + 1, seq);
     }
-
+    
     lastid = seq;
     alignPanel.paintAlignment(true);
   }
@@ -334,7 +330,7 @@ public class IdPanel extends JPanel implements MouseListener,
       
       jalview.gui.PopupMenu pop = new jalview.gui.PopupMenu(alignPanel,
               sq,
-              nlinks);
+              nlinks, new Vector(Preferences.groupURLLinks));
       pop.show(this, e.getX(), e.getY());
 
       return;
@@ -357,7 +353,6 @@ public class IdPanel extends JPanel implements MouseListener,
     {
       selectSeq(seq);
     }
-
     alignPanel.paintAlignment(true);
   }
 
@@ -411,7 +406,6 @@ public class IdPanel extends JPanel implements MouseListener,
               av.getAlignment().getSequenceAt(i), true);
     }
   }
-
   /**
    * DOCUMENT ME!
    * 
@@ -424,6 +418,12 @@ public class IdPanel extends JPanel implements MouseListener,
     {
       scrollThread.running = false;
     }
+//    if (mouseDragging)
+    {
+      // always send selection message when mouse is released
+      av.sendSelection();
+      
+    }
 
     mouseDragging = false;
     PaintRefresher.Refresh(this, av.getSequenceSetId());