X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fjavascript%2FJsSelectionSender.java;h=d94836342755f6be15d49843bd4496b79ea670d9;hb=b97119fa4abbda0ef3d8e6e36f4634a06d79d411;hp=8b2ba2cb6ea9dc27535f6e6589f863776f8efe88;hpb=25ef96b8920057588effd6ccff12a256d957e762;p=jalview.git diff --git a/src/jalview/javascript/JsSelectionSender.java b/src/jalview/javascript/JsSelectionSender.java index 8b2ba2c..d948363 100644 --- a/src/jalview/javascript/JsSelectionSender.java +++ b/src/jalview/javascript/JsSelectionSender.java @@ -1,8 +1,6 @@ package jalview.javascript; -import java.util.ArrayList; -import java.util.Enumeration; - +import java.net.URL; import jalview.appletgui.AlignFrame; import jalview.appletgui.AlignViewport; import jalview.bin.JalviewLite; @@ -11,10 +9,9 @@ import jalview.datamodel.SequenceGroup; import jalview.structure.SelectionSource; import netscape.javascript.JSObject; -public class JsSelectionSender implements +public class JsSelectionSender extends JSFunctionExec implements jalview.structure.SelectionListener, JsCallBack { - JalviewLite jvlite; AlignFrame _af; @@ -23,7 +20,7 @@ public class JsSelectionSender implements public JsSelectionSender(JalviewLite jvlite, AlignFrame af, String listener) { - this.jvlite = jvlite; + super(jvlite); _af = af; _listener = listener; } @@ -52,6 +49,8 @@ public class JsSelectionSender implements .getSequenceSetId()); for (int a = 0; a < aps.length; a++) { + System.out.println("Selection: testing source alignPanel : " + + aps[a].getName()); if (aps[a].av == source) { src = aps[a].alignFrame; @@ -64,12 +63,12 @@ public class JsSelectionSender implements System.err.println("Unhandled selection source !"); return; } - JSObject jsoWindow = JSObject.getWindow(jvlite); String[] seqs = new String[] {}; String[] cols = new String[] {}; - int strt = 0, end = src.alignPanel.av.getAlignment().getWidth(); + int strt = 0, end = (src == null) ? -1 : src.alignPanel.av + .getAlignment().getWidth(); if (seqsel != null && seqsel.getSize() > 0) { seqs = new String[seqsel.getSize()]; @@ -81,18 +80,24 @@ public class JsSelectionSender implements { strt = seqsel.getStartRes(); } - if (end > seqsel.getEndRes()) + if (end==-1 || end > seqsel.getEndRes()) { end = seqsel.getEndRes(); } } if (colsel != null && colsel.size() > 0) { + if (end == -1) + { + end = colsel.getMax() + 1; + } cols = new String[colsel.getSelected().size()]; int d = 0, r = -1; for (int i = 0; i < cols.length; i++) { - cols[i] = ""+(1+((Integer)colsel.getSelected().elementAt(i)).intValue()); + cols[i] = "" + + (1 + ((Integer) colsel.getSelected().elementAt(i)) + .intValue()); } } else @@ -107,26 +112,27 @@ public class JsSelectionSender implements } System.err.println("Relaying selection to jsfunction:" + _listener); - jsoWindow.call( - _listener, - new Object[] - { src, setid, jvlite.arrayToSeparatorList(seqs), - jvlite.arrayToSeparatorList(cols) }); + executeJavascriptFunction( _listener, + new Object[] + { src, setid, jvlite.arrayToSeparatorList(seqs), + jvlite.arrayToSeparatorList(cols) }); } catch (Exception ex) { System.err .println("Jalview Javascript exec error: Couldn't send selection message using function '" + _listener + "'"); + ex.printStackTrace(); if (ex instanceof netscape.javascript.JSException) { - System.err.println("Javascript Exception: "+((netscape.javascript.JSException)ex).getMessage()); + System.err.println("Javascript Exception: " + + ((netscape.javascript.JSException) ex).getCause() + .toString()); } - else { - ex.printStackTrace(); - }; + } } + @Override public AlignFrame getAlignFrame() {