Allow for non graph annotations in combobox
[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     public void removeElements(int start, int end)\r
68     {\r
69       Integer colInt;\r
70       for(int i=start; i<end; i++)\r
71       {\r
72         colInt = new Integer(i);\r
73         if (selected.contains(colInt))\r
74         {\r
75             selected.removeElement(colInt);\r
76         }\r
77       }\r
78     }\r
79 \r
80     /**\r
81      * DOCUMENT ME!\r
82      *\r
83      * @param col DOCUMENT ME!\r
84      *\r
85      * @return DOCUMENT ME!\r
86      */\r
87     public boolean contains(int col)\r
88     {\r
89         return selected.contains(new Integer(col));\r
90     }\r
91 \r
92     /**\r
93      * DOCUMENT ME!\r
94      *\r
95      * @param i DOCUMENT ME!\r
96      *\r
97      * @return DOCUMENT ME!\r
98      */\r
99     public int columnAt(int i)\r
100     {\r
101         return ((Integer) selected.elementAt(i)).intValue();\r
102     }\r
103 \r
104     /**\r
105      * DOCUMENT ME!\r
106      *\r
107      * @return DOCUMENT ME!\r
108      */\r
109     public int size()\r
110     {\r
111         return selected.size();\r
112     }\r
113 \r
114     /**\r
115      * DOCUMENT ME!\r
116      *\r
117      * @return DOCUMENT ME!\r
118      */\r
119     public int getMax()\r
120     {\r
121         int max = -1;\r
122 \r
123         for (int i = 0; i < selected.size(); i++)\r
124         {\r
125             if (columnAt(i) > max)\r
126             {\r
127                 max = columnAt(i);\r
128             }\r
129         }\r
130 \r
131         return max;\r
132     }\r
133 \r
134     /**\r
135      * DOCUMENT ME!\r
136      *\r
137      * @return DOCUMENT ME!\r
138      */\r
139     public int getMin()\r
140     {\r
141         int min = 1000000000;\r
142 \r
143         for (int i = 0; i < selected.size(); i++)\r
144         {\r
145             if (columnAt(i) < min)\r
146             {\r
147                 min = columnAt(i);\r
148             }\r
149         }\r
150 \r
151         return min;\r
152     }\r
153 \r
154     /**\r
155      * DOCUMENT ME!\r
156      *\r
157      * @return DOCUMENT ME!\r
158      */\r
159     public Vector asVector()\r
160     {\r
161         return selected;\r
162     }\r
163 \r
164     /**\r
165      * DOCUMENT ME!\r
166      *\r
167      * @param start DOCUMENT ME!\r
168      * @param change DOCUMENT ME!\r
169      */\r
170     public void compensateForEdit(int start, int change)\r
171     {\r
172         for (int i = 0; i < size(); i++)\r
173         {\r
174             int temp = columnAt(i);\r
175 \r
176             if (temp >= start)\r
177             {\r
178                 selected.setElementAt(new Integer(temp - change), i);\r
179             }\r
180         }\r
181     }\r
182 }\r