JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / datamodel / HiddenSequences.js
1 Clazz.declarePackage ("jalview.datamodel");\r
2 Clazz.load (null, "jalview.datamodel.HiddenSequences", ["jalview.datamodel.Alignment", "java.util.ArrayList"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.hiddenSequences = null;\r
5 this.alignment = null;\r
6 Clazz.instantialize (this, arguments);\r
7 }, jalview.datamodel, "HiddenSequences");\r
8 Clazz.makeConstructor (c$, \r
9 function (al) {\r
10 this.alignment = al;\r
11 }, "jalview.datamodel.AlignmentI");\r
12 Clazz.defineMethod (c$, "getSize", \r
13 function () {\r
14 if (this.hiddenSequences == null) {\r
15 return 0;\r
16 }var count = 0;\r
17 for (var i = 0; i < this.hiddenSequences.length; i++) {\r
18 if (this.hiddenSequences[i] != null) {\r
19 count++;\r
20 }}\r
21 return count;\r
22 });\r
23 Clazz.defineMethod (c$, "getWidth", \r
24 function () {\r
25 var width = 0;\r
26 for (var i = 0; i < this.hiddenSequences.length; i++) {\r
27 if (this.hiddenSequences[i] != null && this.hiddenSequences[i].getLength () > width) {\r
28 width = this.hiddenSequences[i].getLength ();\r
29 }}\r
30 return width;\r
31 });\r
32 Clazz.defineMethod (c$, "adjustHeightSequenceDeleted", \r
33 function (seqIndex) {\r
34 if (this.hiddenSequences == null) {\r
35 return;\r
36 }var alHeight = this.alignment.getHeight ();\r
37 var tmp =  new Array (alHeight + this.getSize ());\r
38 var deletionIndex = this.adjustForHiddenSeqs (seqIndex);\r
39 for (var i = 0; i < this.hiddenSequences.length; i++) {\r
40 if (this.hiddenSequences[i] == null) {\r
41 continue;\r
42 }if (i > deletionIndex) {\r
43 tmp[i - 1] = this.hiddenSequences[i];\r
44 } else {\r
45 tmp[i] = this.hiddenSequences[i];\r
46 }}\r
47 this.hiddenSequences = tmp;\r
48 }, "~N");\r
49 Clazz.defineMethod (c$, "adjustHeightSequenceAdded", \r
50 function () {\r
51 if (this.hiddenSequences == null) {\r
52 return;\r
53 }var alHeight = this.alignment.getHeight ();\r
54 var tmp =  new Array (alHeight + this.getSize ());\r
55 System.arraycopy (this.hiddenSequences, 0, tmp, 0, this.hiddenSequences.length);\r
56 this.hiddenSequences = tmp;\r
57 });\r
58 Clazz.defineMethod (c$, "hideSequence", \r
59 function (sequence) {\r
60 if (this.hiddenSequences == null) {\r
61 this.hiddenSequences =  new Array (this.alignment.getHeight ());\r
62 }var alignmentIndex = this.alignment.findIndex (sequence);\r
63 alignmentIndex = this.adjustForHiddenSeqs (alignmentIndex);\r
64 if (this.hiddenSequences[alignmentIndex] != null) {\r
65 System.out.println ("ERROR!!!!!!!!!!!");\r
66 }this.hiddenSequences[alignmentIndex] = sequence;\r
67 this.alignment.deleteSequence (sequence);\r
68 }, "jalview.datamodel.SequenceI");\r
69 Clazz.defineMethod (c$, "showAll", \r
70 function (hiddenRepSequences) {\r
71 var revealedSeqs =  new java.util.ArrayList ();\r
72 for (var i = 0; i < this.hiddenSequences.length; i++) {\r
73 if (this.hiddenSequences[i] != null) {\r
74 var tmp = this.showSequence (i, hiddenRepSequences);\r
75 for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {\r
76 revealedSeqs.add (seq);\r
77 }\r
78 }}\r
79 return revealedSeqs;\r
80 }, "java.util.Map");\r
81 Clazz.defineMethod (c$, "showSequence", \r
82 function (alignmentIndex, hiddenRepSequences) {\r
83 var revealedSeqs =  new java.util.ArrayList ();\r
84 var repSequence = this.alignment.getSequenceAt (alignmentIndex);\r
85 if (repSequence != null && hiddenRepSequences != null && hiddenRepSequences.containsKey (repSequence)) {\r
86 hiddenRepSequences.remove (repSequence);\r
87 revealedSeqs.add (repSequence);\r
88 }var start = this.adjustForHiddenSeqs (alignmentIndex - 1);\r
89 var end = this.adjustForHiddenSeqs (alignmentIndex);\r
90 if (end >= this.hiddenSequences.length) {\r
91 end = this.hiddenSequences.length - 1;\r
92 }var asequences;\r
93 {\r
94 for (var index = end; index > start; index--) {\r
95 var seq = this.hiddenSequences[index];\r
96 this.hiddenSequences[index] = null;\r
97 if (seq != null) {\r
98 if (seq.getLength () > 0) {\r
99 revealedSeqs.add (seq);\r
100 asequences.add (alignmentIndex, seq);\r
101 } else {\r
102 System.out.println (seq.getName () + " has been deleted whilst hidden");\r
103 }}}\r
104 }return revealedSeqs;\r
105 }, "~N,java.util.Map");\r
106 Clazz.defineMethod (c$, "getHiddenSequence", \r
107 function (alignmentIndex) {\r
108 return this.hiddenSequences[alignmentIndex];\r
109 }, "~N");\r
110 Clazz.defineMethod (c$, "findIndexWithoutHiddenSeqs", \r
111 function (alignmentIndex) {\r
112 var index = 0;\r
113 var hiddenSeqs = 0;\r
114 if (this.hiddenSequences.length <= alignmentIndex) {\r
115 alignmentIndex = this.hiddenSequences.length - 1;\r
116 }while (index <= alignmentIndex) {\r
117 if (this.hiddenSequences[index] != null) {\r
118 hiddenSeqs++;\r
119 }index++;\r
120 }\r
121 ;return (alignmentIndex - hiddenSeqs);\r
122 }, "~N");\r
123 Clazz.defineMethod (c$, "adjustForHiddenSeqs", \r
124 function (alignmentIndex) {\r
125 var index = 0;\r
126 var hSize = this.hiddenSequences.length;\r
127 while (index <= alignmentIndex && index < hSize) {\r
128 if (this.hiddenSequences[index] != null) {\r
129 alignmentIndex++;\r
130 }index++;\r
131 }\r
132 ;return alignmentIndex;\r
133 }, "~N");\r
134 Clazz.defineMethod (c$, "getFullAlignment", \r
135 function () {\r
136 var isize = this.hiddenSequences.length;\r
137 var seq =  new Array (isize);\r
138 var index = 0;\r
139 for (var i = 0; i < this.hiddenSequences.length; i++) {\r
140 if (this.hiddenSequences[i] != null) {\r
141 seq[i] = this.hiddenSequences[i];\r
142 } else {\r
143 seq[i] = this.alignment.getSequenceAt (index);\r
144 index++;\r
145 }}\r
146 var fAlignmt =  new jalview.datamodel.Alignment (seq);\r
147 fAlignmt.annotations = this.alignment.getAlignmentAnnotation ();\r
148 fAlignmt.alignmentProperties = this.alignment.getProperties ();\r
149 fAlignmt.groups = this.alignment.getGroups ();\r
150 fAlignmt.$hasRNAStructure = this.alignment.hasRNAStructure ();\r
151 return fAlignmt;\r
152 });\r
153 Clazz.defineMethod (c$, "isHidden", \r
154 function (seq) {\r
155 if (this.hiddenSequences != null) {\r
156 for (var i = 0; i < this.hiddenSequences.length; i++) {\r
157 if (this.hiddenSequences[i] != null && this.hiddenSequences[i] === seq) {\r
158 return true;\r
159 }}\r
160 }return false;\r
161 }, "jalview.datamodel.SequenceI");\r
162 });\r