X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=site%2Fj2s%2Fjalview%2Fjavascript%2FJsSelectionSender.js;fp=site%2Fj2s%2Fjalview%2Fjavascript%2FJsSelectionSender.js;h=36703c535e8041c451e14d5c56f860c75d614108;hb=4231d40261fef32ce4570a6bbad0d35df44e8baf;hp=0000000000000000000000000000000000000000;hpb=c07eb2c5794833bd0241000d6844d783fe10cb82;p=jalview.git diff --git a/site/j2s/jalview/javascript/JsSelectionSender.js b/site/j2s/jalview/javascript/JsSelectionSender.js new file mode 100644 index 0000000..36703c5 --- /dev/null +++ b/site/j2s/jalview/javascript/JsSelectionSender.js @@ -0,0 +1,70 @@ +Clazz.declarePackage ("jalview.javascript"); +Clazz.load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.SelectionListener"], "jalview.javascript.JsSelectionSender", ["jalview.appletgui.AlignViewport", "netscape.javascript.JSException"], function () { +c$ = Clazz.decorateAsClass (function () { +this._af = null; +this._listener = null; +Clazz.instantialize (this, arguments); +}, jalview.javascript, "JsSelectionSender", jalview.javascript.JSFunctionExec, [jalview.structure.SelectionListener, jalview.javascript.JsCallBack]); +Clazz.makeConstructor (c$, +function (jvlite, af, listener) { +Clazz.superConstructor (this, jalview.javascript.JsSelectionSender, [jvlite]); +this._af = af; +this._listener = listener; +}, "jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S"); +Clazz.overrideMethod (c$, "selection", +function (seqsel, colsel, source) { +try { +var setid = ""; +var viewid = ""; +var src = this._af; +if (source != null) { +if (Clazz.instanceOf (source, jalview.appletgui.AlignViewport) && (source).applet.currentAlignFrame.viewport === source) { +src = (source).applet.currentAlignFrame; +}}var seqs = Clazz.newArray (-1, []); +var cols = Clazz.newArray (-1, []); +var strt = 0; +var end = (src == null) ? -1 : src.alignPanel.av.getAlignment ().getWidth (); +if (seqsel != null && seqsel.getSize () > 0) { +seqs = new Array (seqsel.getSize ()); +for (var i = 0; i < seqs.length; i++) { +seqs[i] = seqsel.getSequenceAt (i).getName (); +} +if (strt < seqsel.getStartRes ()) { +strt = seqsel.getStartRes (); +}if (end == -1 || end > seqsel.getEndRes ()) { +end = seqsel.getEndRes (); +}}if (colsel != null && colsel.size () > 0) { +if (end == -1) { +end = colsel.getMax () + 1; +}cols = new Array (colsel.getSelected ().size ()); +var d = 0; +var r = -1; +for (var i = 0; i < cols.length; i++) { +cols[i] = "" + (1 + colsel.getSelected ().elementAt (i).intValue ()); +} +} else { +if (seqsel != null && seqsel.getSize () > 0) { +cols = new Array (2); +cols[0] = "" + (1 + strt) + "-" + (1 + end); +};}System.err.println ("Relaying selection to jsfunction:" + this._listener); +this.executeJavascriptFunction (this._listener, Clazz.newArray (-1, [src, setid, this.jvlite.arrayToSeparatorList (seqs), this.jvlite.arrayToSeparatorList (cols)])); +} catch (ex) { +if (Clazz.exceptionOf (ex, Exception)) { +System.err.println ("Jalview Javascript exec error: Couldn't send selection message using function '" + this._listener + "'"); +ex.printStackTrace (); +if (Clazz.instanceOf (ex, netscape.javascript.JSException)) { +System.err.println ("Javascript Exception: " + (ex).getCause ().toString ()); +}} else { +throw ex; +} +} +}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource"); +Clazz.overrideMethod (c$, "getAlignFrame", +function () { +return this._af; +}); +Clazz.overrideMethod (c$, "getListenerFunction", +function () { +return this._listener; +}); +});