/*\r
* Jalview - A Sequence Alignment Editor and Viewer\r
- * Copyright (C) 2006 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
+ * Copyright (C) 2007 AM Waterhouse, J Procter, G Barton, M Clamp, S Searle\r
*\r
* This program is free software; you can redistribute it and/or\r
* modify it under the terms of the GNU General Public License\r
\r
public class HiddenSequences\r
{\r
- public SequenceI [] hiddenSequences;\r
+ public SequenceI[] hiddenSequences;\r
AlignmentI alignment;\r
\r
public HiddenSequences(AlignmentI al)\r
\r
public int getSize()\r
{\r
- if(hiddenSequences==null)\r
+ if (hiddenSequences == null)\r
{\r
return 0;\r
}\r
int count = 0;\r
- for(int i=0; i<hiddenSequences.length; i++)\r
- if(hiddenSequences[i] !=null )\r
- count ++;\r
+ for (int i = 0; i < hiddenSequences.length; i++)\r
+ {\r
+ if (hiddenSequences[i] != null)\r
+ {\r
+ count++;\r
+ }\r
+ }\r
\r
return count;\r
}\r
{\r
int width = 0;\r
for (int i = 0; i < hiddenSequences.length; i++)\r
- if (hiddenSequences[i] != null && hiddenSequences[i].getLength()>width)\r
+ {\r
+ if (hiddenSequences[i] != null && hiddenSequences[i].getLength() > width)\r
+ {\r
width = hiddenSequences[i].getLength();\r
+ }\r
+ }\r
\r
return width;\r
}\r
*/\r
public void adjustHeightSequenceDeleted(int seqIndex)\r
{\r
- if(hiddenSequences==null)\r
+ if (hiddenSequences == null)\r
{\r
return;\r
}\r
\r
int alHeight = alignment.getHeight();\r
\r
- SequenceI [] tmp = new SequenceI [alHeight + getSize()];\r
+ SequenceI[] tmp = new SequenceI[alHeight + getSize()];\r
int deletionIndex = adjustForHiddenSeqs(seqIndex);\r
\r
for (int i = 0; i < hiddenSequences.length; i++)\r
{\r
- if(hiddenSequences[i]==null)\r
+ if (hiddenSequences[i] == null)\r
+ {\r
continue;\r
+ }\r
\r
if (i > deletionIndex)\r
- tmp[i-1] = hiddenSequences[i];\r
+ {\r
+ tmp[i - 1] = hiddenSequences[i];\r
+ }\r
else\r
- tmp[i] = hiddenSequences[i];\r
+ {\r
+ tmp[i] = hiddenSequences[i];\r
+ }\r
}\r
\r
- hiddenSequences = tmp;\r
+ hiddenSequences = tmp;\r
\r
}\r
\r
*/\r
public void adjustHeightSequenceAdded()\r
{\r
- if(hiddenSequences==null)\r
+ if (hiddenSequences == null)\r
{\r
return;\r
}\r
\r
int alHeight = alignment.getHeight();\r
\r
- SequenceI [] tmp = new SequenceI [alHeight + getSize()];\r
- System.arraycopy(hiddenSequences,0,tmp,0,hiddenSequences.length);\r
+ SequenceI[] tmp = new SequenceI[alHeight + getSize()];\r
+ System.arraycopy(hiddenSequences, 0, tmp, 0, hiddenSequences.length);\r
hiddenSequences = tmp;\r
}\r
\r
-\r
public void hideSequence(SequenceI sequence)\r
{\r
- if(hiddenSequences==null)\r
+ if (hiddenSequences == null)\r
+ {\r
hiddenSequences = new SequenceI[alignment.getHeight()];\r
+ }\r
\r
int alignmentIndex = alignment.findIndex(sequence);\r
alignmentIndex = adjustForHiddenSeqs(alignmentIndex);\r
\r
- if(hiddenSequences[alignmentIndex]!=null)\r
+ if (hiddenSequences[alignmentIndex] != null)\r
+ {\r
System.out.println("ERROR!!!!!!!!!!!");\r
+ }\r
\r
hiddenSequences[alignmentIndex] = sequence;\r
\r
alignment.deleteSequence(sequence);\r
}\r
\r
- public Vector showAll()\r
+ public Vector showAll(Hashtable hiddenReps)\r
{\r
- Vector revealedSeqs = new Vector();\r
- for(int i=0; i<hiddenSequences.length; i++)\r
+ Vector revealedSeqs = new Vector();\r
+ for (int i = 0; i < hiddenSequences.length; i++)\r
{\r
- if(hiddenSequences[i]!=null)\r
+ if (hiddenSequences[i] != null)\r
{\r
- Vector tmp = showSequence(i);\r
+ Vector tmp = showSequence(i, hiddenReps);\r
for (int t = 0; t < tmp.size(); t++)\r
+ {\r
revealedSeqs.addElement(tmp.elementAt(t));\r
+ }\r
}\r
}\r
return revealedSeqs;\r
}\r
\r
- public Vector showSequence(int alignmentIndex)\r
+ public Vector showSequence(int alignmentIndex, Hashtable hiddenReps)\r
{\r
Vector revealedSeqs = new Vector();\r
SequenceI repSequence = alignment.getSequenceAt(alignmentIndex);\r
- if(repSequence!=null\r
- && repSequence.getHiddenSequences()==null\r
- && alignmentIndex>0)\r
- repSequence = alignment.getSequenceAt(alignmentIndex-1);\r
-\r
- if(repSequence!=null\r
- && repSequence.getHiddenSequences()==null)\r
- repSequence = null;\r
+ if (repSequence != null &&\r
+ hiddenReps != null\r
+ && hiddenReps.containsKey(repSequence))\r
+ {\r
+ hiddenReps.remove(repSequence);\r
+ revealedSeqs.addElement(repSequence);\r
+ }\r
\r
- int start = adjustForHiddenSeqs(alignmentIndex-1);\r
+ int start = adjustForHiddenSeqs(alignmentIndex - 1);\r
int end = adjustForHiddenSeqs(alignmentIndex);\r
- if(end>=hiddenSequences.length)\r
- end = hiddenSequences.length-1;\r
+ if (end >= hiddenSequences.length)\r
+ {\r
+ end = hiddenSequences.length - 1;\r
+ }\r
\r
- for(int index = end; index > start; index--)\r
+ for (int index = end; index > start; index--)\r
{\r
- SequenceI seq = hiddenSequences[index];\r
+ SequenceI seq = hiddenSequences[index];\r
hiddenSequences[index] = null;\r
\r
- if(seq!=null)\r
+ if (seq != null)\r
{\r
- if(seq.getLength()>0)\r
- {\r
- revealedSeqs.addElement(seq);\r
- alignment.getSequences().insertElementAt(seq, alignmentIndex);\r
- }\r
- else\r
- System.out.println(seq.getName()+" has been deleted whilst hidden");\r
-\r
- if (repSequence != null)\r
- {\r
- repSequence.showHiddenSequence(seq);\r
- }\r
+ if (seq.getLength() > 0)\r
+ {\r
+ revealedSeqs.addElement(seq);\r
+ alignment.getSequences().insertElementAt(seq, alignmentIndex);\r
+ }\r
+ else\r
+ {\r
+ System.out.println(seq.getName() + " has been deleted whilst hidden");\r
+ }\r
}\r
\r
}\r
{\r
int index = 0;\r
int hiddenSeqs = 0;\r
- if(hiddenSequences.length<=alignmentIndex)\r
- alignmentIndex = hiddenSequences.length-1;\r
+ if (hiddenSequences.length <= alignmentIndex)\r
+ {\r
+ alignmentIndex = hiddenSequences.length - 1;\r
+ }\r
\r
- while(index <= alignmentIndex)\r
+ while (index <= alignmentIndex)\r
{\r
- if(hiddenSequences[index]!=null)\r
- {\r
- hiddenSeqs ++;\r
- }\r
- index ++;\r
- };\r
+ if (hiddenSequences[index] != null)\r
+ {\r
+ hiddenSeqs++;\r
+ }\r
+ index++;\r
+ }\r
+ ;\r
\r
- return (alignmentIndex - hiddenSeqs) ;\r
+ return (alignmentIndex - hiddenSeqs);\r
}\r
\r
public int adjustForHiddenSeqs(int alignmentIndex)\r
{\r
int index = 0;\r
int hSize = hiddenSequences.length;\r
- while(index <= alignmentIndex && index<hSize)\r
+ while (index <= alignmentIndex && index < hSize)\r
{\r
- if(hiddenSequences[index]!=null)\r
+ if (hiddenSequences[index] != null)\r
{\r
- alignmentIndex ++;\r
+ alignmentIndex++;\r
}\r
- index ++;\r
- };\r
+ index++;\r
+ }\r
+ ;\r
\r
- return alignmentIndex ;\r
+ return alignmentIndex;\r
}\r
\r
-\r
public AlignmentI getFullAlignment()\r
{\r
int isize = hiddenSequences.length;\r
- SequenceI [] seq = new Sequence[isize];\r
+ SequenceI[] seq = new Sequence[isize];\r
\r
int index = 0;\r
- for(int i=0; i<hiddenSequences.length; i++)\r
+ for (int i = 0; i < hiddenSequences.length; i++)\r
{\r
- if(hiddenSequences[i]!=null)\r
+ if (hiddenSequences[i] != null)\r
+ {\r
seq[i] = hiddenSequences[i];\r
+ }\r
else\r
{\r
seq[i] = alignment.getSequenceAt(index);\r
\r
public boolean isHidden(SequenceI seq)\r
{\r
- for(int i=0; i<hiddenSequences.length; i++)\r
- if(hiddenSequences[i] !=null && hiddenSequences[i]==seq)\r
+ for (int i = 0; i < hiddenSequences.length; i++)\r
+ {\r
+ if (hiddenSequences[i] != null && hiddenSequences[i] == seq)\r
+ {\r
return true;\r
+ }\r
+ }\r
\r
return false;\r
}\r