X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=50ece221a6af5cfece8ad67436a8b3e5a3fb2f8a;hb=513e985e6781095eaafc3d9fa72c135325e8dd49;hp=8acdcc63000851657cb5f1c5cb868b390ec05358;hpb=153dd62dc91da13ae732600e6ea55ddbe15eab39;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java old mode 100755 new mode 100644 index 8acdcc6..50ece22 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -33,7 +33,7 @@ import jalview.structure.*; * DOCUMENT ME! * * @author $author$ - * @version $Revision$ + * @version $Revision: 1.130 $ */ public class SeqPanel extends JPanel implements MouseListener, MouseMotionListener, MouseWheelListener, SequenceListener, @@ -123,7 +123,7 @@ public class SeqPanel extends JPanel implements MouseListener, addMouseMotionListener(this); addMouseListener(this); addMouseWheelListener(this); - ssm = StructureSelectionManager.getStructureSelectionManager(); + ssm = StructureSelectionManager.getStructureSelectionManager(Desktop.instance); ssm.addStructureViewerListener(this); ssm.addSelectionListener(this); } @@ -168,6 +168,11 @@ public class SeqPanel extends JPanel implements MouseListener, } else { + if (x>seqCanvas.getWidth()+seqCanvas.getWidth()) + { + // make sure we calculate relative to visible alignment, rather than right-hand gutter + x = seqCanvas.getX()+seqCanvas.getWidth(); + } res = (x / av.getCharWidth()) + av.getStartRes(); } @@ -198,8 +203,8 @@ public class SeqPanel extends JPanel implements MouseListener, y -= hgap; - seq = Math.min((y % cHeight) / av.getCharHeight(), av.alignment - .getHeight() - 1); + seq = Math.min((y % cHeight) / av.getCharHeight(), + av.alignment.getHeight() - 1); } else { @@ -601,7 +606,7 @@ public class SeqPanel extends JPanel implements MouseListener, if (lastMessage == null || !lastMessage.equals(tmp)) { // System.err.println("mouseOver Sequence: "+tmp); - ssm.mouseOverSequence(sequence, index, pos); + ssm.mouseOverSequence(sequence, index, pos, av); } lastMessage = tmp; } @@ -610,8 +615,10 @@ public class SeqPanel extends JPanel implements MouseListener, { if (av.followHighlight) { - ap.scrollToPosition(results, false); + if (ap.scrollToPosition(results, false)) + { seqCanvas.revalidate(); + } } seqCanvas.highlightSearchResults(results); } @@ -688,8 +695,9 @@ public class SeqPanel extends JPanel implements MouseListener, if (av.showSequenceFeatures) { int rpos; - SequenceFeature[] features = findFeaturesAtRes(sequence - .getDatasetSequence(), rpos = sequence.findPosition(res)); + SequenceFeature[] features = findFeaturesAtRes( + sequence.getDatasetSequence(), + rpos = sequence.findPosition(res)); appendFeatures(tooltipText, linkImageURL.toString(), rpos, features, this.ap.seqPanel.seqCanvas.fr.minmax); } @@ -937,8 +945,7 @@ public class SeqPanel extends JPanel implements MouseListener, // Which is bigger, left-right or up-down? if (Math.abs(evt.getY() - lastMousePress.getY()) > Math.abs(evt - .getX() - - lastMousePress.getX())) + .getX() - lastMousePress.getX())) { int fontSize = av.font.getSize(); @@ -956,9 +963,7 @@ public class SeqPanel extends JPanel implements MouseListener, fontSize = 1; } - av - .setFont(new Font(av.font.getName(), av.font.getStyle(), - fontSize)); + av.setFont(new Font(av.font.getName(), av.font.getStyle(), fontSize)); av.charWidth = oldWidth; ap.fontChanged(); } @@ -1443,14 +1448,15 @@ public class SeqPanel extends JPanel implements MouseListener, av.setSelectionGroup(null); } - SequenceFeature[] features = findFeaturesAtRes(sequence - .getDatasetSequence(), sequence.findPosition(findRes(evt))); + SequenceFeature[] features = findFeaturesAtRes( + sequence.getDatasetSequence(), + sequence.findPosition(findRes(evt))); if (features != null && features.length > 0) { SearchResults highlight = new SearchResults(); - highlight.addResult(sequence, features[0].getBegin(), features[0] - .getEnd()); + highlight.addResult(sequence, features[0].getBegin(), + features[0].getEnd()); seqCanvas.highlightSearchResults(highlight); } if (features != null && features.length > 0) @@ -1554,8 +1560,8 @@ public class SeqPanel extends JPanel implements MouseListener, if (javax.swing.SwingUtilities.isRightMouseButton(evt)) { - SequenceFeature[] allFeatures = findFeaturesAtRes(sequence - .getDatasetSequence(), sequence.findPosition(res)); + SequenceFeature[] allFeatures = findFeaturesAtRes( + sequence.getDatasetSequence(), sequence.findPosition(res)); Vector links = new Vector(); for (int i = 0; i < allFeatures.length; i++) { @@ -1641,20 +1647,20 @@ public class SeqPanel extends JPanel implements MouseListener, { if (stretchGroup.cs instanceof ClustalxColourScheme) { - ((ClustalxColourScheme) stretchGroup.cs).resetClustalX(stretchGroup - .getSequences(av.hiddenRepSequences), stretchGroup - .getWidth()); + ((ClustalxColourScheme) stretchGroup.cs).resetClustalX( + stretchGroup.getSequences(av.hiddenRepSequences), + stretchGroup.getWidth()); } if (stretchGroup.cs.conservationApplied()) { - SliderPanel.setConservationSlider(ap, stretchGroup.cs, stretchGroup - .getName()); + SliderPanel.setConservationSlider(ap, stretchGroup.cs, + stretchGroup.getName()); } else { - SliderPanel.setPIDSliderSource(ap, stretchGroup.cs, stretchGroup - .getName()); + SliderPanel.setPIDSliderSource(ap, stretchGroup.cs, + stretchGroup.getName()); } } PaintRefresher.Refresh(this, av.getSequenceSetId()); @@ -1876,6 +1882,7 @@ public class SeqPanel extends JPanel implements MouseListener, // shared between viewports. if (av == source || !av.followSelection + || (av.isSelectionGroupChanged(false) || av.isColSelChanged(false)) || (source instanceof AlignViewport && ((AlignViewport) source) .getSequenceSetId().equals(av.getSequenceSetId()))) { @@ -1883,12 +1890,13 @@ public class SeqPanel extends JPanel implements MouseListener, } // do we want to thread this ? (contention with seqsel and colsel locks, I // suspect) - // rules are: colsel is copied if there is a real intersection between sequence selection - boolean repaint = false,copycolsel=true; - if (av.selectionGroup == null || !av.isSelectionGroupChanged()) + // rules are: colsel is copied if there is a real intersection between + // sequence selection + boolean repaint = false, copycolsel = true; + // if (!av.isSelectionGroupChanged(false)) { SequenceGroup sgroup = null; - if (seqsel != null) + if (seqsel != null && seqsel.getSize()>0) { if (av.alignment == null) { @@ -1899,10 +1907,11 @@ public class SeqPanel extends JPanel implements MouseListener, } sgroup = seqsel.intersect(av.alignment, (av.hasHiddenRows) ? av.hiddenRepSequences : null); - if ((sgroup==null || sgroup.getSize()==0) && (colsel==null || colsel.size()==0)) + if ((sgroup == null || sgroup.getSize() == 0) + || (colsel == null || colsel.size() == 0)) { // don't copy columns if the region didn't intersect. - copycolsel=false; + copycolsel = false; } } if (sgroup != null && sgroup.getSize() > 0) @@ -1913,9 +1922,10 @@ public class SeqPanel extends JPanel implements MouseListener, { av.setSelectionGroup(null); } - repaint = av.isSelectionGroupChanged(); + av.isSelectionGroupChanged(true); + repaint = true; } - if (copycolsel && (av.colSel == null || !av.isColSelChanged())) + if (copycolsel) { // the current selection is unset or from a previous message // so import the new colsel. @@ -1924,6 +1934,7 @@ public class SeqPanel extends JPanel implements MouseListener, if (av.colSel != null) { av.colSel.clear(); + repaint=true; } } else @@ -1938,7 +1949,8 @@ public class SeqPanel extends JPanel implements MouseListener, av.colSel.setElementsFrom(colsel); } } - repaint |= av.isColSelChanged(); + av.isColSelChanged(true); + repaint = true; } if (copycolsel && av.hasHiddenColumns && (av.colSel == null || av.colSel.getHiddenColumns() == null))