Merge branch 'bug/JAL-2934proportionalScrolling' into develop
[jalview.git] / src / jalview / gui / IdPanel.java
index 6b312ad..3fff67b 100755 (executable)
  */
 package jalview.gui;
 
-import jalview.datamodel.AlignmentAnnotation;
-import jalview.datamodel.Sequence;
-import jalview.datamodel.SequenceFeature;
-import jalview.datamodel.SequenceGroup;
-import jalview.datamodel.SequenceI;
-import jalview.gui.SeqPanel.MousePos;
-import jalview.io.SequenceAnnotationReport;
-import jalview.util.MessageManager;
-import jalview.util.Platform;
-import jalview.viewmodel.AlignmentViewport;
-import jalview.viewmodel.ViewportRanges;
-
 import java.awt.BorderLayout;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionListener;
-import java.awt.event.MouseWheelEvent;
-import java.awt.event.MouseWheelListener;
 import java.util.List;
 
 import javax.swing.JPanel;
@@ -48,15 +34,23 @@ import javax.swing.SwingUtilities;
 import javax.swing.Timer;
 import javax.swing.ToolTipManager;
 
+import jalview.datamodel.AlignmentAnnotation;
+import jalview.datamodel.Sequence;
+import jalview.datamodel.SequenceGroup;
+import jalview.datamodel.SequenceI;
+import jalview.gui.SeqPanel.MousePos;
+import jalview.io.SequenceAnnotationReport;
+import jalview.util.MessageManager;
+import jalview.util.Platform;
+import jalview.viewmodel.AlignmentViewport;
+import jalview.viewmodel.ViewportRanges;
+
 /**
  * This panel hosts alignment sequence ids and responds to mouse clicks on them,
  * as well as highlighting ids matched by a search from the Find menu.
- * 
- * @author $author$
- * @version $Revision$
  */
 public class IdPanel extends JPanel
-        implements MouseListener, MouseMotionListener, MouseWheelListener
+        implements MouseListener, MouseMotionListener
 {
   private IdCanvas idCanvas;
 
@@ -66,8 +60,6 @@ public class IdPanel extends JPanel
 
   ScrollThread scrollThread = null;
 
-  String linkImageURL;
-
   int offy;
 
   // int width;
@@ -88,13 +80,12 @@ public class IdPanel extends JPanel
     this.av = av;
     alignPanel = parent;
     setIdCanvas(new IdCanvas(av));
-    linkImageURL = getClass().getResource("/images/link.gif").toString();
-    seqAnnotReport = new SequenceAnnotationReport(linkImageURL);
+    seqAnnotReport = new SequenceAnnotationReport(true);
     setLayout(new BorderLayout());
     add(getIdCanvas(), BorderLayout.CENTER);
     addMouseListener(this);
     addMouseMotionListener(this);
-    addMouseWheelListener(this);
+    addMouseWheelListener(alignPanel.getSeqPanel());
     ToolTipManager.sharedInstance().registerComponent(this);
   }
 
@@ -135,8 +126,7 @@ public class IdPanel extends JPanel
 
         StringBuilder text = new StringBuilder();
         text.append("Sequence ").append(String.valueOf(seq + 1))
-                .append(" ID: ")
-                .append(sequence.getName());
+                .append(" ID: ").append(sequence.getName());
         alignPanel.alignFrame.setStatus(text.toString());
       }
     }
@@ -176,38 +166,6 @@ public class IdPanel extends JPanel
   }
 
   /**
-   * Response to the mouse wheel by scrolling the alignment panel.
-   */
-  @Override
-  public void mouseWheelMoved(MouseWheelEvent e)
-  {
-    e.consume();
-    double wheelRotation = e.getPreciseWheelRotation();
-    if (wheelRotation > 0)
-    {
-      if (e.isShiftDown())
-      {
-        av.getRanges().scrollRight(true);
-      }
-      else
-      {
-        av.getRanges().scrollUp(false);
-      }
-    }
-    else if (wheelRotation < 0)
-    {
-      if (e.isShiftDown())
-      {
-        av.getRanges().scrollRight(false);
-      }
-      else
-      {
-        av.getRanges().scrollUp(true);
-      }
-    }
-  }
-
-  /**
    * Handle a mouse click event. Currently only responds to a double-click. The
    * action is to try to open a browser window at a URL that searches for the
    * selected sequence id. The search URL is configured in Preferences |
@@ -382,7 +340,7 @@ public class IdPanel extends JPanel
     }
 
     MousePos pos = alignPanel.getSeqPanel().findMousePosition(e);
-    
+
     if (e.isPopupTrigger()) // Mac reports this in mousePressed
     {
       showPopupMenu(e, pos);
@@ -436,28 +394,12 @@ public class IdPanel extends JPanel
     }
 
     Sequence sq = (Sequence) av.getAlignment().getSequenceAt(pos.seqIndex);
-
-    /*
-     *  build a new links menu based on the current links
-     *  and any non-positional features
-     */
-    List<SequenceFeature> features = null;
     if (sq != null)
     {
-    List<String> nlinks = Preferences.sequenceUrlLinks.getLinksForMenu();
-      features = sq.getFeatures().getNonPositionalFeatures();
-    for (SequenceFeature sf : features)
-    {
-      if (sf.links != null)
-      {
-        nlinks.addAll(sf.links);
-      }
+      PopupMenu pop = new PopupMenu(alignPanel, sq,
+              Preferences.getGroupURLLinks());
+      pop.show(this, e.getX(), e.getY());
     }
-    }
-
-    PopupMenu pop = new PopupMenu(alignPanel, sq, features,
-            Preferences.getGroupURLLinks());
-    pop.show(this, e.getX(), e.getY());
   }
 
   /**