X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=f28217d03726c2f3943b816be85fa1cebef43177;hb=5a631296dd1dcc1df7b50487a647c27333696c74;hp=08c74e8ac761a79cc912e438bc20eec5eb05e957;hpb=c9b03515daddb7666215ef3d0f19026aa601534b;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 08c74e8..f28217d 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -20,6 +20,24 @@ */ package jalview.gui; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Font; +import java.awt.FontMetrics; +import java.awt.Point; +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.ArrayList; +import java.util.Collections; +import java.util.List; + +import javax.swing.JPanel; +import javax.swing.SwingUtilities; +import javax.swing.ToolTipManager; + import jalview.api.AlignViewportI; import jalview.bin.Cache; import jalview.commands.EditCommand; @@ -29,6 +47,7 @@ import jalview.datamodel.AlignmentAnnotation; import jalview.datamodel.AlignmentI; import jalview.datamodel.ColumnSelection; import jalview.datamodel.HiddenColumns; +import jalview.datamodel.MappedFeatures; import jalview.datamodel.SearchResultMatchI; import jalview.datamodel.SearchResults; import jalview.datamodel.SearchResultsI; @@ -50,23 +69,7 @@ import jalview.util.MessageManager; import jalview.util.Platform; import jalview.viewmodel.AlignmentViewport; import jalview.viewmodel.ViewportRanges; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Font; -import java.awt.FontMetrics; -import java.awt.Point; -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.Collections; -import java.util.List; - -import javax.swing.JPanel; -import javax.swing.SwingUtilities; -import javax.swing.ToolTipManager; +import jalview.viewmodel.seqfeatures.FeatureRendererModel; /** * DOCUMENT ME! @@ -204,8 +207,6 @@ public class SeqPanel extends JPanel StringBuffer keyboardNo2; - java.net.URL linkImageURL; - private final SequenceAnnotationReport seqARep; StringBuilder tooltipText = new StringBuilder(); @@ -226,8 +227,7 @@ public class SeqPanel extends JPanel */ public SeqPanel(AlignViewport viewport, AlignmentPanel alignPanel) { - linkImageURL = getClass().getResource("/images/link.gif"); - seqARep = new SequenceAnnotationReport(linkImageURL.toString()); + seqARep = new SequenceAnnotationReport(true); ToolTipManager.sharedInstance().registerComponent(this); ToolTipManager.sharedInstance().setInitialDelay(0); ToolTipManager.sharedInstance().setDismissDelay(10000); @@ -255,11 +255,6 @@ public class SeqPanel extends JPanel int wrappedBlock = -1; - MousePos findMousePosition(MouseEvent evt) - { - return findMousePosition(evt, false); - } - /** * Computes the column and sequence row (and possibly annotation row when in * wrapped mode) for the given mouse position @@ -267,22 +262,15 @@ public class SeqPanel extends JPanel * @param evt * @return */ - MousePos findMousePosition(MouseEvent evt, boolean debug) + MousePos findMousePosition(MouseEvent evt) { - int col = findColumn(evt, debug); + int col = findColumn(evt); int seqIndex = -1; int annIndex = -1; int y = evt.getY(); int charHeight = av.getCharHeight(); int alignmentHeight = av.getAlignment().getHeight(); - if (debug) - { - System.out.println(String.format( - "charHeight %d alHeight %d canvasWidth %d canvasHeight %d", - charHeight, alignmentHeight, seqCanvas.getWidth(), - seqCanvas.getHeight())); - } if (av.getWrapAlignment()) { seqCanvas.calculateWrappedGeometry(seqCanvas.getWidth(), @@ -343,11 +331,6 @@ public class SeqPanel extends JPanel */ int findColumn(MouseEvent evt) { - return findColumn(evt, true); - } - - int findColumn(MouseEvent evt, boolean debug) - { int res = 0; int x = evt.getX(); @@ -368,12 +351,6 @@ public class SeqPanel extends JPanel int y = evt.getY(); y = Math.max(0, y - hgap); x -= seqCanvas.getLabelWidthWest(); - if (debug) - { - System.out.println( - String.format("findColumn: x %d labelWest %d charWidth %d ", - x, seqCanvas.getLabelWidthWest(), charWidth)); - } if (x < 0) { // mouse is over left scale @@ -387,10 +364,6 @@ public class SeqPanel extends JPanel } if (x >= cwidth * charWidth) { - if (debug) - { - System.out.println("findColumn: cwidth = " + cwidth); - } // mouse is over right scale return -1; } @@ -859,11 +832,11 @@ public class SeqPanel extends JPanel * the start of the highlighted region. */ @Override - public void highlightSequence(SearchResultsI results) + public String highlightSequence(SearchResultsI results) { if (results == null || results.equals(lastSearchResults)) { - return; + return null; } lastSearchResults = results; @@ -889,6 +862,77 @@ public class SeqPanel extends JPanel { setStatusMessage(results); } + return results.isEmpty() ? null : getHighlightInfo(results); + } + + /** + * temporary hack: answers a message suitable to show on structure hover + * label. This is normally null. It is a peptide variation description if + *