X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2FHistoryItem.java;h=09e87f320bd3a4448a95bd245435e90ccbf337ab;hb=d6e1bbede5adc04f34c969213ac6a4c6d9e5d34a;hp=bb18b661d40fb840c958b20c75febe8c44e5349e;hpb=99c58ee0ae2a848f982552e53feaf6d5cb9925e5;p=jalview.git diff --git a/src/jalview/datamodel/HistoryItem.java b/src/jalview/datamodel/HistoryItem.java index bb18b66..09e87f3 100755 --- a/src/jalview/datamodel/HistoryItem.java +++ b/src/jalview/datamodel/HistoryItem.java @@ -16,56 +16,144 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA */ - package jalview.datamodel; import java.util.*; + +/** + * DOCUMENT ME! + * + * @author $author$ + * @version $Revision$ + */ public class HistoryItem { + /** DOCUMENT ME!! */ public static final int EDIT = 0; + + /** DOCUMENT ME!! */ public static final int SORT = 1; + + /** DOCUMENT ME!! */ public static final int HIDE = 2; - public static final int PASTE= 3; + + /** DOCUMENT ME!! */ + public static final int PASTE = 3; final int type; + + AlignmentI alignment; + String description; + Vector sequences; + Vector seqAsString; Vector alignIndex; - String description; + 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(); - hiddenSeqs = new Vector(); + seqAsString = 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()); + seqAsString.addElement(seq.getStart() + +" "+seq.getEnd() + +" "+seq.getSequence().toString()); } - } - public int getType() - {return type;} - - public Vector getSequences() - {return sequences;} + 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()); + } + } + } + /** + * DOCUMENT ME! + * + * @return DOCUMENT ME! + */ public String getDescription() - {return description; } + { + return description; + } - public Vector getHidden() - { return hiddenSeqs; } - public int getAlignIndex(int seq) + public void restore() { - return Integer.parseInt(alignIndex.elementAt(seq).toString()); - } + 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())); + } + + 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); + } + } + } + + } }