+ // 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
+ {\r
+ viewport.alignment.getSequences().setElementAt(hi.getSequences().\r
+ elementAt(i), i);\r
+ }\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
+ {\r
+ restore.setSequence(hi.getHidden().elementAt(i).toString());\r
+ }\r
+ }\r
+ if (hi.getType() == HistoryItem.PASTE)\r
+ {\r
+ for (int i = viewport.alignment.getHeight() - 1;\r
+ i > hi.getSequences().size() - 1; i--)\r
+ {\r
+ viewport.alignment.deleteSequence(i);\r
+ }\r
+ }\r
+ }\r