Merge branch 'develop' into features/JAL-1793VCF
authorgmungoc <g.m.carstairs@dundee.ac.uk>
Tue, 5 Dec 2017 09:25:37 +0000 (09:25 +0000)
committergmungoc <g.m.carstairs@dundee.ac.uk>
Tue, 5 Dec 2017 09:25:37 +0000 (09:25 +0000)
1  2 
src/jalview/gui/SeqPanel.java

@@@ -59,6 -59,7 +59,6 @@@ import java.awt.event.MouseListener
  import java.awt.event.MouseMotionListener;
  import java.awt.event.MouseWheelEvent;
  import java.awt.event.MouseWheelListener;
 -import java.util.ArrayList;
  import java.util.Collections;
  import java.util.List;
  
@@@ -75,11 -76,12 +75,11 @@@ import javax.swing.ToolTipManager
  public class SeqPanel extends JPanel
          implements MouseListener, MouseMotionListener, MouseWheelListener,
          SequenceListener, SelectionListener
 -
  {
 -  /** DOCUMENT ME!! */
 +  private static final int MAX_TOOLTIP_LENGTH = 300;
 +
    public SeqCanvas seqCanvas;
  
 -  /** DOCUMENT ME!! */
    public AlignmentPanel ap;
  
    /*
    SearchResultsI lastSearchResults;
  
    /**
 -   * Creates a new SeqPanel object.
 +   * Creates a new SeqPanel object
     * 
 -   * @param avp
 -   *          DOCUMENT ME!
 -   * @param p
 -   *          DOCUMENT ME!
 +   * @param viewport
 +   * @param alignPanel
     */
 -  public SeqPanel(AlignViewport av, AlignmentPanel ap)
 +  public SeqPanel(AlignViewport viewport, AlignmentPanel alignPanel)
    {
      linkImageURL = getClass().getResource("/images/link.gif");
      seqARep = new SequenceAnnotationReport(linkImageURL.toString());
      ToolTipManager.sharedInstance().registerComponent(this);
      ToolTipManager.sharedInstance().setInitialDelay(0);
      ToolTipManager.sharedInstance().setDismissDelay(10000);
 -    this.av = av;
 +    this.av = viewport;
      setBackground(Color.white);
  
 -    seqCanvas = new SeqCanvas(ap);
 +    seqCanvas = new SeqCanvas(alignPanel);
      setLayout(new BorderLayout());
      add(seqCanvas, BorderLayout.CENTER);
  
 -    this.ap = ap;
 +    this.ap = alignPanel;
  
 -    if (!av.isDataset())
 +    if (!viewport.isDataset())
      {
        addMouseMotionListener(this);
        addMouseListener(this);
        addMouseWheelListener(this);
 -      ssm = av.getStructureSelectionManager();
 +      ssm = viewport.getStructureSelectionManager();
        ssm.addStructureViewerListener(this);
        ssm.addSelectionListener(this);
      }
        int original = seqCanvas.cursorX - dx;
        int maxWidth = av.getAlignment().getWidth();
  
+       // TODO: once JAL-2759 is ready, change this loop to something more
+       // efficient
        while (!hidden.isVisible(seqCanvas.cursorX)
-               && seqCanvas.cursorX < maxWidth && seqCanvas.cursorX > 0)
+               && seqCanvas.cursorX < maxWidth && seqCanvas.cursorX > 0
+               && dx != 0)
        {
          seqCanvas.cursorX += dx;
        }
        List<SequenceFeature> features = ap.getFeatureRenderer()
                .findFeaturesAtColumn(sequence, column + 1);
        seqARep.appendFeatures(tooltipText, pos, features,
 -              this.ap.getSeqPanel().seqCanvas.fr.getMinMax());
 +              this.ap.getSeqPanel().seqCanvas.fr);
      }
      if (tooltipText.length() == 6) // <html>
      {
      }
      else
      {
 +      if (tooltipText.length() > MAX_TOOLTIP_LENGTH) // constant
 +      {
 +        tooltipText.setLength(MAX_TOOLTIP_LENGTH);
 +        tooltipText.append("...");
 +      }
        String textString = tooltipText.toString();
        if (lastTooltip == null || !lastTooltip.equals(textString))
        {
      final int column = findColumn(evt);
      final int seq = findSeq(evt);
      SequenceI sequence = av.getAlignment().getSequenceAt(seq);
 -    List<SequenceFeature> allFeatures = ap.getFeatureRenderer()
 +    List<SequenceFeature> features = ap.getFeatureRenderer()
              .findFeaturesAtColumn(sequence, column + 1);
 -    List<String> links = new ArrayList<>();
 -    for (SequenceFeature sf : allFeatures)
 -    {
 -      if (sf.links != null)
 -      {
 -        for (String link : sf.links)
 -        {
 -          links.add(link);
 -        }
 -      }
 -    }
  
 -    PopupMenu pop = new PopupMenu(ap, null, links);
 +    PopupMenu pop = new PopupMenu(ap, null, features);
      pop.show(this, evt.getX(), evt.getY());
    }