+public class ColumnSelection\r
+{\r
+ Vector selected = new Vector();\r
+\r
+ //Vector of int [] {startCol, endCol}\r
+ Vector hiddenColumns;\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param col DOCUMENT ME!\r
+ */\r
+ public void addElement(int col)\r
+ {\r
+ if (!selected.contains(new Integer(col)))\r
+ {\r
+ selected.addElement(new Integer(col));\r
+ }\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ */\r
+ public void clear()\r
+ {\r
+ selected.removeAllElements();\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param col DOCUMENT ME!\r
+ */\r
+ public void removeElement(int col)\r
+ {\r
+ Integer colInt = new Integer(col);\r
+\r
+ if (selected.contains(colInt))\r
+ {\r
+ selected.removeElement(colInt);\r
+ }\r
+ }\r
+\r
+ public void removeElements(int start, int end)\r
+ {\r
+ Integer colInt;\r
+ for(int i=start; i<end; i++)\r
+ {\r
+ colInt = new Integer(i);\r
+ if (selected.contains(colInt))\r
+ {\r
+ selected.removeElement(colInt);\r
+ }\r
+ }\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param col DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public boolean contains(int col)\r
+ {\r
+ return selected.contains(new Integer(col));\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param i DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int columnAt(int i)\r
+ {\r
+ return ((Integer) selected.elementAt(i)).intValue();\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int size()\r
+ {\r
+ return selected.size();\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int getMax()\r
+ {\r
+ int max = -1;\r
+\r
+ for (int i = 0; i < selected.size(); i++)\r
+ {\r
+ if (columnAt(i) > max)\r
+ {\r
+ max = columnAt(i);\r
+ }\r
+ }\r
+\r
+ return max;\r
+ }\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @return DOCUMENT ME!\r
+ */\r
+ public int getMin()\r
+ {\r
+ int min = 1000000000;\r
+\r
+ for (int i = 0; i < selected.size(); i++)\r
+ {\r
+ if (columnAt(i) < min)\r
+ {\r
+ min = columnAt(i);\r
+ }\r
+ }\r
+\r
+ return min;\r
+ }\r
+\r
+\r
+ /**\r
+ * DOCUMENT ME!\r
+ *\r
+ * @param start DOCUMENT ME!\r
+ * @param change DOCUMENT ME!\r
+ */\r
+ public void compensateForEdit(int start, int change)\r
+ {\r
+ for (int i = 0; i < size(); i++)\r
+ {\r
+ int temp = columnAt(i);\r
+\r
+ if (temp >= start)\r
+ {\r
+ selected.setElementAt(new Integer(temp - change), i);\r
+ }\r
+ }\r
+\r
+ if(hiddenColumns!=null)\r
+ {\r
+ for(int i=0; i<hiddenColumns.size(); i++)\r
+ {\r
+ int[] region = (int[]) hiddenColumns.elementAt(i);\r
+ if(region[0] > start)\r
+ {\r
+ region[0] -= change;\r
+ region[1] -= change;\r
+ }\r
+ if(region[0]<0)\r
+ region[0] = 0;\r
+ if(region[1] <0)\r
+ region[1] = 0;\r
+ }\r
+ }\r
+ }\r