* @param start beginning of edit\r
* @param left shift in edit (+ve for removal, or -ve for inserts)\r
*/\r
- public void compensateForEdit(int start, int change)\r
+ public Vector compensateForEdit(int start, int change)\r
{\r
+ Vector deletedHiddenColumns = null;\r
for (int i = 0; i < size(); i++)\r
{\r
int temp = columnAt(i);\r
\r
if(hiddenColumns!=null)\r
{\r
- for(int i=0; i<hiddenColumns.size(); i++)\r
+ deletedHiddenColumns = new Vector();\r
+ int hSize = hiddenColumns.size();\r
+ for(int i=0; i<hSize; i++)\r
{\r
int[] region = (int[]) hiddenColumns.elementAt(i);\r
- if(region[0] > start)\r
+ if ( region[0]>start && start+change>region[1] )\r
+ {\r
+ deletedHiddenColumns.addElement(\r
+ hiddenColumns.elementAt(i));\r
+\r
+ hiddenColumns.removeElementAt(i);\r
+ i--;\r
+ hSize--;\r
+ continue;\r
+ }\r
+\r
+ if(region[0]>start)\r
{\r
region[0] -= change;\r
region[1] -= change;\r
}\r
+\r
if(region[0]<0)\r
region[0] = 0;\r
- if(region[1] <0)\r
- region[1] = 0;\r
+\r
}\r
+\r
+ this.revealHiddenColumns(0);\r
}\r
+\r
+ return deletedHiddenColumns;\r
}\r
/**\r
* propagate shift in alignment columns to column selection\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
+ selected.addElement(copy.selected.elementAt(i));\r
}\r
}\r
if (copy.hiddenColumns!=null) {\r
- hiddenColumns=new Vector();\r
+ hiddenColumns=new Vector(copy.hiddenColumns.size());\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
+ hiddenColumns.addElement(cp);\r
}\r
}\r
}\r