X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FHistoryItem.java;h=09e87f320bd3a4448a95bd245435e90ccbf337ab;hb=621a628afc1f6ee7a2778b9d0ae2729b88fe5bfd;hp=ed119e8d8c649eb6e0dbf1c950e81c955bbd2f7d;hpb=588042b69abf8e60bcc950b24c283933c7dd422f;p=jalview.git diff --git a/src/jalview/datamodel/HistoryItem.java b/src/jalview/datamodel/HistoryItem.java index ed119e8..09e87f3 100755 --- a/src/jalview/datamodel/HistoryItem.java +++ b/src/jalview/datamodel/HistoryItem.java @@ -21,49 +21,139 @@ package jalview.datamodel; import java.util.*; -public class HistoryItem { - public static final int EDIT = 0; - public static final int SORT = 1; - public static final int HIDE = 2; - public static final int PASTE = 3; - final int type; - Vector sequences; - Vector alignIndex; - String description; - Vector hiddenSeqs; - - public HistoryItem(String description, AlignmentI al, int type) { - this.type = type; - this.description = description; - sequences = new Vector(); - alignIndex = new Vector(); - hiddenSeqs = new Vector(); - - for (int i = 0; i < al.getHeight(); i++) { - SequenceI seq = al.getSequenceAt(i); - sequences.addElement(seq); - alignIndex.addElement(i + ""); - hiddenSeqs.addElement(seq.getSequence().toString()); - } - } +/** + * DOCUMENT ME! + * + * @author $author$ + * @version $Revision$ + */ +public class HistoryItem +{ + /** DOCUMENT ME!! */ + public static final int EDIT = 0; - public int getType() { - return type; - } + /** DOCUMENT ME!! */ + public static final int SORT = 1; + + /** DOCUMENT ME!! */ + public static final int HIDE = 2; + + /** DOCUMENT ME!! */ + public static final int PASTE = 3; + + final int type; + + AlignmentI alignment; + String description; + + Vector sequences; + Vector seqAsString; + Vector alignIndex; + + Vector hiddenSeqs; + Vector hiddenSeqsAsString; + + + /** + * Creates a new HistoryItem object. + * + * @param description DOCUMENT ME! + * @param al DOCUMENT ME! + * @param type DOCUMENT ME! + */ + public HistoryItem(String description, AlignmentI al, int type) + { + alignment = al; + this.type = type; + this.description = description; + sequences = new Vector(); + alignIndex = new Vector(); + seqAsString = new Vector(); - public Vector getSequences() { - return sequences; + for (int i = 0; i < al.getHeight(); i++) + { + SequenceI seq = al.getSequenceAt(i); + sequences.addElement(seq); + alignIndex.addElement(i + ""); + seqAsString.addElement(seq.getStart() + +" "+seq.getEnd() + +" "+seq.getSequence().toString()); } - public String getDescription() { - return description; + if(alignment.getHiddenSequences()!=null + && alignment.getHiddenSequences().getSize()>0) + { + hiddenSeqs = new Vector(); + hiddenSeqsAsString = new Vector(); + Enumeration en = alignment.getHiddenSequences().hiddenSequences.elements(); + while (en.hasMoreElements()) + { + SequenceI key = (SequenceI) en.nextElement(); + hiddenSeqs.addElement(key); + hiddenSeqsAsString.addElement(key.getSequence().toString()); + } } + } - public Vector getHidden() { - return hiddenSeqs; + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ + public String getDescription() + { + return description; + } + + + public void restore() + { + if (type == HistoryItem.SORT) + { + for (int i = 0; i < sequences.size(); i++) + { + alignment.getSequences().setElementAt(sequences.elementAt(i), i); + } } + else + { + StringTokenizer st; + for (int i = 0; i < sequences.size(); i++) + { + SequenceI restore = (SequenceI) sequences.elementAt(i); + + + if (restore.getLength() == 0) + { + //This is for edits which remove all residues in a sequence + alignment.getSequences().insertElementAt(restore, + Integer.parseInt(alignIndex.elementAt(i).toString())); + } - public int getAlignIndex(int seq) { - return Integer.parseInt(alignIndex.elementAt(seq).toString()); + st = new StringTokenizer(seqAsString.elementAt(i).toString()); + restore.setStart(Integer.parseInt(st.nextToken())); + restore.setEnd(Integer.parseInt(st.nextToken())); + restore.setSequence(st.nextToken()); + } + + if(hiddenSeqs!=null) + { + for(int hs=0; hs (sequences.size() - 1); i--) + { + alignment.deleteSequence(i); + } + } } + + } }