X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fgui%2FSeqPanel.java;h=749b3909c687b6860c5fd0f49dd281a5d3cdb0d5;hb=3c75c089a56859ec8e7f674d7054e82af41e4b77;hp=1432fcb4e6688b30b4d7259b20ab882e37f1993c;hpb=762dd65b19b26b7f6fb4583a476abfe173f37e49;p=jalview.git diff --git a/src/jalview/gui/SeqPanel.java b/src/jalview/gui/SeqPanel.java index 1432fcb..749b390 100644 --- a/src/jalview/gui/SeqPanel.java +++ b/src/jalview/gui/SeqPanel.java @@ -27,6 +27,7 @@ import jalview.commands.EditCommand.Action; import jalview.commands.EditCommand.Edit; import jalview.datamodel.AlignmentI; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.SearchResultMatchI; import jalview.datamodel.SearchResults; import jalview.datamodel.SearchResultsI; @@ -233,7 +234,8 @@ public class SeqPanel extends JPanel implements MouseListener, if (av.hasHiddenColumns()) { - res = av.getColumnSelection().adjustForHiddenColumns(res); + res = av.getAlignment().getHiddenColumns() + .adjustForHiddenColumns(res); } return res; @@ -339,20 +341,23 @@ public class SeqPanel extends JPanel implements MouseListener, { seqCanvas.cursorX += dx; seqCanvas.cursorY += dy; + + HiddenColumns hidden = av.getAlignment().getHiddenColumns(); + if (av.hasHiddenColumns() - && !av.getColumnSelection().isVisible(seqCanvas.cursorX)) + && !hidden.isVisible(seqCanvas.cursorX)) { int original = seqCanvas.cursorX - dx; int maxWidth = av.getAlignment().getWidth(); - while (!av.getColumnSelection().isVisible(seqCanvas.cursorX) + while (!hidden.isVisible(seqCanvas.cursorX) && seqCanvas.cursorX < maxWidth && seqCanvas.cursorX > 0) { seqCanvas.cursorX += dx; } if (seqCanvas.cursorX >= maxWidth - || !av.getColumnSelection().isVisible(seqCanvas.cursorX)) + || !hidden.isVisible(seqCanvas.cursorX)) { seqCanvas.cursorX = original; } @@ -398,16 +403,17 @@ public class SeqPanel extends JPanel implements MouseListener, } if (!av.getWrapAlignment()) { - while (seqCanvas.cursorX < av.getColumnSelection() - .adjustForHiddenColumns(av.getRanges().getStartRes())) + HiddenColumns hidden = av.getAlignment().getHiddenColumns(); + while (seqCanvas.cursorX < hidden.adjustForHiddenColumns(av + .getRanges().getStartRes())) { if (!ap.scrollRight(false)) { break; } } - while (seqCanvas.cursorX > av.getColumnSelection() - .adjustForHiddenColumns(av.getRanges().getEndRes())) + while (seqCanvas.cursorX > hidden.adjustForHiddenColumns(av + .getRanges().getEndRes())) { if (!ap.scrollRight(true)) { @@ -1144,8 +1150,10 @@ public class SeqPanel extends JPanel implements MouseListener, if (av.hasHiddenColumns()) { fixedColumns = true; - int y1 = av.getColumnSelection().getHiddenBoundaryLeft(startres); - int y2 = av.getColumnSelection().getHiddenBoundaryRight(startres); + int y1 = av.getAlignment().getHiddenColumns() + .getHiddenBoundaryLeft(startres); + int y2 = av.getAlignment().getHiddenColumns() + .getHiddenBoundaryRight(startres); if ((insertGap && startres > y1 && lastres < y1) || (!insertGap && startres < y2 && lastres > y2)) @@ -1220,8 +1228,8 @@ public class SeqPanel extends JPanel implements MouseListener, { if (sg.getSize() == av.getAlignment().getHeight()) { - if ((av.hasHiddenColumns() && startres < av - .getColumnSelection().getHiddenBoundaryRight(startres))) + if ((av.hasHiddenColumns() && startres < av.getAlignment() + .getHiddenColumns().getHiddenBoundaryRight(startres))) { endEditing(); return; @@ -1957,7 +1965,7 @@ public class SeqPanel extends JPanel implements MouseListener, */ @Override public void selection(SequenceGroup seqsel, ColumnSelection colsel, - SelectionSource source) + HiddenColumns hidden, SelectionSource source) { // TODO: fix this hack - source of messages is align viewport, but SeqPanel // handles selection messages... @@ -1993,7 +2001,7 @@ public class SeqPanel extends JPanel implements MouseListener, * Check for selection in a view of which this one is a dna/protein * complement. */ - if (selectionFromTranslation(seqsel, colsel, source)) + if (selectionFromTranslation(seqsel, colsel, hidden, source)) { return; } @@ -2056,7 +2064,8 @@ public class SeqPanel extends JPanel implements MouseListener, } else { - av.getColumnSelection().setElementsFrom(colsel); + av.getColumnSelection().setElementsFrom(colsel, + av.getAlignment().getHiddenColumns()); } } av.isColSelChanged(true); @@ -2065,8 +2074,8 @@ public class SeqPanel extends JPanel implements MouseListener, if (copycolsel && av.hasHiddenColumns() - && (av.getColumnSelection() == null || av.getColumnSelection() - .getHiddenColumns() == null)) + && (av.getAlignment().getHiddenColumns() == null || av + .getAlignment().getHiddenColumns().getListOfCols() == null)) { System.err.println("Bad things"); } @@ -2095,7 +2104,8 @@ public class SeqPanel extends JPanel implements MouseListener, * @param source */ protected boolean selectionFromTranslation(SequenceGroup seqsel, - ColumnSelection colsel, SelectionSource source) + ColumnSelection colsel, HiddenColumns hidden, + SelectionSource source) { if (!(source instanceof AlignViewportI)) { @@ -2118,9 +2128,13 @@ public class SeqPanel extends JPanel implements MouseListener, /* * Map column selection */ - ColumnSelection cs = MappingUtils.mapColumnSelection(colsel, sourceAv, - av); + // ColumnSelection cs = MappingUtils.mapColumnSelection(colsel, sourceAv, + // av); + ColumnSelection cs = new ColumnSelection(); + HiddenColumns hs = new HiddenColumns(); + MappingUtils.mapColumnSelection(colsel, hidden, sourceAv, av, cs, hs); av.setColumnSelection(cs); + av.getAlignment().setHiddenColumns(hs); // lastly, update any dependent dialogs if (ap.getCalculationDialog() != null)