GPL license added
[jalview.git] / src / jalview / gui / ColumnSelection.java
1 /*\r
2 * Jalview - A Sequence Alignment Editor and Viewer\r
3 * Copyright (C) 2005 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
4 *\r
5 * This program is free software; you can redistribute it and/or\r
6 * modify it under the terms of the GNU General Public License\r
7 * as published by the Free Software Foundation; either version 2\r
8 * of the License, or (at your option) any later version.\r
9 *\r
10 * This program is distributed in the hope that it will be useful,\r
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 * GNU General Public License for more details.\r
14 *\r
15 * You should have received a copy of the GNU General Public License\r
16 * along with this program; if not, write to the Free Software\r
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
18 */\r
19 \r
20 package jalview.gui;\r
21 \r
22 import java.util.*;\r
23 \r
24 /**\r
25  * NOTE: Columns are zero based.\r
26  */\r
27 public class ColumnSelection{\r
28   Vector selected = new Vector();\r
29 \r
30   public void addElement(int col) {\r
31     selected.addElement(new Integer(col));\r
32   }\r
33 \r
34   public void clear() {\r
35     selected.removeAllElements();\r
36   }\r
37 \r
38   public void removeElement(int col) {\r
39     Integer colInt = new Integer(col);\r
40     if (selected.contains(colInt)) {\r
41       selected.removeElement(colInt);\r
42     } else {\r
43       System.err.println("WARNING: Tried to remove Integer NOT in ColumnSelection");\r
44     }\r
45   }\r
46 \r
47   public boolean contains(int col) {\r
48     return selected.contains(new Integer(col));\r
49   }\r
50 \r
51   public int columnAt(int i) {\r
52     return ((Integer)selected.elementAt(i)).intValue();\r
53   }\r
54 \r
55   public int size() {\r
56     return selected.size();\r
57   }\r
58 \r
59   public int getMax() {\r
60     int max = -1;\r
61 \r
62     for (int i=0;i<selected.size();i++) {\r
63       if (columnAt(i) > max) {\r
64         max = columnAt(i);\r
65       }\r
66     }\r
67     return max;\r
68   }\r
69 \r
70   public int getMin() {\r
71     int min = 1000000000;\r
72 \r
73     for (int i=0;i<selected.size();i++) {\r
74       if (columnAt(i) < min) {\r
75         min = columnAt(i);\r
76       }\r
77     }\r
78     return min;\r
79   }\r
80 \r
81   public Vector asVector() {\r
82     return selected;\r
83   }\r
84 \r
85   public void compensateForEdit(int start, int change) {\r
86     for (int i=0; i < size();i++) {\r
87       int temp = columnAt(i);\r
88 \r
89       if (temp >= start)\r
90         selected.setElementAt(new Integer(temp-change),i);\r
91     }\r
92   }\r
93 }\r