X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FColumnSelection.java;h=a36faf792433713b39515c900f68c73f55191abe;hb=8a6fa9ea9900d0f106529c3f6283e7f9d76dd2cb;hp=afa2e07103b168f6a73756ecb62f44240c1aebdd;hpb=4bc692b7e0ccca12c362bcb6ee9b4c88f431bd22;p=jalview.git diff --git a/src/jalview/datamodel/ColumnSelection.java b/src/jalview/datamodel/ColumnSelection.java index afa2e07..a36faf7 100644 --- a/src/jalview/datamodel/ColumnSelection.java +++ b/src/jalview/datamodel/ColumnSelection.java @@ -1,20 +1,19 @@ /* - * Jalview - A Sequence Alignment Editor and Viewer (Development Version 2.4.1) - * Copyright (C) 2009 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6) + * Copyright (C) 2010 J Procter, AM Waterhouse, 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 - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. + * This file is part of Jalview. * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with Jalview. If not, see . */ package jalview.datamodel; @@ -509,8 +508,9 @@ public class ColumnSelection } /** - * Use this method to find out where a visible column is in the alignment when - * hidden columns exist + * Use this method to find out where a column will appear in the visible + * alignment when hidden columns exist. If the column is not visible, then the + * left-most visible column will always be returned. * * @param hiddenColumn * int @@ -522,21 +522,21 @@ public class ColumnSelection if (hiddenColumns != null) { int index = 0; - int gaps = 0; + int[] region; do { - int[] region = (int[]) hiddenColumns.elementAt(index); + region = (int[]) hiddenColumns.elementAt(index++); if (hiddenColumn > region[1]) { result -= region[1] + 1 - region[0]; } - index++; - } while (index < hiddenColumns.size()); - - result -= gaps; + } while ((hiddenColumn > region[1]) && (index < hiddenColumns.size())); + if (hiddenColumn > region[0] && hiddenColumn < region[1]) + { + return region[0] + hiddenColumn - result; + } } - - return result; + return result; // return the shifted position after removing hidden columns. } /** @@ -1060,7 +1060,9 @@ public class ColumnSelection } /** - * add in any unselected columns from the given column selection, excluding any that are hidden. + * add in any unselected columns from the given column selection, excluding + * any that are hidden. + * * @param colsel */ public void addElementsFrom(ColumnSelection colsel) @@ -1071,7 +1073,8 @@ public class ColumnSelection while (e.hasMoreElements()) { Object eo = e.nextElement(); - if (hiddenColumns!=null && isVisible(((Integer) eo).intValue())) { + if (hiddenColumns != null && isVisible(((Integer) eo).intValue())) + { if (!selected.contains(eo)) { selected.addElement(eo); @@ -1080,27 +1083,33 @@ public class ColumnSelection } } } -/** - * set the selected columns the given column selection, excluding any columns that are hidden. - * @param colsel - */ + + /** + * set the selected columns the given column selection, excluding any columns + * that are hidden. + * + * @param colsel + */ public void setElementsFrom(ColumnSelection colsel) { + selected = new Vector(); if (colsel.selected != null && colsel.selected.size() > 0) { - if (hiddenColumns!=null && hiddenColumns.size()>0) + if (hiddenColumns != null && hiddenColumns.size() > 0) { // only select visible columns in this columns selection selected = new Vector(); addElementsFrom(colsel); - } else { - // be quick - selected = new Vector(colsel.selected); } - } - else - { - selected = new Vector(); + else + { + // add everything regardless + Enumeration en = colsel.selected.elements(); + while (en.hasMoreElements()) + { + selected.addElement(en.nextElement()); + } + } } } }