X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fappletgui%2FSeqPanel.java;h=d46cc346eb4c74fe5137aa2d93f795a5c850d9bd;hb=268dfe33ea14bbcdfb0671a1ec8acc5e9c423426;hp=60c53dd09c00345d097b3bf70f4b4ba93426f089;hpb=651ed4273f899e80f4931bed82714355e16fd837;p=jalview.git diff --git a/src/jalview/appletgui/SeqPanel.java b/src/jalview/appletgui/SeqPanel.java index 60c53dd..d46cc34 100644 --- a/src/jalview/appletgui/SeqPanel.java +++ b/src/jalview/appletgui/SeqPanel.java @@ -25,6 +25,7 @@ import jalview.commands.EditCommand; import jalview.commands.EditCommand.Action; import jalview.datamodel.AlignmentI; import jalview.datamodel.ColumnSelection; +import jalview.datamodel.HiddenColumns; import jalview.datamodel.SearchResultMatchI; import jalview.datamodel.SearchResults; import jalview.datamodel.SearchResultsI; @@ -180,19 +181,22 @@ public class SeqPanel extends Panel implements MouseMotionListener, seqCanvas.cursorX += dx; seqCanvas.cursorY += dy; if (av.hasHiddenColumns() - && !av.getColumnSelection().isVisible(seqCanvas.cursorX)) + && !av.getAlignment().getHiddenColumns() + .isVisible(seqCanvas.cursorX)) { int original = seqCanvas.cursorX - dx; int maxWidth = av.getAlignment().getWidth(); - while (!av.getColumnSelection().isVisible(seqCanvas.cursorX) + while (!av.getAlignment().getHiddenColumns() + .isVisible(seqCanvas.cursorX) && seqCanvas.cursorX < maxWidth && seqCanvas.cursorX > 0) { seqCanvas.cursorX += dx; } if (seqCanvas.cursorX >= maxWidth - || !av.getColumnSelection().isVisible(seqCanvas.cursorX)) + || !av.getAlignment().getHiddenColumns() + .isVisible(seqCanvas.cursorX)) { seqCanvas.cursorX = original; } @@ -228,16 +232,17 @@ public class SeqPanel extends Panel implements MouseMotionListener, else { ViewportRanges ranges = av.getRanges(); + HiddenColumns hidden = av.getAlignment().getHiddenColumns(); while (seqCanvas.cursorY < ranges.getStartSeq()) { ap.scrollUp(true); } - while (seqCanvas.cursorY + 1 > ranges.getEndSeq()) + while (seqCanvas.cursorY > ranges.getEndSeq()) { ap.scrollUp(false); } - while (seqCanvas.cursorX < av.getColumnSelection() - .adjustForHiddenColumns(ranges.getStartRes())) + while (seqCanvas.cursorX < hidden.adjustForHiddenColumns(ranges + .getStartRes())) { if (!ap.scrollRight(false)) @@ -245,8 +250,8 @@ public class SeqPanel extends Panel implements MouseMotionListener, break; } } - while (seqCanvas.cursorX > av.getColumnSelection() - .adjustForHiddenColumns(ranges.getEndRes())) + while (seqCanvas.cursorX > hidden.adjustForHiddenColumns(ranges + .getEndRes())) { if (!ap.scrollRight(true)) { @@ -570,7 +575,7 @@ public class SeqPanel extends Panel implements MouseMotionListener, if (features != null && features.length > 0) { seqCanvas.getFeatureRenderer().amendFeatures( - new SequenceI[] { sequence }, features, false, ap, null); + new SequenceI[] { sequence }, features, false, ap); seqCanvas.highlightSearchResults(null); } @@ -638,7 +643,8 @@ public class SeqPanel extends Panel implements MouseMotionListener, if (av.hasHiddenColumns()) { - res = av.getColumnSelection().adjustForHiddenColumns(res); + res = av.getAlignment().getHiddenColumns() + .adjustForHiddenColumns(res); } return res; @@ -959,7 +965,9 @@ public class SeqPanel extends Panel implements MouseMotionListener, fontSize = 1; } - av.setFont(new Font(av.font.getName(), av.font.getStyle(), fontSize)); + av.setFont( + new Font(av.font.getName(), av.font.getStyle(), fontSize), + true); av.setCharWidth(oldWidth); } else @@ -1131,8 +1139,10 @@ public class SeqPanel extends Panel implements MouseMotionListener, 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)) @@ -1203,8 +1213,8 @@ public class SeqPanel extends Panel implements MouseMotionListener, { 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; @@ -1787,7 +1797,7 @@ public class SeqPanel extends Panel implements MouseMotionListener, */ @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... @@ -1804,7 +1814,7 @@ public class SeqPanel extends Panel implements MouseMotionListener, * 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; } @@ -1870,15 +1880,16 @@ public class SeqPanel extends Panel implements MouseMotionListener, } else { - av.getColumnSelection().setElementsFrom(colsel); + av.getColumnSelection().setElementsFrom(colsel, + av.getAlignment().getHiddenColumns()); } } repaint |= av.isColSelChanged(true); } if (copycolsel && av.hasHiddenColumns() - && (av.getColumnSelection() == null || av.getColumnSelection() - .getHiddenColumns() == null)) + && (av.getColumnSelection() == null || av.getAlignment() + .getHiddenColumns().getHiddenRegions() == null)) { System.err.println("Bad things"); } @@ -1938,7 +1949,8 @@ public class SeqPanel extends Panel implements MouseMotionListener, * @param source */ protected boolean selectionFromTranslation(SequenceGroup seqsel, - ColumnSelection colsel, SelectionSource source) + ColumnSelection colsel, HiddenColumns hidden, + SelectionSource source) { if (!(source instanceof AlignViewportI)) { @@ -1961,9 +1973,13 @@ public class SeqPanel extends Panel implements MouseMotionListener, /* * 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); ap.scalePanelHolder.repaint(); ap.repaint();