Formatting changes
[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 package jalview.gui;\r
20 \r
21 import java.util.*;\r
22 \r
23 \r
24 /**\r
25  * NOTE: Columns are zero based.\r
26  */\r
27 public class ColumnSelection\r
28 {\r
29     Vector selected = new Vector();\r
30 \r
31     /**\r
32      * DOCUMENT ME!\r
33      *\r
34      * @param col DOCUMENT ME!\r
35      */\r
36     public void addElement(int col)\r
37     {\r
38         if (!selected.contains(new Integer(col)))\r
39         {\r
40             selected.addElement(new Integer(col));\r
41         }\r
42     }\r
43 \r
44     /**\r
45      * DOCUMENT ME!\r
46      */\r
47     public void clear()\r
48     {\r
49         selected.removeAllElements();\r
50     }\r
51 \r
52     /**\r
53      * DOCUMENT ME!\r
54      *\r
55      * @param col DOCUMENT ME!\r
56      */\r
57     public void removeElement(int col)\r
58     {\r
59         Integer colInt = new Integer(col);\r
60 \r
61         if (selected.contains(colInt))\r
62         {\r
63             selected.removeElement(colInt);\r
64         }\r
65     }\r
66 \r
67     /**\r
68      * DOCUMENT ME!\r
69      *\r
70      * @param col DOCUMENT ME!\r
71      *\r
72      * @return DOCUMENT ME!\r
73      */\r
74     public boolean contains(int col)\r
75     {\r
76         return selected.contains(new Integer(col));\r
77     }\r
78 \r
79     /**\r
80      * DOCUMENT ME!\r
81      *\r
82      * @param i DOCUMENT ME!\r
83      *\r
84      * @return DOCUMENT ME!\r
85      */\r
86     public int columnAt(int i)\r
87     {\r
88         return ((Integer) selected.elementAt(i)).intValue();\r
89     }\r
90 \r
91     /**\r
92      * DOCUMENT ME!\r
93      *\r
94      * @return DOCUMENT ME!\r
95      */\r
96     public int size()\r
97     {\r
98         return selected.size();\r
99     }\r
100 \r
101     /**\r
102      * DOCUMENT ME!\r
103      *\r
104      * @return DOCUMENT ME!\r
105      */\r
106     public int getMax()\r
107     {\r
108         int max = -1;\r
109 \r
110         for (int i = 0; i < selected.size(); i++)\r
111         {\r
112             if (columnAt(i) > max)\r
113             {\r
114                 max = columnAt(i);\r
115             }\r
116         }\r
117 \r
118         return max;\r
119     }\r
120 \r
121     /**\r
122      * DOCUMENT ME!\r
123      *\r
124      * @return DOCUMENT ME!\r
125      */\r
126     public int getMin()\r
127     {\r
128         int min = 1000000000;\r
129 \r
130         for (int i = 0; i < selected.size(); i++)\r
131         {\r
132             if (columnAt(i) < min)\r
133             {\r
134                 min = columnAt(i);\r
135             }\r
136         }\r
137 \r
138         return min;\r
139     }\r
140 \r
141     /**\r
142      * DOCUMENT ME!\r
143      *\r
144      * @return DOCUMENT ME!\r
145      */\r
146     public Vector asVector()\r
147     {\r
148         return selected;\r
149     }\r
150 \r
151     /**\r
152      * DOCUMENT ME!\r
153      *\r
154      * @param start DOCUMENT ME!\r
155      * @param change DOCUMENT ME!\r
156      */\r
157     public void compensateForEdit(int start, int change)\r
158     {\r
159         for (int i = 0; i < size(); i++)\r
160         {\r
161             int temp = columnAt(i);\r
162 \r
163             if (temp >= start)\r
164             {\r
165                 selected.setElementAt(new Integer(temp - change), i);\r
166             }\r
167         }\r
168     }\r
169 }\r