JAL-1807 includes ?j2sdebug flag and DebugJS._(msg)
[jalviewjs.git] / bin / jalview / javascript / JsSelectionSender.js
1 Clazz.declarePackage ("jalview.javascript");
2 Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.SelectionListener"], "jalview.javascript.JsSelectionSender", ["jalview.appletgui.AlignViewport", "netscape.javascript.JSException"], function () {
3 c$ = Clazz.decorateAsClass (function () {
4 this._af = null;
5 this._listener = null;
6 Clazz.instantialize (this, arguments);
7 }, jalview.javascript, "JsSelectionSender", jalview.javascript.JSFunctionExec, [jalview.structure.SelectionListener, jalview.javascript.JsCallBack]);
8 Clazz.makeConstructor (c$, 
9 function (jvlite, af, listener) {
10 Clazz.superConstructor (this, jalview.javascript.JsSelectionSender, [jvlite]);
11 this._af = af;
12 this._listener = listener;
13 }, "jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");
14 Clazz.overrideMethod (c$, "selection", 
15 function (seqsel, colsel, source) {
16 try {
17 var setid = "";
18 var viewid = "";
19 var src = this._af;
20 if (source != null) {
21 if (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).applet.currentAlignFrame.viewport === source) {
22 src = (source).applet.currentAlignFrame;
23 }}var seqs =  Clazz.newArray (-1, []);
24 var cols =  Clazz.newArray (-1, []);
25 var strt = 0;
26 var end = (src == null) ? -1 : src.alignPanel.av.getAlignment ().getWidth ();
27 if (seqsel != null && seqsel.getSize () > 0) {
28 seqs =  new Array (seqsel.getSize ());
29 for (var i = 0; i < seqs.length; i++) {
30 seqs[i] = seqsel.getSequenceAt (i).getName ();
31 }
32 if (strt < seqsel.getStartRes ()) {
33 strt = seqsel.getStartRes ();
34 }if (end == -1 || end > seqsel.getEndRes ()) {
35 end = seqsel.getEndRes ();
36 }}if (colsel != null && colsel.size () > 0) {
37 if (end == -1) {
38 end = colsel.getMax () + 1;
39 }cols =  new Array (colsel.getSelected ().size ());
40 var d = 0;
41 var r = -1;
42 for (var i = 0; i < cols.length; i++) {
43 cols[i] = "" + (1 + colsel.getSelected ().elementAt (i).intValue ());
44 }
45 } else {
46 if (seqsel != null && seqsel.getSize () > 0) {
47 cols =  new Array (2);
48 cols[0] = "" + (1 + strt) + "-" + (1 + end);
49 };}System.err.println ("Relaying selection to jsfunction:" + this._listener);
50 this.executeJavascriptFunction (this._listener,  Clazz.newArray (-1, [src, setid, this.jvlite.arrayToSeparatorList (seqs), this.jvlite.arrayToSeparatorList (cols)]));
51 } catch (ex) {
52 if (Clazz.exceptionOf (ex, Exception)) {
53 System.err.println ("Jalview Javascript exec error: Couldn't send selection message using function '" + this._listener + "'");
54 ex.printStackTrace ();
55 if (Clazz.instanceOf (ex, netscape.javascript.JSException)) {
56 System.err.println ("Javascript Exception: " + (ex).getCause ().toString ());
57 }} else {
58 throw ex;
59 }
60 }
61 }, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
62 Clazz.overrideMethod (c$, "getAlignFrame", 
63 function () {
64 return this._af;
65 });
66 Clazz.overrideMethod (c$, "getListenerFunction", 
67 function () {
68 return this._listener;
69 });
70 });