1 Clazz.declarePackage ("jalview.javascript");
\r
2 Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.SelectionListener"], "jalview.javascript.JsSelectionSender", ["jalview.appletgui.AlignViewport", "netscape.javascript.JSException"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
5 this._listener = null;
\r
6 Clazz.instantialize (this, arguments);
\r
7 }, jalview.javascript, "JsSelectionSender", jalview.javascript.JSFunctionExec, [jalview.structure.SelectionListener, jalview.javascript.JsCallBack]);
\r
8 Clazz.makeConstructor (c$,
\r
9 function (jvlite, af, listener) {
\r
10 Clazz.superConstructor (this, jalview.javascript.JsSelectionSender, [jvlite]);
\r
12 this._listener = listener;
\r
13 }, "jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");
\r
14 Clazz.overrideMethod (c$, "selection",
\r
15 function (seqsel, colsel, source) {
\r
20 if (source != null) {
\r
21 if (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).applet.currentAlignFrame.viewport === source) {
\r
22 src = (source).applet.currentAlignFrame;
\r
23 }}var seqs = Clazz.newArray (-1, []);
\r
24 var cols = Clazz.newArray (-1, []);
\r
26 var end = (src == null) ? -1 : src.alignPanel.av.getAlignment ().getWidth ();
\r
27 if (seqsel != null && seqsel.getSize () > 0) {
\r
28 seqs = new Array (seqsel.getSize ());
\r
29 for (var i = 0; i < seqs.length; i++) {
\r
30 seqs[i] = seqsel.getSequenceAt (i).getName ();
\r
32 if (strt < seqsel.getStartRes ()) {
\r
33 strt = seqsel.getStartRes ();
\r
34 }if (end == -1 || end > seqsel.getEndRes ()) {
\r
35 end = seqsel.getEndRes ();
\r
36 }}if (colsel != null && colsel.size () > 0) {
\r
38 end = colsel.getMax () + 1;
\r
39 }cols = new Array (colsel.getSelected ().size ());
\r
42 for (var i = 0; i < cols.length; i++) {
\r
43 cols[i] = "" + (1 + colsel.getSelected ().elementAt (i).intValue ());
\r
46 if (seqsel != null && seqsel.getSize () > 0) {
\r
47 cols = new Array (2);
\r
48 cols[0] = "" + (1 + strt) + "-" + (1 + end);
\r
49 };}System.err.println ("Relaying selection to jsfunction:" + this._listener);
\r
50 this.executeJavascriptFunction (this._listener, Clazz.newArray (-1, [src, setid, this.jvlite.arrayToSeparatorList (seqs), this.jvlite.arrayToSeparatorList (cols)]));
\r
52 if (Clazz.exceptionOf (ex, Exception)) {
\r
53 System.err.println ("Jalview Javascript exec error: Couldn't send selection message using function '" + this._listener + "'");
\r
54 ex.printStackTrace ();
\r
55 if (Clazz.instanceOf (ex, netscape.javascript.JSException)) {
\r
56 System.err.println ("Javascript Exception: " + (ex).getCause ().toString ());
\r
61 }, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
\r
62 Clazz.overrideMethod (c$, "getAlignFrame",
\r
66 Clazz.overrideMethod (c$, "getListenerFunction",
\r
68 return this._listener;
\r