X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FColumnSelection.java;h=46c4c875ea30dfa908bb7860f41a0361e98f1402;hb=c39e588784c0fbb64c7dabfcae8db4faedde10e6;hp=c35ff4628bdb4058b869c2b2da840643353812e0;hpb=8b08ad675b71e43e127d7be3b65c6d2f9d9094db;p=jalview.git diff --git a/src/jalview/datamodel/ColumnSelection.java b/src/jalview/datamodel/ColumnSelection.java index c35ff46..46c4c87 100644 --- a/src/jalview/datamodel/ColumnSelection.java +++ b/src/jalview/datamodel/ColumnSelection.java @@ -1,6 +1,6 @@ /* * Jalview - A Sequence Alignment Editor and Viewer - * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -18,10 +18,10 @@ */ package jalview.datamodel; -import jalview.util.ShiftList; - import java.util.*; +import jalview.util.*; + /** * NOTE: Columns are zero based. */ @@ -77,7 +77,7 @@ public class ColumnSelection public void removeElements(int start, int end) { Integer colInt; - for(int i=start; i start) + if (region[0] > start && start + change > region[1]) + { + deletedHiddenColumns.addElement( + hiddenColumns.elementAt(i)); + + hiddenColumns.removeElementAt(i); + i--; + hSize--; + continue; + } + + if (region[0] > start) { region[0] -= change; region[1] -= change; } - if(region[0]<0) + + if (region[0] < 0) + { region[0] = 0; - if(region[1] <0) - region[1] = 0; + } + } + + this.revealHiddenColumns(0); } + + return deletedHiddenColumns; } + /** * propagate shift in alignment columns to column selection * special version of compensateForEdit - allowing for edits within hidden regions @@ -222,51 +243,63 @@ public class ColumnSelection } } - if(hiddenColumns!=null) + if (hiddenColumns != null) { - for(int i=0; i= start) + if (region[0] >= start) { region[0] -= change; } - if (region[1]>= start) { - region[1] -=change; + if (region[1] >= start) + { + region[1] -= change; } - if (region[1]