X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FHiddenColumnsCursor.java;fp=src%2Fjalview%2Fdatamodel%2FHiddenColumnsCursor.java;h=2d579b0263ebb4cd276f12bec8eaed536d0ef30e;hb=44be050a48b372e5e29c74a0b838c73269501e0e;hp=b40afdf4e7bbbc68f3938bc5bb91fd32d548c625;hpb=327368a55095d5610b71d03e4dcefeaf6131d300;p=jalview.git diff --git a/src/jalview/datamodel/HiddenColumnsCursor.java b/src/jalview/datamodel/HiddenColumnsCursor.java index b40afdf..2d579b0 100644 --- a/src/jalview/datamodel/HiddenColumnsCursor.java +++ b/src/jalview/datamodel/HiddenColumnsCursor.java @@ -43,22 +43,15 @@ public class HiddenColumnsCursor /** * Set the cursor to a position * - * @param first - * absolute position of first hidden column - * @param last - * absolute position of last hidden column - * @param index - * index of last visited region - * @param hiddenCount - * number of hidden columns before last visited region + * @param hiddenCols */ protected void resetCursor(List hiddenCols) { synchronized (this) { + hiddenColumns = hiddenCols; if ((hiddenCols != null) && (!hiddenCols.isEmpty())) { - hiddenColumns = hiddenCols; firstColumn = hiddenColumns.get(0)[0]; regionIndex = 0; hiddenSoFar = 0; @@ -66,6 +59,31 @@ public class HiddenColumnsCursor } } + /** + * Delete the region the cursor is currently at. Avoids having to reset the + * cursor just because we deleted a region. + * + * @param hiddenCols + */ + protected void updateForDeletedRegion(List hiddenCols) + { + + if ((hiddenCols != null) && (!hiddenCols.isEmpty())) + { + // if there is a region to the right of the current region, + // nothing changes; otherwise + // we deleted the last region (index=hiddenCols.size()-1) + // or the index was at the end of the alignment (index=hiddenCols.size()) + if (regionIndex >= hiddenColumns.size() - 1) + { + // deleted last region, index is now end of alignment + regionIndex = hiddenCols.size(); + } + } + + hiddenColumns = hiddenCols; + } + protected void updateCursor(int index, int hiddenCount) { synchronized (this)