X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fgui%2FAnnotationPanel.java;h=e146754bdb7c3a2fa0d50f90bdab25564c6983db;hb=9b943e6d79fd92f78a61916a6f6eb047ba0a9755;hp=786696cb353fa4c0d8ed679ce17e1fd145c72cbc;hpb=6e670b92ab0119650fa78ec4c968f600c077babc;p=jalview.git diff --git a/src/jalview/gui/AnnotationPanel.java b/src/jalview/gui/AnnotationPanel.java index 786696c..e146754 100755 --- a/src/jalview/gui/AnnotationPanel.java +++ b/src/jalview/gui/AnnotationPanel.java @@ -57,6 +57,7 @@ import jalview.datamodel.Annotation; import jalview.datamodel.ColumnSelection; import jalview.datamodel.ContactListI; import jalview.datamodel.ContactRange; +import jalview.datamodel.GraphLine; import jalview.datamodel.HiddenColumns; import jalview.datamodel.SequenceI; import jalview.gui.JalviewColourChooser.ColourChooserListener; @@ -598,6 +599,7 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, } else { + GraphLine thr = aa[graphStretch].getThreshold(); int currentX = getColumnForXPos(evt.getX()); ContactListI forCurrentX = av.getContactList(aa[graphStretch], currentX); @@ -610,11 +612,48 @@ public class AnnotationPanel extends JPanel implements AwtRenderPanelI, int fr, to; fr = Math.min(cXci.cStart, cXci.cEnd); to = Math.max(cXci.cStart, cXci.cEnd); - for (int c = fr; c <= to; c++) + // select corresponding range in segment under mouse { - av.getColumnSelection().addElement(c); + for (int c = fr; c <= to; c++) + { + av.getColumnSelection().addElement(c); + } + av.getColumnSelection().addElement(currentX); + } + // and also select everything lower than the max range adjacent + // (kind of works) + { + int c = fr - 1; + ContactRange cr = forCurrentX.getRangeFor(fr, to); + double cval; + while (c > 0) + { + cval = forCurrentX.getContactAt(c); + if (// cr.getMin() <= cval && + cval <= cr.getMax()) + { + av.getColumnSelection().addElement(c--); + } + else + { + break; + } + } + c = to; + while (c < forCurrentX.getContactHeight()) + { + cval = forCurrentX.getContactAt(c); + if (// cr.getMin() <= cval && + cval <= cr.getMax()) + { + av.getColumnSelection().addElement(c++); + } + else + { + break; + } + } } - av.getColumnSelection().addElement(currentX); } } }