Merge branch 'master' of https://source.jalview.org/git/jalviewjs.git
[jalviewjs.git] / site / j2s / jalview / datamodel / ColumnSelection.js
1 Clazz.declarePackage ("jalview.datamodel");
2 Clazz.load (["java.util.Vector"], "jalview.datamodel.ColumnSelection", ["jalview.util.ShiftList", "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", "java.lang.StringBuffer", "java.util.ArrayList", "$.Collections"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this.selected = null;
5 this.hiddenColumns = null;
6 Clazz.instantialize (this, arguments);
7 }, jalview.datamodel, "ColumnSelection");
8 Clazz.prepareFields (c$, function () {
9 this.selected =  new java.util.Vector ();
10 });
11 Clazz.defineMethod (c$, "addElement", 
12 function (col) {
13 var column =  new Integer (col);
14 if (!this.selected.contains (column)) {
15 this.selected.addElement (column);
16 }}, "~N");
17 Clazz.defineMethod (c$, "clear", 
18 function () {
19 this.selected.removeAllElements ();
20 });
21 Clazz.defineMethod (c$, "removeElement", 
22 function (col) {
23 var colInt =  new Integer (col);
24 if (this.selected.contains (colInt)) {
25 this.selected.removeElement (colInt);
26 }}, "~N");
27 Clazz.defineMethod (c$, "removeElements", 
28 function (start, end) {
29 var colInt;
30 for (var i = start; i < end; i++) {
31 colInt =  new Integer (i);
32 if (this.selected.contains (colInt)) {
33 this.selected.removeElement (colInt);
34 }}
35 }, "~N,~N");
36 Clazz.defineMethod (c$, "getSelected", 
37 function () {
38 return this.selected;
39 });
40 Clazz.defineMethod (c$, "contains", 
41 function (col) {
42 return this.selected.contains ( new Integer (col));
43 }, "~N");
44 Clazz.defineMethod (c$, "columnAt", 
45 function (i) {
46 return this.selected.elementAt (i).intValue ();
47 }, "~N");
48 Clazz.defineMethod (c$, "size", 
49 function () {
50 return this.selected.size ();
51 });
52 Clazz.defineMethod (c$, "getMax", 
53 function () {
54 var max = -1;
55 for (var i = 0; i < this.selected.size (); i++) {
56 if (this.columnAt (i) > max) {
57 max = this.columnAt (i);
58 }}
59 return max;
60 });
61 Clazz.defineMethod (c$, "getMin", 
62 function () {
63 var min = 1000000000;
64 for (var i = 0; i < this.selected.size (); i++) {
65 if (this.columnAt (i) < min) {
66 min = this.columnAt (i);
67 }}
68 return min;
69 });
70 Clazz.defineMethod (c$, "compensateForEdit", 
71 function (start, change) {
72 var deletedHiddenColumns = null;
73 for (var i = 0; i < this.size (); i++) {
74 var temp = this.columnAt (i);
75 if (temp >= start) {
76 this.selected.setElementAt ( new Integer (temp - change), i);
77 }}
78 if (this.hiddenColumns != null) {
79 deletedHiddenColumns =  new java.util.ArrayList ();
80 var hSize = this.hiddenColumns.size ();
81 for (var i = 0; i < hSize; i++) {
82 var region = this.hiddenColumns.elementAt (i);
83 if (region[0] > start && start + change > region[1]) {
84 deletedHiddenColumns.add (region);
85 this.hiddenColumns.removeElementAt (i);
86 i--;
87 hSize--;
88 continue;
89 }if (region[0] > start) {
90 region[0] -= change;
91 region[1] -= change;
92 }if (region[0] < 0) {
93 region[0] = 0;
94 }}
95 this.revealHiddenColumns (0);
96 }return deletedHiddenColumns;
97 }, "~N,~N");
98 Clazz.defineMethod (c$, "compensateForDelEdits", 
99  function (start, change) {
100 for (var i = 0; i < this.size (); i++) {
101 var temp = this.columnAt (i);
102 if (temp >= start) {
103 this.selected.setElementAt ( new Integer (temp - change), i);
104 }}
105 if (this.hiddenColumns != null) {
106 for (var i = 0; i < this.hiddenColumns.size (); i++) {
107 var region = this.hiddenColumns.elementAt (i);
108 if (region[0] >= start) {
109 region[0] -= change;
110 }if (region[1] >= start) {
111 region[1] -= change;
112 }if (region[1] < region[0]) {
113 this.hiddenColumns.removeElementAt (i--);
114 }if (region[0] < 0) {
115 region[0] = 0;
116 }if (region[1] < 0) {
117 region[1] = 0;
118 }}
119 }}, "~N,~N");
120 Clazz.defineMethod (c$, "compensateForEdits", 
121 function (shiftrecord) {
122 if (shiftrecord != null) {
123 var shifts = shiftrecord.getShifts ();
124 if (shifts != null && shifts.size () > 0) {
125 var shifted = 0;
126 for (var i = 0, j = shifts.size (); i < j; i++) {
127 var sh = shifts.get (i);
128 this.compensateForDelEdits (shifted + sh[0], sh[1]);
129 shifted -= sh[1];
130 }
131 }return shiftrecord.getInverse ();
132 }return null;
133 }, "jalview.util.ShiftList");
134 Clazz.defineMethod (c$, "pruneIntervalVector", 
135  function (shifts, intervals) {
136 var pruned = false;
137 var i = 0;
138 var j = intervals.size () - 1;
139 var s = 0;
140 var t = shifts.size () - 1;
141 var hr = intervals.elementAt (i);
142 var sr = shifts.get (s);
143 while (i <= j && s <= t) {
144 var trailinghn = hr[1] >= sr[0];
145 if (!trailinghn) {
146 if (i < j) {
147 hr = intervals.elementAt (++i);
148 } else {
149 i++;
150 }continue;
151 }var endshift = sr[0] + sr[1];
152 if (endshift < hr[0] || endshift < sr[0]) {
153 if (s < t) {
154 sr = shifts.get (++s);
155 } else {
156 s++;
157 }continue;
158 }var leadinghn = hr[0] >= sr[0];
159 var leadinghc = hr[0] < endshift;
160 var trailinghc = hr[1] < endshift;
161 if (leadinghn) {
162 if (trailinghc) {
163 intervals.removeElementAt (i);
164 pruned = true;
165 j--;
166 if (i <= j) {
167 hr = intervals.elementAt (i);
168 }continue;
169 }if (leadinghc) {
170 hr[0] = endshift;
171 leadinghn = !leadinghn;
172 pruned = true;
173 }}if (!leadinghn) {
174 if (trailinghc) {
175 if (trailinghn) {
176 hr[1] = sr[0] - 1;
177 pruned = true;
178 }} else {
179 if (s < t) {
180 sr = shifts.get (++s);
181 } else {
182 s++;
183 }continue;
184 }}}
185 return pruned;
186 }, "java.util.List,java.util.Vector");
187 Clazz.defineMethod (c$, "pruneColumnList", 
188  function (shifts, list) {
189 var s = 0;
190 var t = shifts.size ();
191 var sr = shifts.get (s++);
192 var pruned = false;
193 var i = 0;
194 var j = list.size ();
195 while (i < j && s <= t) {
196 var c = list.elementAt (i++).intValue ();
197 if (sr[0] <= c) {
198 if (sr[1] + sr[0] >= c) {
199 list.removeElementAt (--i);
200 j--;
201 } else {
202 if (s < t) {
203 sr = shifts.get (s);
204 }s++;
205 }}}
206 return pruned;
207 }, "java.util.List,java.util.Vector");
208 Clazz.defineMethod (c$, "pruneDeletions", 
209 function (deletions) {
210 if (deletions != null) {
211 var shifts = deletions.getShifts ();
212 if (shifts != null && shifts.size () > 0) {
213 if (this.hiddenColumns != null) {
214 this.pruneIntervalVector (shifts, this.hiddenColumns);
215 if (this.hiddenColumns != null && this.hiddenColumns.size () == 0) {
216 this.hiddenColumns = null;
217 }}if (this.selected != null && this.selected.size () > 0) {
218 this.pruneColumnList (shifts, this.selected);
219 if (this.selected != null && this.selected.size () == 0) {
220 this.selected = null;
221 }}this.compensateForEdits (deletions);
222 }}}, "jalview.util.ShiftList");
223 Clazz.defineMethod (c$, "getHiddenColumns", 
224 function () {
225 return this.hiddenColumns == null ? java.util.Collections.emptyList () : this.hiddenColumns;
226 });
227 Clazz.defineMethod (c$, "adjustForHiddenColumns", 
228 function (column) {
229 var result = column;
230 if (this.hiddenColumns != null) {
231 for (var i = 0; i < this.hiddenColumns.size (); i++) {
232 var region = this.hiddenColumns.elementAt (i);
233 if (result >= region[0]) {
234 result += region[1] - region[0] + 1;
235 }}
236 }return result;
237 }, "~N");
238 Clazz.defineMethod (c$, "findColumnPosition", 
239 function (hiddenColumn) {
240 var result = hiddenColumn;
241 if (this.hiddenColumns != null) {
242 var index = 0;
243 var region;
244 do {
245 region = this.hiddenColumns.elementAt (index++);
246 if (hiddenColumn > region[1]) {
247 result -= region[1] + 1 - region[0];
248 }} while ((hiddenColumn > region[1]) && (index < this.hiddenColumns.size ()));
249 if (hiddenColumn > region[0] && hiddenColumn < region[1]) {
250 return region[0] + hiddenColumn - result;
251 }}return result;
252 }, "~N");
253 Clazz.defineMethod (c$, "findHiddenRegionPosition", 
254 function (hiddenRegion) {
255 var result = 0;
256 if (this.hiddenColumns != null) {
257 var index = 0;
258 var gaps = 0;
259 do {
260 var region = this.hiddenColumns.elementAt (index);
261 if (hiddenRegion == 0) {
262 return region[0];
263 }gaps += region[1] + 1 - region[0];
264 result = region[1] + 1;
265 index++;
266 } while (index < hiddenRegion + 1);
267 result -= gaps;
268 }return result;
269 }, "~N");
270 Clazz.defineMethod (c$, "getHiddenBoundaryRight", 
271 function (alPos) {
272 if (this.hiddenColumns != null) {
273 var index = 0;
274 do {
275 var region = this.hiddenColumns.elementAt (index);
276 if (alPos < region[0]) {
277 return region[0];
278 }index++;
279 } while (index < this.hiddenColumns.size ());
280 }return alPos;
281 }, "~N");
282 Clazz.defineMethod (c$, "getHiddenBoundaryLeft", 
283 function (alPos) {
284 if (this.hiddenColumns != null) {
285 var index = this.hiddenColumns.size () - 1;
286 do {
287 var region = this.hiddenColumns.elementAt (index);
288 if (alPos > region[1]) {
289 return region[1];
290 }index--;
291 } while (index > -1);
292 }return alPos;
293 }, "~N");
294 Clazz.defineMethod (c$, "hideSelectedColumns", 
295 function () {
296 while (this.size () > 0) {
297 var column = this.getSelected ().firstElement ().intValue ();
298 this.hideColumns (column);
299 }
300 });
301 Clazz.defineMethod (c$, "hideColumns", 
302 function (start, end) {
303 if (this.hiddenColumns == null) {
304 this.hiddenColumns =  new java.util.Vector ();
305 }var added = false;
306 var overlap = false;
307 for (var i = 0; i < this.hiddenColumns.size (); i++) {
308 var region = this.hiddenColumns.elementAt (i);
309 if (start <= region[1] && end >= region[0]) {
310 this.hiddenColumns.removeElementAt (i);
311 overlap = true;
312 break;
313 } else if (end < region[0] && start < region[0]) {
314 this.hiddenColumns.insertElementAt ( Clazz.newIntArray (-1, [start, end]), i);
315 added = true;
316 break;
317 }}
318 if (overlap) {
319 this.hideColumns (start, end);
320 } else if (!added) {
321 this.hiddenColumns.addElement ( Clazz.newIntArray (-1, [start, end]));
322 }}, "~N,~N");
323 Clazz.defineMethod (c$, "hideColumns", 
324 function (col) {
325 var min = col;
326 var max = col + 1;
327 while (this.contains (min)) {
328 this.removeElement (min);
329 min--;
330 }
331 while (this.contains (max)) {
332 this.removeElement (max);
333 max++;
334 }
335 min++;
336 max--;
337 if (min > max) {
338 min = max;
339 }this.hideColumns (min, max);
340 }, "~N");
341 Clazz.defineMethod (c$, "revealAllHiddenColumns", 
342 function () {
343 if (this.hiddenColumns != null) {
344 for (var i = 0; i < this.hiddenColumns.size (); i++) {
345 var region = this.hiddenColumns.elementAt (i);
346 for (var j = region[0]; j < region[1] + 1; j++) {
347 this.addElement (j);
348 }
349 }
350 }this.hiddenColumns = null;
351 });
352 Clazz.defineMethod (c$, "revealHiddenColumns", 
353 function (res) {
354 for (var i = 0; i < this.hiddenColumns.size (); i++) {
355 var region = this.hiddenColumns.elementAt (i);
356 if (res == region[0]) {
357 for (var j = region[0]; j < region[1] + 1; j++) {
358 this.addElement (j);
359 }
360 this.hiddenColumns.removeElement (region);
361 break;
362 }}
363 if (this.hiddenColumns.size () == 0) {
364 this.hiddenColumns = null;
365 }}, "~N");
366 Clazz.defineMethod (c$, "isVisible", 
367 function (column) {
368 if (this.hiddenColumns != null) {
369 for (var i = 0; i < this.hiddenColumns.size (); i++) {
370 var region = this.hiddenColumns.elementAt (i);
371 if (column >= region[0] && column <= region[1]) {
372 return false;
373 }}
374 }return true;
375 }, "~N");
376 Clazz.makeConstructor (c$, 
377 function (copy) {
378 if (copy != null) {
379 if (copy.selected != null) {
380 this.selected =  new java.util.Vector ();
381 for (var i = 0, j = copy.selected.size (); i < j; i++) {
382 this.selected.addElement (copy.selected.elementAt (i));
383 }
384 }if (copy.hiddenColumns != null) {
385 this.hiddenColumns =  new java.util.Vector (copy.hiddenColumns.size ());
386 for (var i = 0, j = copy.hiddenColumns.size (); i < j; i++) {
387 var rh;
388 var cp;
389 rh = copy.hiddenColumns.elementAt (i);
390 if (rh != null) {
391 cp =  Clazz.newIntArray (rh.length, 0);
392 System.arraycopy (rh, 0, cp, 0, rh.length);
393 this.hiddenColumns.addElement (cp);
394 }}
395 }}}, "jalview.datamodel.ColumnSelection");
396 Clazz.makeConstructor (c$, 
397 function () {
398 });
399 Clazz.defineMethod (c$, "getVisibleSequenceStrings", 
400 function (start, end, seqs) {
401 var i;
402 var iSize = seqs.length;
403 var selection =  new Array (iSize);
404 if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
405 for (i = 0; i < iSize; i++) {
406 var visibleSeq =  new StringBuffer ();
407 var regions = this.getHiddenColumns ();
408 var blockStart = start;
409 var blockEnd = end;
410 var region;
411 var hideStart;
412 var hideEnd;
413 for (var j = 0; j < regions.size (); j++) {
414 region = regions.get (j);
415 hideStart = region[0];
416 hideEnd = region[1];
417 if (hideStart < start) {
418 continue;
419 }blockStart = Math.min (blockStart, hideEnd + 1);
420 blockEnd = Math.min (blockEnd, hideStart);
421 if (blockStart > blockEnd) {
422 break;
423 }visibleSeq.append (seqs[i].getSequence (blockStart, blockEnd));
424 blockStart = hideEnd + 1;
425 blockEnd = end;
426 }
427 if (end > blockStart) {
428 visibleSeq.append (seqs[i].getSequence (blockStart, end));
429 }selection[i] = visibleSeq.toString ();
430 }
431 } else {
432 for (i = 0; i < iSize; i++) {
433 selection[i] = seqs[i].getSequenceAsString (start, end);
434 }
435 }return selection;
436 }, "~N,~N,~A");
437 Clazz.defineMethod (c$, "getVisibleContigs", 
438 function (start, end) {
439 if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
440 var visiblecontigs =  new java.util.ArrayList ();
441 var regions = this.getHiddenColumns ();
442 var vstart = start;
443 var region;
444 var hideStart;
445 var hideEnd;
446 for (var j = 0; vstart < end && j < regions.size (); j++) {
447 region = regions.get (j);
448 hideStart = region[0];
449 hideEnd = region[1];
450 if (hideEnd < vstart) {
451 continue;
452 }if (hideStart > vstart) {
453 visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, hideStart - 1]));
454 }vstart = hideEnd + 1;
455 }
456 if (vstart < end) {
457 visiblecontigs.add ( Clazz.newIntArray (-1, [vstart, end - 1]));
458 }var vcontigs =  Clazz.newIntArray (visiblecontigs.size () * 2, 0);
459 for (var i = 0, j = visiblecontigs.size (); i < j; i++) {
460 var vc = visiblecontigs.get (i);
461 visiblecontigs.set (i, null);
462 vcontigs[i * 2] = vc[0];
463 vcontigs[i * 2 + 1] = vc[1];
464 }
465 visiblecontigs.clear ();
466 return vcontigs;
467 } else {
468 return  Clazz.newIntArray (-1, [start, end - 1]);
469 }}, "~N,~N");
470 Clazz.defineMethod (c$, "makeVisibleAnnotation", 
471 function (alignmentAnnotation) {
472 this.makeVisibleAnnotation (-1, -1, alignmentAnnotation);
473 }, "jalview.datamodel.AlignmentAnnotation");
474 Clazz.defineMethod (c$, "makeVisibleAnnotation", 
475 function (start, end, alignmentAnnotation) {
476 if (alignmentAnnotation.annotations == null) {
477 return;
478 }if (start == end && end == -1) {
479 start = 0;
480 end = alignmentAnnotation.annotations.length;
481 }if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
482 var annels =  new java.util.Vector ();
483 var els = null;
484 var regions = this.getHiddenColumns ();
485 var blockStart = start;
486 var blockEnd = end;
487 var region;
488 var hideStart;
489 var hideEnd;
490 var w = 0;
491 for (var j = 0; j < regions.size (); j++) {
492 region = regions.get (j);
493 hideStart = region[0];
494 hideEnd = region[1];
495 if (hideStart < start) {
496 continue;
497 }blockStart = Math.min (blockStart, hideEnd + 1);
498 blockEnd = Math.min (blockEnd, hideStart);
499 if (blockStart > blockEnd) {
500 break;
501 }annels.addElement (els =  new Array (blockEnd - blockStart));
502 System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
503 w += els.length;
504 blockStart = hideEnd + 1;
505 blockEnd = end;
506 }
507 if (end > blockStart) {
508 annels.addElement (els =  new Array (end - blockStart + 1));
509 if ((els.length + blockStart) <= alignmentAnnotation.annotations.length) {
510 System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
511 } else {
512 System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, (alignmentAnnotation.annotations.length - blockStart));
513 }w += els.length;
514 }if (w == 0) {
515 return;
516 }alignmentAnnotation.annotations =  new Array (w);
517 w = 0;
518 for (var chnk, $chnk = annels.iterator (); $chnk.hasNext () && ((chnk = $chnk.next ()) || true);) {
519 System.arraycopy (chnk, 0, alignmentAnnotation.annotations, w, chnk.length);
520 w += chnk.length;
521 }
522 } else {
523 alignmentAnnotation.restrict (start, end);
524 }}, "~N,~N,jalview.datamodel.AlignmentAnnotation");
525 Clazz.defineMethod (c$, "invertColumnSelection", 
526 function (first, width) {
527 var hasHidden = this.hiddenColumns != null && this.hiddenColumns.size () > 0;
528 for (var i = first; i < width; i++) {
529 if (this.contains (i)) {
530 this.removeElement (i);
531 } else {
532 if (!hasHidden || this.isVisible (i)) {
533 this.addElement (i);
534 }}}
535 }, "~N,~N");
536 Clazz.defineMethod (c$, "addElementsFrom", 
537 function (colsel) {
538 if (colsel != null && colsel.size () > 0) {
539 for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
540 if (this.hiddenColumns != null && this.isVisible (col.intValue ())) {
541 if (!this.selected.contains (col)) {
542 this.selected.addElement (col);
543 }}}
544 }}, "jalview.datamodel.ColumnSelection");
545 Clazz.defineMethod (c$, "setElementsFrom", 
546 function (colsel) {
547 this.selected =  new java.util.Vector ();
548 if (colsel.selected != null && colsel.selected.size () > 0) {
549 if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
550 this.addElementsFrom (colsel);
551 } else {
552 for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
553 this.addElement ((col).intValue ());
554 }
555 }}}, "jalview.datamodel.ColumnSelection");
556 c$.propagateInsertions = Clazz.defineMethod (c$, "propagateInsertions", 
557 function (profileseq, al, input) {
558 var profsqpos = 0;
559 var gc = al.getGapCharacter ();
560 var alandcolsel = input.getAlignmentAndColumnSelection (gc);
561 var nview = alandcolsel[1];
562 var origseq = (alandcolsel[0])[profsqpos];
563 nview.propagateInsertions (profileseq, al, origseq);
564 return nview;
565 }, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentView");
566 Clazz.defineMethod (c$, "propagateInsertions", 
567 function (profileseq, al, origseq) {
568 var gc = al.getGapCharacter ();
569 this.pruneDeletions (jalview.util.ShiftList.parseMap (origseq.gapMap ()));
570 var viscontigs = this.getVisibleContigs (0, profileseq.getLength ());
571 var spos = 0;
572 var offset = 0;
573 for (var v = 0; v < viscontigs.length; v += 2) {
574 if (viscontigs[v] > spos) {
575 var sb =  new StringBuffer ();
576 for (var s = 0, ns = viscontigs[v] - spos; s < ns; s++) {
577 sb.append (gc);
578 }
579 for (var s = 0, ns = al.getHeight (); s < ns; s++) {
580 var sqobj = al.getSequenceAt (s);
581 if (sqobj !== profileseq) {
582 var sq = al.getSequenceAt (s).getSequenceAsString ();
583 if (sq.length <= spos + offset) {
584 var diff = spos + offset - sq.length - 1;
585 if (diff > 0) {
586 sq = sq + sb;
587 while ((diff = spos + offset - sq.length - 1) > 0) {
588 if (diff >= sb.length ()) {
589 sq += sb.toString ();
590 } else {
591 var buf =  Clazz.newCharArray (diff, '\0');
592 sb.getChars (0, diff, buf, 0);
593 sq += buf.toString ();
594 }}
595 }sq += sb.toString ();
596 } else {
597 al.getSequenceAt (s).setSequence (sq.substring (0, spos + offset) + sb.toString () + sq.substring (spos + offset));
598 }}}
599 }spos = viscontigs[v + 1] + 1;
600 }
601 if ((offset + spos) < profileseq.getLength ()) {
602 var sb =  new StringBuffer ();
603 for (var s = 0, ns = profileseq.getLength () - spos - offset; s < ns; s++) {
604 sb.append (gc);
605 }
606 for (var s = 0, ns = al.getHeight (); s < ns; s++) {
607 var sqobj = al.getSequenceAt (s);
608 if (sqobj === profileseq) {
609 continue;
610 }var sq = sqobj.getSequenceAsString ();
611 var diff = origseq.getLength () - sq.length;
612 while (diff > 0) {
613 if (diff >= sb.length ()) {
614 sq += sb.toString ();
615 } else {
616 var buf =  Clazz.newCharArray (diff, '\0');
617 sb.getChars (0, diff, buf, 0);
618 sq += buf.toString ();
619 }diff = origseq.getLength () - sq.length;
620 }
621 }
622 }}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");
623 Clazz.defineMethod (c$, "hasSelectedColumns", 
624 function () {
625 return (this.selected != null && this.selected.size () > 0);
626 });
627 Clazz.defineMethod (c$, "hasHiddenColumns", 
628 function () {
629 return this.hiddenColumns != null && this.hiddenColumns.size () > 0;
630 });
631 Clazz.defineMethod (c$, "hasManyHiddenColumns", 
632 function () {
633 return this.hiddenColumns != null && this.hiddenColumns.size () > 1;
634 });
635 Clazz.defineMethod (c$, "hideInsertionsFor", 
636 function (sr) {
637 var inserts = sr.getInsertions ();
638 for (var r, $r = inserts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
639 this.hideColumns (r[0], r[1]);
640 }
641 }, "jalview.datamodel.SequenceI");
642 Clazz.defineMethod (c$, "filterAnnotations", 
643 function (annotations, filterParams) {
644 this.revealAllHiddenColumns ();
645 this.clear ();
646 var count = 0;
647 do {
648 if (annotations[count] != null) {
649 var itemMatched = false;
650 if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD && annotations[count].value >= filterParams.getThresholdValue ()) {
651 itemMatched = true;
652 }if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD && annotations[count].value <= filterParams.getThresholdValue ()) {
653 itemMatched = true;
654 }if (filterParams.isFilterAlphaHelix () && annotations[count].secondaryStructure == 'H') {
655 itemMatched = true;
656 }if (filterParams.isFilterBetaSheet () && annotations[count].secondaryStructure == 'E') {
657 itemMatched = true;
658 }if (filterParams.isFilterTurn () && annotations[count].secondaryStructure == 'S') {
659 itemMatched = true;
660 }var regexSearchString = filterParams.getRegexString ();
661 if (regexSearchString != null && !filterParams.getRegexSearchFields ().isEmpty ()) {
662 var fields = filterParams.getRegexSearchFields ();
663 try {
664 if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING) && annotations[count].displayCharacter.matches (regexSearchString)) {
665 itemMatched = true;
666 }} catch (pse) {
667 if (Clazz.exceptionOf (pse, java.util.regex.PatternSyntaxException)) {
668 if (annotations[count].displayCharacter.equals (regexSearchString)) {
669 itemMatched = true;
670 }} else {
671 throw pse;
672 }
673 }
674 if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION) && annotations[count].description != null && annotations[count].description.matches (regexSearchString)) {
675 itemMatched = true;
676 }}if (itemMatched) {
677 this.addElement (count);
678 }}count++;
679 } while (count < annotations.length);
680 return false;
681 }, "~A,jalview.viewmodel.annotationfilter.AnnotationFilterParameter");
682 });