- /**\r
- * Copy constructor\r
- * @param copy\r
- */\r
- public ColumnSelection(ColumnSelection copy) {\r
- if (copy!=null) {\r
- if (copy.selected!=null) {\r
- selected = new Vector();\r
- for (int i=0,j=copy.selected.size(); i<j; i++) {\r
- selected.setElementAt(((Integer) copy.selected.elementAt(i)), i);\r
- }\r
- }\r
- if (copy.hiddenColumns!=null) {\r
- hiddenColumns=new Vector();\r
- for (int i=0,j=copy.hiddenColumns.size(); i<j; i++) {\r
- int[] rh,cp;\r
- rh = (int[])copy.hiddenColumns.elementAt(i);\r
- if (rh!=null) {\r
- cp = new int[rh.length];\r
- System.arraycopy(rh, 0, cp, 0, rh.length);\r
- hiddenColumns.setElementAt(cp, i);\r
- }\r
- }\r
+ else\r
+ {\r
+ alignmentAnnotation.restrict(start, end);\r
+ }\r
+ }\r
+\r
+ /**\r
+ * Invert the column selection from first to end-1. leaves hiddenColumns\r
+ * untouched (and unselected)\r
+ * \r
+ * @param first\r
+ * @param end\r
+ */\r
+ public void invertColumnSelection(int first, int width)\r
+ {\r
+ boolean hasHidden = hiddenColumns != null && hiddenColumns.size() > 0;\r
+ for (int i = first; i < width; i++)\r
+ {\r
+ if (contains(i))\r
+ {\r
+ removeElement(i);\r
+ }\r
+ else\r
+ {\r
+ if (!hasHidden || isVisible(i))\r
+ {\r
+ addElement(i);\r