*/\r
package jalview.datamodel;\r
\r
+import jalview.util.ShiftList;\r
+\r
import java.util.*;\r
\r
/**\r
Vector hiddenColumns;\r
\r
/**\r
- * DOCUMENT ME!\r
+ * Add a column to the selection\r
*\r
- * @param col DOCUMENT ME!\r
+ * @param col index of column\r
*/\r
public void addElement(int col)\r
{\r
- if (!selected.contains(new Integer(col)))\r
+ Integer column = new Integer(col);\r
+ if (!selected.contains(column))\r
{\r
- selected.addElement(new Integer(col));\r
+ selected.addElement(column);\r
}\r
}\r
\r
/**\r
- * DOCUMENT ME!\r
+ * clears column selection\r
*/\r
public void clear()\r
{\r
}\r
\r
/**\r
- * DOCUMENT ME!\r
+ * removes col from selection\r
*\r
- * @param col DOCUMENT ME!\r
+ * @param col index of column to be removed\r
*/\r
public void removeElement(int col)\r
{\r
}\r
}\r
\r
+ /**\r
+ * removes a range of columns from the selection\r
+ * @param start int - first column in range to be removed\r
+ * @param end int - last col\r
+ */\r
public void removeElements(int start, int end)\r
{\r
Integer colInt;\r
}\r
}\r
}\r
-\r
+ /**\r
+ *\r
+ * @return Vector containing selected columns as Integers\r
+ */\r
public Vector getSelected()\r
{\r
return selected;\r
}\r
\r
/**\r
- * DOCUMENT ME!\r
*\r
- * @param col DOCUMENT ME!\r
+ * @param col index to search for in column selection\r
*\r
- * @return DOCUMENT ME!\r
+ * @return true if Integer(col) is in selection.\r
*/\r
public boolean contains(int col)\r
{\r
\r
\r
/**\r
- * DOCUMENT ME!\r
+ * propagate shift in alignment columns to column selection\r
*\r
- * @param start DOCUMENT ME!\r
- * @param change DOCUMENT ME!\r
+ * @param start beginning of edit\r
+ * @param change shift in edit (-ve or +ve number of columns)\r
*/\r
public void compensateForEdit(int start, int change)\r
{\r
}\r
}\r
}\r
-\r
+ public ShiftList compensateForEdits(ShiftList shiftrecord) {\r
+ if (shiftrecord!=null) {\r
+ Vector shifts = shiftrecord.shifts;\r
+ if (shifts!=null && shifts.size()>0) {\r
+ for (int i=0,j=shifts.size(); i<j; i++) {\r
+ int[] sh = (int[]) shifts.elementAt(i);\r
+ compensateForEdit(sh[0], sh[1]);\r
+ }\r
+ }\r
+ return shiftrecord.getInverse();\r
+ }\r
+ return null;\r
+ }\r
/**\r
* This Method is used to return all the HiddenColumn regions\r
* less than the given index.\r
{\r
return hiddenColumns;\r
}\r
-\r
+ /**\r
+ * Return absolute column index for a visible column index\r
+ * @param column int column index in alignment view\r
+ * @return alignment column index for column\r
+ */\r
public int adjustForHiddenColumns(int column)\r
{\r
int result = column;\r
}\r
\r
return alPos;\r
+\r
}\r
\r
public void hideSelectedColumns()\r
for (int i = 0; i < hiddenColumns.size(); i++)\r
{\r
int[] region = (int[]) hiddenColumns.elementAt(i);\r
- for (int j = region[0]; j < region[1]; j++)\r
+ for (int j = region[0]; j < region[1]+1; j++)\r
{\r
addElement(j);\r
}\r
int [] region = (int[])hiddenColumns.elementAt(i);\r
if( res == region[0])\r
{\r
- for (int j = region[0]; j < region[1]; j++)\r
+ for (int j = region[0]; j < region[1]+1; j++)\r
{\r
addElement(j);\r
}\r
}\r
return true;\r
}\r
+ /**\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
+ }\r
+ }\r
+ }\r
\r
+ /**\r
+ * ColumnSelection\r
+ */\r
+ public ColumnSelection()\r
+ {\r
+ }\r
}\r