+ // used by undo and redo\r
+ void restoreHistoryItem(HistoryItem hi)\r
+ {\r
+ if(hi.getType()== HistoryItem.SORT)\r
+ {\r
+ for(int i=0; i<hi.getSequences().size(); i++)\r
+ viewport.alignment.getSequences().setElementAt(hi.getSequences().elementAt(i), i);\r
+ }\r
+ else\r
+ {\r
+ for (int i = 0; i < hi.getSequences().size(); i++)\r
+ {\r
+ SequenceI restore = (SequenceI) hi.getSequences().elementAt(i);\r
+ if(restore.getLength()==0)\r
+ {\r
+ // log.System.out.println(hi.getHidden().elementAt(i));\r
+ restore.setSequence(hi.getHidden().elementAt(i).toString());\r
+ viewport.alignment.getSequences().insertElementAt(\r
+ restore,\r
+ hi.getAlignIndex(i));\r
+ }\r
+ else\r
+ restore.setSequence(hi.getHidden().elementAt(i).toString());\r
+ }\r
+ if(hi.getType()==HistoryItem.PASTE)\r
+ {\r
+ for(int i=viewport.alignment.getHeight()-1;i>hi.getSequences().size()-1; i--)\r
+ viewport.alignment.deleteSequence(i);\r
+ }\r
+ }\r